矩阵的左乘和右乘有什么区别
flyfish
这里更多的是语言表达的问题,中文资料存在冲突表达的时候,这时候去看英文
读中文为什么会有歧义,因为中文里的"左乘"既可以表示动作的方向,也可以表示位置,就进入了让人绕晕的语言陷阱,先用英文来理解到底是什么,再返回中文。
Left multiplication = pre-multiplication
right multiplication = post-multiplication
R ow operations (行操作) →\rightarrow→ P re-multiplication (前乘/左乘)
C olumn operations (列操作) →\rightarrow→ Post-multiplication (后乘/右乘)
前置知识
初等矩阵 (Elementary Matrix) 就是由 单位矩阵 (Identity Matrix, III) 经过 只有一步 的初等行变换(或列变换)变来的矩阵。
可以把它想象成单位矩阵 III 的变身版。
单位矩阵 III (以 3阶 为例):
I=(100010001) I = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} I= 100010001
初等矩阵的三种变身方式
线性代数中规定了三种初等行变换,对应地,就有三种类型的初等矩阵。只要对 III 做以下任意一个 动作,得到的矩阵就是初等矩阵 EEE。
1. 交换两行 (Interchange)
把单位矩阵的某两行互换位置。
动作: 交换第 1 行和第 2 行。
得到的初等矩阵 EEE:
E=(010100001) E = \begin{pmatrix} \mathbf{0} & \mathbf{1} & 0 \\ \mathbf{1} & \mathbf{0} & 0 \\ 0 & 0 & 1 \end{pmatrix} E= 010100001
2. 倍乘 (Scaling)
把单位矩阵的某一行乘以一个非零常数 kkk。
动作: 把第 2 行乘以 5。
得到的初等矩阵 EEE:
E=(100050001) E = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \mathbf{5} & 0 \\ 0 & 0 & 1 \end{pmatrix} E= 100050001
3. 倍加 (Replacement / Row Addition)
把单位矩阵的某一行乘以 kkk 后加到另一行上去。
动作: 把第 1 行乘以 -3 加到第 3 行上。
得到的初等矩阵 EEE:
E=(100010−301) E = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ \mathbf{-3} & 0 & 1 \end{pmatrix} E= 10−3010001
如果想对矩阵 AAA 做交换两行的操作,只需要找到对应的那个初等矩阵 EEE (即由 III 经过同样的交换操作得到的 EEE)。然后算出 E⋅AE \cdot AE⋅A,结果就是变换后的 AAA。
所有的初等矩阵都是可逆的(Invertible)。因为每一个初等变换(交换、乘数、倍加)都是可以撤销的,所以对应的初等矩阵也可以通过逆矩阵还原回去。
交换了行,再交换一次就回去了。乘以 5,除以 5 就回去了。加了 3 倍,减去 3 倍就回去了。
举例说明
先说结论
左乘 (Left Multiplication): 矩阵 EEE 在 AAA 的左边 (E⋅AE \cdot AE⋅A) →\rightarrow→ 对 AAA 进行 行变换 。
右乘 (Right Multiplication): 矩阵 EEE 在 AAA 的右边 (A⋅EA \cdot EA⋅E) →\rightarrow→ 对 AAA 进行 列变换。
为了让彻底明白,用同一个初等矩阵 (Elementary Matrix)和同一个原始矩阵,分别做左乘和右乘,
1. 准备工作
假设有一个原始矩阵 AAA(这是要操作的对象):
A=(1234) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} A=(1324)
现在,需要一个初等矩阵 EEE 。
假设要执行的操作是:将第二行(或第二列)乘以 10 。
对应的初等矩阵 EEE 是:
E=(10010) E = \begin{pmatrix} 1 & 0 \\ 0 & 10 \end{pmatrix} E=(10010)
2. 具体的例子对比
情况一:左乘 (E⋅AE \cdot AE⋅A) →\rightarrow→ 行变换
把 EEE 放在 AAA 的左边进行矩阵乘法:
E⋅A=(10010)⏟操作矩阵⋅(1234) E \cdot A = \underbrace{\begin{pmatrix} 1 & 0 \\ \mathbf{0} & \mathbf{10} \end{pmatrix}}_{\text{操作矩阵}} \cdot \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} E⋅A=操作矩阵 (10010)⋅(1324)
运算过程:
第一行: (1×1+0×3,1×2+0×4)=(1,2)(1 \times 1 + 0 \times 3, \quad 1 \times 2 + 0 \times 4) = (1, 2)(1×1+0×3,1×2+0×4)=(1,2) →\rightarrow→ 没变。
第二行: (0×1+10×3,0×2+10×4)=(30,40)(0 \times 1 + 10 \times 3, \quad 0 \times 2 + 10 \times 4) = (30, 40)(0×1+10×3,0×2+10×4)=(30,40)。
结果:
(123040) \begin{pmatrix} 1 & 2 \\ \mathbf{30} & \mathbf{40} \end{pmatrix} (130240)
观察: 原始矩阵 AAA 的 第二行 被乘以了 10,而列之间没有发生交互。
情况二:右乘 (A⋅EA \cdot EA⋅E) →\rightarrow→ 列变换
把 EEE 放在 AAA 的右边进行矩阵乘法:
A⋅E=(1234)⋅(10010)⏟操作矩阵 A \cdot E = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \cdot \underbrace{\begin{pmatrix} 1 & 0 \\ \mathbf{0} & \mathbf{10} \end{pmatrix}}_{\text{操作矩阵}} A⋅E=(1324)⋅操作矩阵 (10010)
运算过程:
第一列: (1×1+2×0,3×1+4×0)=(1,3)(1 \times 1 + 2 \times 0, \quad 3 \times 1 + 4 \times 0) = (1, 3)(1×1+2×0,3×1+4×0)=(1,3) →\rightarrow→ 没变。
第二列: (1×0+2×10,3×0+4×10)=(20,40)(1 \times 0 + 2 \times 10, \quad 3 \times 0 + 4 \times 10) = (20, 40)(1×0+2×10,3×0+4×10)=(20,40)。
结果:
(120340) \begin{pmatrix} 1 & \mathbf{20} \\ 3 & \mathbf{40} \end{pmatrix} (132040)
观察: 原始矩阵 AAA 的 第二列 被乘以了 10,而行之间没有发生交互。
这种区别取决于矩阵乘法的定义方式:
| 乘法方向 | 数学形式 | 几何/逻辑含义 | 影响范围 |
|---|---|---|---|
| 左乘 (E⋅AE \cdot AE⋅A) | EEE 的行 ×\times× AAA 的列 | 结果矩阵的每一行 ,是 AAA 中各行的线性组合。 | 改变 Row (行) |
| 右乘 (A⋅EA \cdot EA⋅E) | AAA 的行 ×\times× EEE 的列 | 结果矩阵的每一列 ,是 AAA 中各列的线性组合。 | 改变 Column (列) |
在中文数学表达习惯中,"A 左乘 B " 的标准含义是:
A⋅B A \cdot B A⋅B
(A 在左,B 在右)
所以:
-
想表达 行变换 (E⋅AE \cdot AE⋅A):
可以说:"EEE 左乘 AAA " (E left-multiplies A)
或者更清楚点:"在 AAA 的左边乘上 EEE"
-
想表达 列变换 (A⋅EA \cdot EA⋅E):
可以说:"EEE 右乘 AAA " (E right-multiplies A)
或者更清楚点:"在 AAA 的右边乘上 EEE"
习惯也仅仅是习惯,不同的人有不同的习惯。
为了交流清晰,我最推荐使用 "在 A 的左边/右边乘上 E" 这种表述不会引起误会。
例如下面的表述,不会产生歧义
假设有一个 3×3 矩阵 A:
A=[123456789] A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} A= 147258369
1. 左乘 → 做初等行变换
想把 A 的第1行和第2行交换,这就是一个初等行变换。
对应的初等矩阵 E₁ 是对 3×3 单位矩阵把第1行和第2行交换得到的:
E1=[010100001] E_1 = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} E1= 010100001
在 A 的左边乘上 E₁
E1A=[010100001][123456789]=[456123789] E_1 A = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} = \begin{bmatrix} 4 & 5 & 6 \\ 1 & 2 & 3 \\ 7 & 8 & 9 \\ \end{bmatrix} E1A= 010100001 147258369 = 417528639
可以看到:只影响了行,第1行和第2行交换了,列没有动。
2. 右乘 → 做初等列变换
现在想对同一个矩阵 A 做同样的操作,但交换的是第1列和第2列
在 A 的右边乘上 E₁
AE1=[123456789][010100001]=[213546879] A E_1 = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} = \begin{bmatrix} 2 & 1 & 3 \\ 5 & 4 & 6 \\ 8 & 7 & 9 \\ \end{bmatrix} AE1= 147258369 010100001 = 258147369
可以看到:只影响了列,第1列和第2列交换了,行没有动。
"左行右列" ------ 左乘管行,右乘管列。
Left multiplication (pre-multiplication) by an elementary matrix represents the corresponding elementary row operation, while right multiplication (post-multiplication) represents the corresponding elementary column operation.