JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

对角化:矩阵最简单的样子

如果一个矩阵有足够多的独立特征向量,你就能切换到一个由它们搭成的坐标系——特征基——在那里矩阵变成一个简单的对角缩放。这就是对角化,A = P*D*P^(-1),它把计算 A^k 这件苦差事变成了不值一提的算术。

选矩阵喜欢的坐标轴

在标准坐标下,矩阵看起来可能盘根错节。但假设我们用它的 特征向量 当作新的坐标轴——一个 特征基。沿着每一根轴,矩阵无非就是按那根轴的 特征值 缩放。在那套坐标里,矩阵是对角的:除了对角线上的缩放因子,处处都是零。

A = P * D * P^(-1)

P  = eigenvectors as columns
D  = eigenvalues on the diagonal, e.g. [[2,0],[0,3]]
P^(-1) translates standard coords -> eigen coords
对角化的配方:换进去,缩放,再换回来。

为什么这让幂次变得轻而易举

直接计算 A^k 意味着把杂乱的矩阵一遍又一遍地相乘。有了 对角化,相邻两次之间内部的 P^(-1) 与 P 相消,只剩下 D^k——而把一个对角矩阵升到某次幂,不过是把每个对角元素升到那次幂。就这么简单。

A^k = P * D^k * P^(-1)

D = [[2,0],[0,3]]
D^10 = [[1024,0],[0,59049]]   (just 2^10 and 3^10)
中间的 P 相消,所以只有对角元素被升到幂次。

一句老实话:并非每个矩阵都能对角化

整个技巧需要 P 可逆,这就要求你有足够多独立的特征向量来填满基——对 n 阶矩阵需要 n 个。有些矩阵就是凑不够这么多,它们在实数范围内无法对角化。

  1. 取错切 A = [[1,1],[0,1]],解 det(A - lambda*I) = (1-lambda)^2 = 0。
  2. 唯一的特征值是 lambda = 1,重复了两次——但它只给出一个方向的特征向量,(1,0)。
  3. 一个独立的特征向量填不满二维的基,所以 P 不可逆,这个错切无法对角化。