矩阵乘法为什么不能交换顺序

结论

普通数的乘法满足交换律:

但矩阵乘法通常不满足交换律:

更严格地说,矩阵乘法只有在一些特殊情况下才可能交换,例如两个矩阵都是对角矩阵、其中一个是单位矩阵,或者它们刚好满足某种共同结构。一般情况下,不能随意交换顺序。

核心原因

矩阵乘法表示「线性变换的复合」。先做变换 A 再做变换 B,和先做变换 B 再做变换 A,通常会得到不同结果。

(附件 matrix-order-transform.svg 未随站点发布)

上图展示了同一个向量 经过两个矩阵变换时, 和 对应的是两条不同的操作链路。

第一个原因:维度可能根本不允许交换

矩阵乘法 能成立,要求:

也就是 A 的列数必须等于 B 的行数。乘积 的维度是:

但反过来 要成立,要求:

这需要 B 的列数 等于 A 的行数 。

很多时候 能算,但 根本不能算。

例如:

这是一个 矩阵。

这是一个 矩阵。

那么:

可以计算,结果是 矩阵。

但:

是 乘 ,中间维度 和 不相等,因此不能计算。

所以矩阵乘法不能交换的第一个原因是:很多情况下交换后连维度都不匹配。

第二个原因:即使都能算,结果也通常不同

即使 A 和 B 都是方阵, 和 都能计算,结果也不一定相同。

例如:

先算 :

再算 :

显然:

这说明,就算维度允许交换,矩阵乘法也通常不满足交换律。

第三个原因:矩阵乘法本质是操作顺序

矩阵常常表示一个线性变换。

例如在二维平面中:

  • 一个矩阵可以表示旋转。
  • 一个矩阵可以表示缩放。
  • 一个矩阵可以表示剪切。
  • 一个矩阵可以表示投影。

矩阵乘法表示把多个变换连续执行。

如果有向量 ,那么:

实际执行顺序是:

  1. 先用 作用到 ,得到 。
  2. 再用 作用到 ,得到 。

也就是说:

而:

表示先做 A,再做 B。

这两个操作顺序不一样,结果自然可能不一样。

注意阅读顺序

在表达式 中,矩阵靠近向量的先执行。所以虽然写作 ,实际顺序是先 后 。

一个直观例子:旋转和剪切

假设有两个操作:

  • A:把图形向右剪切。
  • B:把图形旋转 90 度。

如果先剪切再旋转,图形会沿原来的坐标方向先变形,然后整体转过去。

如果先旋转再剪切,剪切发生在旋转后的坐标方向上。

两种结果通常不同。

这就像现实中的操作流程:

  • 先穿袜子再穿鞋。
  • 先穿鞋再穿袜子。

这两个顺序都由同样的两个动作组成,但结果不一样。

从行列计算看原因

矩阵乘法的每个元素来自「左矩阵的一行」和「右矩阵的一列」的点积。

如果:

那么:

但如果:

那么:

左右矩阵的位置变了,参与点积的行和列也变了,所以结果没有理由相同。

哪些情况下可以交换

虽然矩阵乘法一般不能交换,但某些特殊情况可以。

和单位矩阵相乘

单位矩阵 满足:

和零矩阵相乘

在维度匹配时,零矩阵通常也满足类似交换结果:

但要注意维度必须匹配。

对角矩阵之间

两个同阶对角矩阵可以交换:

因为它们只是分别缩放各个坐标轴,缩放顺序不会影响最终结果。

一个矩阵和它的逆矩阵

如果 可逆,那么:

某些特殊结构矩阵

有些矩阵虽然不是对角矩阵,但也可能满足:

这时称 A 和 B 可交换。但这是特殊性质,不能默认成立。

和普通乘法的区别

普通数的乘法只表示数量缩放。

例如:

和:

都只是把数量放大 6 倍。

但矩阵乘法表示的是结构化操作,不只是一个数量。矩阵不仅包含大小,还包含方向、坐标关系和变换顺序。

所以:

和:

通常表示两个不同的操作流程。

小结

矩阵乘法不能随意交换顺序,主要有三个原因:

  1. 维度可能不匹配,交换后甚至无法计算。
  2. 即使都能计算,乘法规则也会让结果通常不同。
  3. 矩阵乘法表示线性变换的复合,操作顺序本身会影响结果。

记忆方式

矩阵不是普通数字,而是一个「操作」。两个操作的先后顺序通常会改变最终结果,所以 一般不等于 。