特徵值問題與奇異值分解

阿諾迪疊代

/ ar-NOHL-dee /

蘭索斯演算法很美妙,但它完全仰賴矩陣的對稱性——那正是短三項遞迴的來源。若你需要一個巨大稀疏「非」對稱矩陣的少數特徵值呢(一個流體力學的雅可比矩陣、一個馬可夫轉移矩陣、一個穩定性算子)?阿諾迪疊代(Arnoldi)就是答案:它是蘭索斯向一般矩陣的自然推廣,建立同一個克雷洛夫子空間的正交歸一基底,並把矩陣投影到上面。

阿諾迪逐步生長由 q_1, A q_1, A^2 q_1, ... 張成的克雷洛夫子空間,用修正格拉姆-施密特(modified Gram-Schmidt)把新向量對「所有」先前向量正交化。因為矩陣不再對稱,你失去短遞迴——每個新基底向量 q_{j+1} 必須對每個更早的 q_i 正交化,所以第 j 步要 O(j) 個內積,成本與儲存隨步數增長。投影後的矩陣不再是三對角,而是上「海森堡」:一個小的 k×k 海森堡矩陣 H_k,其特徵值(Ritz 值)逼近 A 的極端特徵值。你用 QR 演算法計算那些小特徵值。(事實上,蘭索斯正是阿諾迪施於對稱矩陣的情形,此時海森堡矩陣塌縮為三對角,長遞迴縮短為三項。)

兩個實務現實。因為遞迴很長,你無法把阿諾迪跑上千步——記憶體與正交化成本會增長。解法是「重啟」(restart):跑 k 步,留下最有用的方向(隱式重啟阿諾迪法 IRAM,實作於著名的 ARPACK 函式庫,也是 MATLAB 的 eigs 與 SciPy 的 eigs 背後的核心),丟掉其餘,再繼續。另一個現實是對非對稱矩陣本身的誠實:它們的特徵值可能病態(鮑爾-法依克 Bauer-Fike),其 Ritz 值可能收斂得不規律或收斂到錯誤之處,所以非對稱問題的阿諾迪比對稱問題的蘭索斯需要更多小心與驗證。順帶一提,同樣的阿諾迪機制也是求解非對稱線性系統的 GMRES 方法的底層。

要找一個大型非對稱流體穩定性矩陣最右邊(實部最大)的特徵值——那些預示不穩定的特徵值——你跑阿諾迪,比方說 30 步,形成 30x30 的海森堡 H,再做 QR 分解求其特徵值。複數平面最右邊附近的 Ritz 值逼近 A 最右邊的特徵值。若需更高精度就重啟,保留捕捉到那些最右 Ritz 值的方向。

阿諾迪把蘭索斯推廣到非對稱矩陣:用長遞迴與小的海森堡投影,取代短遞迴與三對角投影。

阿諾迪保留並對「所有」先前基底向量正交化(長遞迴),所以每步成本與記憶體隨步數增長——這就是為何重啟不可或缺,也是為何對稱問題該改用蘭索斯。非對稱矩陣的收斂較難預測,因為它們的特徵值可能病態。

又稱
Arnoldi algorithm阿諾爾迪演算法阿諾迪法