鮑爾-法依克定理
/ BOW-er FY-keh /
有個問題決定你能否信賴一個算出來的特徵值:若我把矩陣稍微擾動一下(捨入誤差總是會),它的特徵值能跑多遠?對對稱矩陣,答案令人安心——它們幾乎不動。對一般非對稱矩陣,答案可能令人警覺,而鮑爾-法依克定理(Bauer-Fike theorem)正是「多警覺」的精確陳述。它用一個數字——特徵向量矩陣的條件數——來界定特徵值的位移。
假設 A 可對角化為 A = V Lambda V^(-1),所以 V 的各欄是特徵向量。鮑爾-法依克定理說:若你把 A 擾動一個矩陣 E,則 A + E 的每個特徵值,都落在 A 的某個特徵值的 kappa(V) * ||E|| 距離之內,其中 kappa(V) = ||V|| * ||V^(-1)|| 是特徵「向量」矩陣的條件數。仔細讀:放大因子是 kappa(V),不是 A 本身的條件數。若特徵向量正交——恰是對稱/正規情形——則 V 正交,kappa(V) = 1,特徵值最多移動 ||E||:完全良態。但若特徵向量幾乎平行(矩陣遠離正規),kappa(V) 可能巨大,一個捨入等級的 E 就能把特徵值推得老遠。這正是為何非對稱特徵值問題可能敏感。
其實務結論直接連到那條主公式:精度 = 條件數 x 穩定性。QR 演算法向後穩定,意即它回傳的是 A + E 的精確特徵值,其中 ||E|| 在捨入誤差等級。依鮑爾-法依克,你算出的特徵值因此精確到約 kappa(V) * 機器 epsilon。所以對對稱矩陣你得到滿精度,但對高度非正規的矩陣你可能損失許多位數——而這是問題的錯,不是演算法的錯。還有一個更銳利的、逐特徵值的版本,用左右特徵向量之間的夾角(1/cos 給出那單一特徵值的條件數),解釋了為何同一矩陣中有些特徵值良態、有些卻不然。
比較兩個矩陣。對稱矩陣的特徵向量正交,kappa(V) = 1;一個 1e-15 的捨入擾動最多把它的特徵值移動約 1e-15。再取一個強烈非正規的矩陣,列為 (1, 1e8) 與 (0, 2):它的特徵向量幾乎平行,所以 kappa(V) 約為 1e8,鮑爾-法依克警告一個 1e-15 的擾動可把特徵值移動達約 1e-7——七位數沒了,即使來自向後穩定的演算法。
特徵值的敏感度被特徵向量矩陣的條件數 kappa(V) 放大;正交的特徵向量(kappa=1)意味完全良態。
鮑爾-法依克用 kappa(V) 界定特徵「值」的條件數,那「不是」A 的條件數(用於求解 A x = b 的那個)。一個矩陣可以在線性求解上完全良態、特徵值卻糟糕地病態,反之亦然——它們是不同的問題。該定理假設 A 可對角化;一個有缺陷的矩陣(含非平凡的若爾當塊)更加敏感。