矩阵乘法为什么不能交换顺序
结论
普通数的乘法满足交换律:
但矩阵乘法通常不满足交换律:
更严格地说,矩阵乘法只有在一些特殊情况下才可能交换,例如两个矩阵都是对角矩阵、其中一个是单位矩阵,或者它们刚好满足某种共同结构。一般情况下,不能随意交换顺序。
核心原因
矩阵乘法表示「线性变换的复合」。先做变换 A 再做变换 B,和先做变换 B 再做变换 A,通常会得到不同结果。
(附件 matrix-order-transform.svg 未随站点发布)
上图展示了同一个向量 经过两个矩阵变换时, 和 对应的是两条不同的操作链路。
第一个原因:维度可能根本不允许交换
矩阵乘法 能成立,要求:
也就是 A 的列数必须等于 B 的行数。乘积 的维度是:
但反过来 要成立,要求:
这需要 B 的列数 等于 A 的行数 。
很多时候 能算,但 根本不能算。
例如:
这是一个 矩阵。
这是一个 矩阵。
那么:
可以计算,结果是 矩阵。
但:
是 乘 ,中间维度 和 不相等,因此不能计算。
所以矩阵乘法不能交换的第一个原因是:很多情况下交换后连维度都不匹配。
第二个原因:即使都能算,结果也通常不同
即使 A 和 B 都是方阵, 和 都能计算,结果也不一定相同。
例如:
先算 :
再算 :
显然:
这说明,就算维度允许交换,矩阵乘法也通常不满足交换律。
第三个原因:矩阵乘法本质是操作顺序
矩阵常常表示一个线性变换。
例如在二维平面中:
- 一个矩阵可以表示旋转。
- 一个矩阵可以表示缩放。
- 一个矩阵可以表示剪切。
- 一个矩阵可以表示投影。
矩阵乘法表示把多个变换连续执行。
如果有向量 ,那么:
实际执行顺序是:
- 先用 作用到 ,得到 。
- 再用 作用到 ,得到 。
也就是说:
而:
表示先做 A,再做 B。
这两个操作顺序不一样,结果自然可能不一样。
注意阅读顺序
在表达式 中,矩阵靠近向量的先执行。所以虽然写作 ,实际顺序是先 后 。
一个直观例子:旋转和剪切
假设有两个操作:
- A:把图形向右剪切。
- B:把图形旋转 90 度。
如果先剪切再旋转,图形会沿原来的坐标方向先变形,然后整体转过去。
如果先旋转再剪切,剪切发生在旋转后的坐标方向上。
两种结果通常不同。
这就像现实中的操作流程:
- 先穿袜子再穿鞋。
- 先穿鞋再穿袜子。
这两个顺序都由同样的两个动作组成,但结果不一样。
从行列计算看原因
矩阵乘法的每个元素来自「左矩阵的一行」和「右矩阵的一列」的点积。
如果:
那么:
但如果:
那么:
左右矩阵的位置变了,参与点积的行和列也变了,所以结果没有理由相同。
哪些情况下可以交换
虽然矩阵乘法一般不能交换,但某些特殊情况可以。
和单位矩阵相乘
单位矩阵 满足:
和零矩阵相乘
在维度匹配时,零矩阵通常也满足类似交换结果:
但要注意维度必须匹配。
对角矩阵之间
两个同阶对角矩阵可以交换:
因为它们只是分别缩放各个坐标轴,缩放顺序不会影响最终结果。
一个矩阵和它的逆矩阵
如果 可逆,那么:
某些特殊结构矩阵
有些矩阵虽然不是对角矩阵,但也可能满足:
这时称 A 和 B 可交换。但这是特殊性质,不能默认成立。
和普通乘法的区别
普通数的乘法只表示数量缩放。
例如:
和:
都只是把数量放大 6 倍。
但矩阵乘法表示的是结构化操作,不只是一个数量。矩阵不仅包含大小,还包含方向、坐标关系和变换顺序。
所以:
和:
通常表示两个不同的操作流程。
小结
矩阵乘法不能随意交换顺序,主要有三个原因:
- 维度可能不匹配,交换后甚至无法计算。
- 即使都能计算,乘法规则也会让结果通常不同。
- 矩阵乘法表示线性变换的复合,操作顺序本身会影响结果。
记忆方式
矩阵不是普通数字,而是一个「操作」。两个操作的先后顺序通常会改变最终结果,所以 一般不等于 。