矩阵的左乘和右乘有什么区别

矩阵的左乘和右乘有什么区别

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 在右)

所以:

  1. 想表达 行变换 (E⋅AE \cdot AE⋅A):

    可以说:"EEE 左乘 AAA " (E left-multiplies A)

    或者更清楚点:"在 AAA 的左边乘上 EEE"

  2. 想表达 列变换 (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.

相关推荐
愚公搬代码7 小时前
【愚公系列】《AI+直播营销》015-直播的选品策略(设计直播产品矩阵)
人工智能·线性代数·矩阵
paixingbang10 小时前
2026短视频矩阵服务商评测报告 星链引擎、河南云罗、数阶智能
大数据·线性代数·矩阵
scott19851210 小时前
NVIDIA GPU内部结构:高性能矩阵乘法内核剖析
线性代数·矩阵·gpu·nvidia·cuda
AI科技星14 小时前
能量绝对性与几何本源:统一场论能量方程的第一性原理推导、验证与范式革命
服务器·人工智能·科技·线性代数·算法·机器学习·生活
sunfove15 小时前
上帝的乐谱:从线性代数视角重构傅里叶变换 (FT) 的数学表达式
线性代数·机器学习·重构
victory04312 天前
pytorch 矩阵乘法和实际存储形状的差异
人工智能·pytorch·矩阵
AI科技星2 天前
引力与电磁的动力学耦合:变化磁场产生引力场与电场方程的第一性原理推导、验证与统一性意义
服务器·人工智能·科技·线性代数·算法·机器学习·生活
todoitbo2 天前
从零搭建鲲鹏 HPC 环境:从朴素矩阵乘法到高性能实现
线性代数·矩阵·鲲鹏·昇腾
lingzhilab2 天前
零知IDE——基于STMF103RBT6结合PAJ7620U2手势控制192位WS2812 RGB立方体矩阵
c++·stm32·矩阵
你要飞2 天前
Part 2 矩阵
笔记·线性代数·考研·矩阵