ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

矩阵乘法可交换:交换子、中心化子与同时对角化

矩阵乘法可交换:交换子、中心化子与同时对角化 1. 从 AB 与 BA 不相等讲起交换失败到底失败在哪里线性代数课上讲到矩阵乘法时老师通常会特意停顿一下强调AB 一般不等于 BA。当年很多人点头记下做练习时又忘掉了。真正在工程里搬过砖的人对此体会更深两个线性变换只要换一下施加顺序结果就变了图像会歪、坐标系会对不上、协方差矩阵的含义会跑偏。矩阵乘法可交换这个命题表面上只是关于乘法顺序的技术条件底层却决定了两个变换能否共享同一套坐标系、能否被同时化简——这正是它具有清晰几何意义的原因。所谓可交换就是 $AB BA$ 成立。把两个矩阵相减得到 $[A,B] AB - BA$这个量叫交换子commutator。可交换等价于交换子等于零矩阵。别小看这个等式它是 $n^2$ 个标量方程组成的约束而一个 $n\times n$ 矩阵本身有 $n^2$ 个自由度。换句话说随机掷两个矩阵出来它们可交换的概率在实数意义上是零。可交换是一件稀有事件需要非常特殊的结构才能达成。这一点值得反复强调因为很多人的直觉刚好相反他们以为矩阵加法可交换、数乘可交换乘法应该差不多。可交换不是默认状态而是需要被解释的特例。1.1 用两个 2×2 矩阵把差异看清楚拿最朴素的例子动手算一遍比看十遍定义管用。取$$ A \begin{bmatrix} 1 1 \ 0 1 \end{bmatrix}, \quad B \begin{bmatrix} 1 0 \ 1 1 \end{bmatrix} $$用代码验证一行就够import numpy as np A np.array([[1., 1.], [0., 1.]]) B np.array([[1., 0.], [1., 1.]]) print(AB \n, A B) print(BA \n, B A) print(AB - BA \n, A B - B A)跑出来的结果是 $AB \begin{bmatrix} 2 1 \ 1 1 \end{bmatrix}$$BA \begin{bmatrix} 1 1 \ 1 2 \end{bmatrix}$差值是 $\begin{bmatrix} 1 0 \ 0 -1 \end{bmatrix}$。两个矩阵都长得很对称看起来人畜无害可它们就是不肯交换。几何上这两个矩阵是什么$A$ 是保持水平方向不动、把竖直方向斜着推的剪切变换$B$ 是另一个方向的剪切。先横切再竖切和先竖切再横切最后把单位正方形变成了两个形状不同的平行四边形。这不是计算误差而是几何形状本身的差异。1.2 交换失败是结构性的不是数值上的巧合有人会想是不是换几个更规整的矩阵就能交换了答案取决于矩阵背后有没有共同的结构。我们从变换的视角重新叙述这件事一个 $n\times n$ 矩阵就是一个从 $\mathbb{R}^n$ 到自身的线性变换。$AB$ 表示先做 $B$ 再做 $A$$BA$ 表示先做 $A$ 再做 $B$。可交换的意思就是这两个变换的作用顺序无关紧要。顺序无关紧要意味着两个变换的动作方向是互不干涉的。$A$ 把空间往某个方向拉伸$B$ 往另一个方向压缩如果这两个方向恰好对齐那么先后顺序就不影响最终结果。反过来如果 $A$ 拉伸的方向被 $B$ 扭到了别处顺序就会产生差异。这个观察直接推出一条关键的几何判据可交换的两个变换必然共享某种不变的结构。这个结构可能是不变子空间可能是一组共同的特征向量也可能是一条旋转轴。下面几节会逐层把这句话拆开。在往下走之前先把交换子当作一个非交换性的度量记住。它不是一个开关式的布尔量而是一个矩阵。它为零说明完全互不干涉它不为零范数越大说明两个变换互相拧得越厉害。这个视角在后面的李括号、矩阵指数运算里都会反复用到。2. 交换子为零意味着什么四类典型可交换结构知道了可交换是稀有事件接下来的问题就是它到底在什么条件下发生。这一节把最常见、最能落地的四类结构过一遍每一类都配一个能直接验证的判定方法。这里有个前置认知需要摆正下面给出的条件有些是充分条件有些是充要条件混淆两者是初学者最容易犯的错误后面第 5 节会专门拆这个坑。2.1 数量矩阵唯一能和任意矩阵交换的角色先看最极端的例子。$A \lambda I$$\lambda$ 是任意标量$I$ 是单位矩阵时对任何矩阵 $B$ 都有 $AB \lambda B BA$。数量矩阵 $\lambda I$ 是万能通行证。反过来这个命题也成立而且成立得非常彻底如果 $A$ 与所有$n\times n$ 矩阵都可交换那么 $A$ 必须是数量矩阵。证明思路很短——取 $B E_{ij}$只有第 $i$ 行第 $j$ 列是 1 的矩阵比较 $AE_{ij}$ 与 $E_{ij}A$能直接推出 $A$ 的非对角元全为零、对角元全都相等。用集合语言说所有与任意矩阵可交换的矩阵构成矩阵代数的中心这个中心就是 ${\lambda I}$一维。这个结论看着朴素却是后面一切讨论的基准线除了数量矩阵没有第二个矩阵能通吃。2.2 多项式矩阵 B p(A)最典型的可交换族如果 $B$ 是 $A$ 的多项式即 $B c_0 I c_1 A c_2 A^2 \cdots$那么 $A$ 和 $B$ 一定可交换。理由简单到近乎无聊$A$ 和自己的任意次幂都可交换而多项式不过是幂的线性组合。$A(A^2) A^3 (A^2)A$全部归纳下去就行。这条性质的实际价值极大。一个矩阵的中心化子所有与它可交换的矩阵构成的集合永远至少包含整个多项式族 ${p(A)}$这个族是 $n$ 维的因为 $A$ 满足自己的特征多项式$I, A, \ldots, A^{n-1}$ 是它的基。所以中心化子的维数下界是 $n$。更有意思的是一条反向结论当 $A$ 的 $n$ 个特征值全部互不相同时与 $A$ 可交换的矩阵只能是$A$ 的多项式。也就是说此时中心化子恰好就是多项式族维数正好是 $n$没有多余的东西。这条定理在做数值验证时特别好用——如果你算出中心化子维数大于 $n$说明 $A$ 的特征值有重根或者矩阵有更复杂的重数结构。我个人的经验是拿到一个具体的 $A$先算它的特征值分布就能预判中心化子有多胖。特征值互异时它瘦得只剩多项式特征值出现重根时它会胖出一大片非多项式方向而这片区域恰恰是最容易被误判的地方。2.3 特征子空间的不变性可交换的真正来源上面两类结构都是特例通用的机制是特征子空间的不变性。设 $\lambda$ 是 $A$ 的特征值$E_\lambda(A)$ 是对应的特征子空间。如果 $AB BA$任取 $x \in E_\lambda(A)$那么$$ A(Bx) (AB)x (BA)x B(Ax) B(\lambda x) \lambda (Bx) $$最后一步说明 $Bx$ 也落在 $E_\lambda(A)$ 里。翻译成人话$B$ 把 $A$ 的每个特征子空间映回它自己。用术语说$E_\lambda(A)$ 是 $B$ 的不变子空间。这条性质是整个主题的地基。它说明可交换不是两个矩阵互相看得顺眼这种模糊说法而是一个可以逐空间验证的硬条件$B$ 必须尊重 $A$ 的所有特征子空间不能把它们搅到一起去。顺着这条线还能推出一系列实用结论。如果 $A$ 和 $B$ 都在复数域上、都可交换那么它们必定有公共特征向量——因为 $B$ 保持 $E_\lambda(A)$ 不变而任何复线性变换都有特征向量把 $B$ 限制在这个子空间上取特征向量即可。更进一步如果 $A$ 和 $B$ 都可对角化那么它们可以同时对角化也就是存在同一组基在这组基下两个矩阵都是对角矩阵。2.4 一切的第一步存在公共特征向量公共特征向量这件事看似不起眼实际是判断能不能化简的起点。两个变换共享一个特征向量意味着空间中至少有一条直线两个变换在这条直线上都只是纯粹的伸缩。这条直线是可以被单独切出来的剩下的空间在补方向上继续分析。懒得深究细节的话可以只记住一条链可交换 $\Rightarrow$ 特征子空间不变 $\Rightarrow$ 存在公共特征向量 $\Rightarrow$若都可对角化存在公共特征基 $\Rightarrow$ 同时对角化。链条每一环都有明确的几何含义后面第 3 节会把它们画成具体的变换图像。3. 几何画面旋转、伸缩、投影三类变换的可交换图像抽象的代数结论用几类具体变换过一遍会立刻变得可触摸。下面挑三类在工程里最常出现的变换——旋转、伸缩、投影——看它们的可交换条件长什么样。选这三类不是随意的它们分别代表了旋转型、对角型和幂等型这三种在数值计算中最典型的矩阵结构覆盖了绝大多数实际场景。3.1 旋转与旋转同轴则交换异轴则冲突二维平面上绕原点旋转 $\theta$ 角的矩阵是$$ R(\theta) \begin{bmatrix} \cos\theta -\sin\theta \ \sin\theta \cos\theta \end{bmatrix} $$两个旋转矩阵满足 $R(\theta)R(\varphi) R(\theta\varphi) R(\varphi)R(\theta)$永远可交换。几何上极其直观先转 30 度再转 50 度和先转 50 度再转 30 度最终都是转 80 度没有区别。旋转角可以自由相加这是可交换的最干净的例子。三维空间里情况立刻变复杂。绕同一条轴的两个旋转仍然可交换角度相加但绕不同轴的两个旋转一般不可交换。这不是数学家的刁难而是现实中天天能感受到的事实你手里拿本书先绕竖直轴转 90 度再绕水平轴转 90 度和反过来做书的最终朝向是不一样的。旋转顺序影响最终姿态这就是三维旋转群不可交换的最直接证据。还有一层更细的几何值得注意。二维旋转 $R(\theta)$ 在实矩阵里没有实特征向量除非 $\theta 0$ 或 $\pi$它的特征向量是复的对应两个共轭特征值 $e^{\pm i\theta}$。如果去求它的中心化子会得到一个二维空间所有与 $R(\theta)$ 可交换的实数矩阵恰好形如 $aI bJ$其中 $J$ 是 $R(\pi/2)$。这类矩阵的几何含义是旋转加各向同性伸缩——只做这两种动作的复合不会破坏 $R(\theta)$ 的结构。这个二维中心化子的存在正是 $R(\theta)$ 在实平面上不可约无法拆成更低维实不变子空间的代数表现。3.2 伸缩类变换对角矩阵之间的交换法则对角矩阵之间永远可交换因为逐分量相乘的顺序无所谓。但与一个对角矩阵可交换的条件要比两个对角矩阵可交换严格得多。设 $A \mathrm{diag}(1, 2, 3)$三个特征值互不相同。根据 2.2 节的结论与 $A$ 可交换的矩阵只能是 $A$ 的多项式而 $A$ 的多项式本身就是对角矩阵。所以中心化子就是全体对角矩阵维数为 3。整个空间被三个坐标轴方向切成三块互不干扰的一维子空间$B$ 必须在每个方向上单独作用不许把不同方向混起来。如果换成 $A \mathrm{diag}(1, 1, 2)$特征值 1 是二重的事情就变了。可交换矩阵允许在前两个坐标之间做任意混合因为对应的特征子空间是二维的$B$ 只要把这个二维子空间映回自己就行但绝不允许把前两个方向的信息漏到第三个方向上去。整个中心化子的维数从 3 涨到 5。这种维数变化在数据科学里很有意义它对应着特征值方差出现并列的维度可以自由旋转。3.3 投影变换可交换等于像空间能正交分解投影矩阵是幂等矩阵满足 $P^2 P$。两个正交投影 $P$ 和 $Q$ 什么时候可交换结论很漂亮$PQ QP$ 当且仅当 $PQ$ 本身也是一个正交投影矩阵。而一旦成立还有更强的结构此时$$ R(PQ) R(P) \cap R(Q), \qquad \ker(PQ) \ker(P) \ker(Q) $$也就是说两个投影的像空间和核空间干净地分解开了$PQ$ 的像恰好是两个像空间的交集。几何画面是$P$ 投影到一个平面$Q$ 投影到另一个平面两个平面要么互相正交、要么一个包含另一个的垂直分量配合得非常整齐投影先后顺序才无所谓。这个结论在回归分析、信号处理里特别有用。两个正交投影可交换意味着两次投影操作可以合并成一次不需要反复来回投影。如果不可交换说明两个子空间之间的关系是斜的先投哪个后投哪个会得到不同的残差这是很多迭代算法需要小心处理的地方。顺带把三个判断条件整理成表方便对照变换类型可交换条件几何含义两个旋转 $R(\theta), R(\varphi)$恒成立同平面/同轴旋转角可相加不同轴的 3D 旋转一般不成立姿态依赖操作顺序$A \mathrm{diag}(d_1, \ldots, d_n)$ 与 $B$$B$ 保持各特征子空间不变各方向独立不串味两个正交投影 $P, Q$$PQ$ 仍为正交投影像空间可干净正交分解4. 用 Kronecker 积把可交换矩阵全算出来前面讲的都是结构性的判定很多场景下你需要的是一条能跑代码的通用方法给定一个具体的 $A$把所有与它可交换的矩阵求出来。这个问题有一个非常优雅的线性化技巧用 Kronecker 积就能把它变成一个标准的零空间问题。4.1 把 AB BA 改写成一个线性方程组关键操作是向量化$\mathrm{vec}$把一个 $n\times n$ 矩阵按列堆叠成一个 $n^2 \times 1$ 的长向量。它有一个非常有用的恒等式$$ \mathrm{vec}(AXB) (B^T \otimes A),\mathrm{vec}(X) $$其中 $\otimes$ 是 Kronecker 积。把 $AB$ 和 $BA$ 分别套进去取 $X B$则$$ \mathrm{vec}(AB) (I \otimes A)\mathrm{vec}(B), \qquad \mathrm{vec}(BA) (A^T \otimes I)\mathrm{vec}(B) $$于是 $AB BA$ 等价于$$ \bigl(I \otimes A - A^T \otimes I\bigr),\mathrm{vec}(B) 0 $$一个关于 $B$ 的非线性矩阵乘积条件被彻底改写成了一个 $n^2 \times n^2$ 线性方程组的零空间问题。这个 $n^2\times n^2$ 矩阵记为 $M$求与 $A$ 可交换的全部矩阵就是求 $M$ 的零空间然后把零空间里的每个向量按列还原成矩阵。提醒一句$M$ 的规模是 $n^2 \times n^2$$n 100$ 时就是 $10000 \times 10000$直接求零空间会很吃力。实际工程里更常用的是特征分解法——先对 $A$ 做特征分解用特征向量基把问题拆到每个特征子空间上复杂度能降好几个量级。Kronecker 方法适合 $n$ 在几十以内、需要严格验证结论的场合。4.2 一段能直接跑的验证代码下面这段代码用 SVD 求零空间比用numpy.linalg.matrix_rank配合消元更稳定import numpy as np def centralizer_basis(A, tol1e-10): 返回与 A 可交换的矩阵的一组基按列还原后的矩阵列表 n A.shape[0] I np.eye(n) M np.kron(I, A) - np.kron(A.T, I) # SVD 求零空间 U, s, Vt np.linalg.svd(M) rank int(np.sum(s tol)) null_space Vt[rank:].T.conj() # 每列是一个基向量 basis [] for k in range(null_space.shape[1]): B null_space[:, k].reshape(n, n, orderF) B[np.abs(B) tol] 0.0 # 清理数值噪声 basis.append(B) return basis # 案例一特征值互异中心化子维数应该是 n 2 A1 np.array([[1., 0.], [0., 2.]]) b1 centralizer_basis(A1) print(案例一 维数:, len(b1)) for B in b1: print(B) # 案例二2x2 旋转矩阵中心化子维数应该是 2旋转 伸缩 th 0.7 A2 np.array([[np.cos(th), -np.sin(th)], [np.sin(th), np.cos(th)]]) b2 centralizer_basis(A2) print(案例二 维数:, len(b2)) # 案例三Jordan 块中心化子维数应该是 n 2 A3 np.array([[1., 1.], [0., 1.]]) b3 centralizer_basis(A3) print(案例三 维数:, len(b3)) for B in b3: print(B)跑出来会看到案例一得到两个基矩阵都是对角矩阵验证了特征值互异时中心化子就是多项式族案例二同样两维基是一对互相旋转 90 度的矩阵正是 ${I, J}$ 张成的空间案例三的两个基矩阵分别是 $\begin{bmatrix} 1 0 \ 0 1 \end{bmatrix}$ 和 $\begin{bmatrix} 0 1 \ 0 0 \end{bmatrix}$也就是 $I$ 与 $(A - I)$ 的组合全是 $A$ 的多项式。4.3 数值精度别被伪可交换骗了这段代码里有几个坑我第一次写的时候踩得很扎实。第一个是容差阈值。判断 $AB - BA$ 是否为零绝对不能写成AB - BA 0。浮点运算下两个数学上可交换的矩阵差值可能在 $10^{-16}$ 量级也可能因为矩阵本身数值范围大而放大到 $10^{-6}$。稳妥的做法是用相对误差np.linalg.norm(AB - BA) / (np.linalg.norm(A) * np.linalg.norm(B) 1e-30) 1e-10。直接看绝对范数在病态矩阵上会翻车。第二个是SVD 零空间的维数判定。奇异值从接近零过渡到明显非零之间往往没有清晰的分界尤其是 $A$ 本身条件数大的时候。我一般会先把奇异值打印出来看一眼如果最小的几个不在一个量级上说明存在数值上的模糊地带这时候靠 $n$ 与矩阵尺度的先验知识来定秩比死抠阈值靠谱。第三个是对称性带来的实矩阵问题。如果 $A$ 是对称矩阵理论上中心化子里的矩阵都是实的理论上可以取实基但 SVD 返回的可能是复基需要做一步实化处理。否则后面拿去做别的运算时会莫名出现虚部。5. 五个高频误区与它们的反例这块内容我单独拎出来讲因为关于矩阵可交换的误传实在太多而且每一条都能用两行代码推翻。下面每条都给出具体反例方便你直接跑一遍验证。5.1 误区一可交换就能同时对角化这是流传最广的一条。正确说法是可交换 两者都可对角化才能同时对角化。都可对角化这个前提不能省。反例非常好构造取 $A \begin{bmatrix} 1 1 \ 0 1 \end{bmatrix}$令 $B A$。显然 $AB BA A^2$可交换成立。但 $A$ 自己就不可对角化同时对角化根本无从谈起。这个坑的教训是可交换只保证特征子空间的不变性如果一个矩阵压根没有足够的特征向量把空间填满不变性再强也撑不起一组完整的公共特征基。5.2 误区二有公共特征向量就意味着可交换反向命题同样不成立。取$$ A \begin{bmatrix} 1 0 \ 0 2 \end{bmatrix}, \quad B \begin{bmatrix} 1 1 \ 0 2 \end{bmatrix} $$$e_1 (1, 0)^T$ 同时是 $A$ 和 $B$ 的特征向量两者共享一个特征方向。但 $AB \ne BA$。共享一条特征向量只说明两个变换在那条直线上互不干涉其他方向上该怎么拧还是怎么拧。这条误区特别隐蔽因为公共特征向量的存在性是可交换的必要条件复数域上但它离充分还差得远。判断时需要看全部特征子空间不能只看一个。5.3 误区三特征值有重根时中心化子还是多项式族前面提过特征值互异时中心化子等于多项式族维数恰好是 $n$。一旦出现重根这个等式就破了。举个最直观的$A I$$n 3$。它的特征值全是 1三重根。此时任意$3\times 3$ 矩阵都与 $A$ 可交换中心化子维数是 9而多项式族只有 3 维。差距大到没法看。重根带来的自由度是有具体几何含义的并列的特征值对应一个高维特征子空间在这个子空间内部$B$ 怎么转都行只要不出来就合法。这类内部自由旋转在很多实际问题里是好事比如多个特征值并列时特征向量方向的选取本身就不唯一。5.4 误区四把上三角化和对角化混为一谈可交换族有一条很硬的结论复数域上任意一族两两可交换的矩阵可以同时上三角化。注意是上三角不是对角。三角化几乎是白送的有非常干净的归纳法证明对角化则需要额外条件。工程上这个区别很实际。三角化意味着你只能保证把特征值依次堆到对角线上非对角元仍然残留耦合对角化才能彻底解耦把 $n$ 维问题切成 $n$ 个独立的一维问题。判断能不能对角化除了可交换还得逐个检查矩阵本身的特征向量够不够。5.5 误区五交换子范数小就差不多可交换数值上 $[A, B]$ 的范数是个连续量小不代表能当零用。在迭代算法里用近似可交换替换严格可交换误差会被反复放大。我的做法是在算法设计阶段就分清哪些地方是必须严格可交换比如解耦、同时对角化哪些地方允许近似比如预条件子的选择。前者一旦放松结果可能完全错掉。6. 可交换性在真实问题里落在哪儿理论讲了这么多回到实际用途上可交换性最值钱的地方在于解耦。两个变换可交换意味着可以把问题拆成互不干扰的几块分别处理不可交换则必须老老实实按照顺序来或者换一套坐标系让它们变得可交换。6.1 同时对角化与联合统计分析数据科学里一个经典操作是把两组协方差矩阵同时对角化。比如做判别分析时你手上有类内散度矩阵和类间散度矩阵两个对称矩阵需要找一组方向让类内散度尽量小、类间散度尽量大。如果这两个矩阵可交换问题极端简化对其中一个做特征分解得到的特征向量基直接就是另一个的特征向量基两个目标在同一组方向上同时被优化一步到位。如果它们不可交换就只能退而求其次解一个广义特征值问题得到的方向是在两个目标之间做折中。这不是算法设计的偷懒而是不可交换性带来的硬约束——两个矩阵的不变子空间对不上就不存在让两者都舒服的方向。6.2 矩阵指数与线性微分方程的解耦解线性常微分方程组 $\dot{x} Ax$解是 $x(t) e^{At}x(0)$。如果系统里同时出现两个矩阵 $A$ 和 $B$且它们可交换那么有$$ e^{A}e^{B} e^{AB} $$这个等式是可交换性带来的最实用的回报之一。它会让你把一个复杂的矩阵指数拆成两个简单的矩阵指数相乘每个单独算都轻松得多。控制论里设计解耦控制器、量子力学里推导演化算符的分解全靠这条公式撑着。一旦 $AB \ne BA$等式右边就要补上一长串由嵌套交换子组成的 Baker-Campbell-Hausdorff 项复杂度直接爆炸。顺带说一句$e^{A}e^{B} e^{AB}$ 只在可交换时成立这个事实反过来也可以当作可交换性的一个快速数值判据如果算出来的两者相对误差很小基本可以断定这对矩阵可交换。6.3 求中心化子时的性能取舍最后回到第 4 节的实操层面补一句性能上的经验。$n$ 不超过 30 的时候Kronecker 积方法直接跑代码短、结果干净验证结论非常方便。$n$ 到了几百$n^2 \times n^2$ 的矩阵构造会吃掉大量内存这时候应该改用特征分解先对 $A$ 做特征分解把每个特征子空间单独取出来在每个子空间内部解一个小规模的零空间问题再拼回去。两层方法在数学上等价复杂度差一个量级以上。这个切换点在工程里很关键。我见过不少人图省事用 Kronecker 方法硬算 500 阶矩阵内存直接被打爆。先花五分钟想清楚 $n$ 的量级再选方法比事后调内存划算得多。至于我自己在长期使用中的一个体会处理可交换性问题时最省事的做法永远是先看特征值分布再看不变子空间结构最后才动手算。特征值互异意味着结构最紧、结果最干净出现重根就要立刻警惕重根越多可交换矩阵的空间越胖越容易被数值噪声带偏。这套判断顺序用熟了大部分问题看一眼矩阵就能猜出答案的大致形状再去用代码验证效率完全不一样。
返回列表