冪法
假設你只想要矩陣 A 那個絕對值最大的特徵值(dominant eigenvalue)以及它的特徵向量。有一個漂亮又簡單的配方:任取一個起始向量,反覆用 A 去乘它,每次再正規化(renormalize)。這個向量會擺動、然後安定下來,越來越精確地指向主特徵向量的方向。這就是冪法(power method),它幾乎是每一個疊代特徵值求解器的種子(換個面貌看,也是 Google 最初 PageRank 的核心)。
為什麼有效?把起始向量寫成 A 的特徵向量的組合:v = c_1 q_1 + c_2 q_2 + ...,其中 q_1 對應最大的特徵值 lambda_1。每乘一次 A,就把第 i 個分量乘上它的特徵值 lambda_i,所以走 k 步後沿 q_1 方向的分量是 c_1 lambda_1^k q_1。因為 |lambda_1| 最大,那一項長得最快、壓過其他項;相對於它,其餘每個分量都以 (lambda_i / lambda_1)^k 的速度縮小。於是疊代 v_{k+1} = A v_k / ||A v_k|| 收斂到 q_1,而瑞利商(Rayleigh quotient)v_k^T A v_k / (v_k^T v_k) 收斂到 lambda_1。用虛擬碼寫:重複執行 w = A v;v = w / ||w||;lambda = v^T A v。
代價在於收斂速度:誤差只以線性方式縮小,每步約乘上比值 |lambda_2 / lambda_1|。若前兩大特徵值的大小相近,這個比值接近 1,收斂就慢如蝸牛;若它們大小相等(並列,或一對共軛複數),純冪法可能根本不收斂。它也只能找到主特徵對,找不到其他的。這些限制,正是反冪法(瞄準其他特徵值)與 QR 演算法(一網打盡)要克服的目標。但若只需要一個巨大稀疏矩陣的某個極端特徵值、而且你只負擔得起矩陣乘向量的運算,冪法就很難被打敗。
設 A 的列為 (2, 1) 與 (1, 2),特徵值為 3(特徵向量 (1,1))與 1(特徵向量 (1,-1))。從 v = (1, 0) 開始。A v = (2, 1),正規化為 (0.894, 0.447)。下一步 (2.236, 1.789) -> (0.781, 0.625),再下一步 (0.733, 0.680)……向量逐步逼近 (0.707, 0.707),即 (1,1) 的方向,瑞利商也爬向 3。每步誤差約乘上 |1/3|,所以每幾步就多對幾位數。
反覆相乘讓向量對齊主特徵向量;收斂速度由 |lambda_2/lambda_1| 決定。
每步都要正規化,否則隨著 lambda_1^k 暴增或衰減,疊代值會上溢或下溢。而且它收斂到的是主特徵向量的「方向」(一個單位向量,符號可能不定),不是某個大小——特徵值要從瑞利商取得,而非向量的長度。