矩阵对角化
矩阵通常会扭格子、转箭头,脑子里很难画。可是把特征向量,也就是受了变换方向不变、只变长度的那个方向,当成新的坐标轴,矩阵在那个坐标里就忽然变简单。旋转和扭转都消失,只剩下把两根轴分别按特征值拉长的对角矩阵 D。这就是对角化 A = P D P⁻¹,这里的 P 是把特征向量立成列的矩阵。这样一拆,乘方几乎不用花钱,对称矩阵里那两根轴恰好成直角。这一件事实把 PageRank, SVD, PCA 穿成一行。
同一个变换可以在两种视角之间切换。标准视角里格子被扭歪,不是特征向量的普通蓝色箭头不但变长度,方向也弯。脑子很难跟上。换成特征基视角,两根特征向量就铺成新的坐标轴。第一根轴是绿色,第二根轴是橙色。于是变换看起来只是对角变换 D = diag(λ1, λ2),把第一根轴拉长 λ1 倍,第二根轴拉长 λ2 倍。旋转是 0。选对基底,看起来复杂的矩阵就收拾成两次拉伸。这是对角化的起点。
一步一步看 A = P D P⁻¹ 怎样作用在一个向量上。P 是把特征向量 v1, v2 立成列的矩阵。0 步是蓝色的出发向量。1 步的 P⁻¹ 把那个向量搬进特征坐标,读成沿 v1 方向几格加上沿 v2 方向几格,箭头变成金色。2 步的 D 在特征坐标里把第一分量拉长 λ1 倍、第二分量拉长 λ2 倍,箭头是绿色。只是拉伸,所以是最简单的一步。3 步的 P 把结果送回原来的坐标,箭头是红色。从 P⁻¹ 进去,用 D 拉长,再从 P 出来,这三个动作恰好等于 A 作用一次。
对角化真正的好处是乘方。Aⁿ = P Dⁿ P⁻¹,中间的 Dⁿ 只是把每个特征值乘到 n 次方的对角矩阵。把矩阵乘 n 次的功夫消失了。用滑块加大乘方 k,蓝色向量每次都沿各个特征方向变长,绝对值大的特征值渐渐压过另一边。所以 k 变大时,向量渐渐对齐最大特征值的方向,也就是金色虚线画的主特征向量。这就是幂迭代,也是 PageRank 或反复的过程随着时间停在一个方向上的道理。
矩阵若是对称的,也就是 b 的位置和 c 的位置相同,就会发生特别的事。用滑块调节非对称项,离对称远的时候两根特征向量轴斜着倾斜。第一根轴是绿色,第二根轴是橙色。一旦调成对称,两根特征向量恰好以 90 度、也就是直角相遇,中间的点变成金色。这就是谱定理。对称矩阵总有标准正交的特征向量,所以拆成 A = Q Λ Qᵀ,这里 Q 是旋转,也就是正交矩阵,Λ 是特征值的对角矩阵。P⁻¹ 的位置可以直接用转置。这种正交对角化是 SVD 与 PCA 的几何心脏。
有一句诚实的但书。不是每个矩阵都能对角化。切换的一边是有两个不同特征方向的完好矩阵,特征向量把平面摊开,可以对角化。绿色箭头和橙色箭头指向不同的方向。另一边是错切 (shear) 矩阵 [[1,1],[0,1]]。特征值叠成单独一个 1,特征向量却只出水平轴一个方向。看得见两支箭头叠到同一条线上。独立特征向量不够的矩阵叫做亏损 (defective),没有足够的方向去立新坐标轴,所以不能对角化。对角化的条件是和维数一样多的独立特征向量。