線性系統的迭代法

定常迭代法

用「逐步逼近答案」來解 A x = b,最簡單的辦法是把方程改寫成「x 等於(某個容易算的東西)乘 x,加上(某個容易算的東西)乘 b」的形式,然後一直把目前的猜測代回右端。因為這個配方從一步到下一步都不變——每次都用同一個矩陣與同一個位移——所以稱為「定常」,以別於那些係數會隨進度自我調整的方法(如共軛梯度法)。它其實就是不動點迭代:真正的解就是映射保持不變的那一點。

具體地說,把迭代寫成 x_{k+1} = G x_k + c,其中 G 是一個固定的矩陣,稱為迭代矩陣,c 是一個固定向量。誤差 e_k = x_k - x_star(你的猜測與真解 x_star 之間的差距)服從一條極簡潔的規則 e_{k+1} = G e_k,於是 k 步之後 e_k = G^k e_0。「是否收斂、收斂多快」這整個問題,便化約為 G 的冪次的行為:若反覆作用 G 會縮小每個向量,誤差就會消退;若它能在任一方向放大,你就發散。精確的條件是 G 的譜半徑(其特徵值中絕對值最大者)必須小於 1。

定常迭代法——雅可比法、高斯-賽德爾法與 SOR 是經典的三種——容易寫、幾乎不耗記憶體,是早期科學計算的主力。如今很少單獨用它們把解逼到完整精度,因為它們的收斂往往很慢(每步誤差只縮小一個常數倍,而那個倍數可能慢得逼近 1)。如今它們以另一種身分存活下來:作為多重網格法裡的平滑子、以及克雷洛夫方法的預條件子,它們那種便宜、局部的誤差削減,正是這些場合所需要的。

把 A 拆成 A = M - N(M 容易求逆)就得到定常迭代 x_{k+1} = M^{-1} N x_k + M^{-1} b,迭代矩陣為 G = M^{-1} N。雅可比法取 M 為 A 的對角部分;高斯-賽德爾法取 M 為 A 的下三角部分。

每個定常方法骨子裡都是一個矩陣拆分;收斂由迭代矩陣 G 決定。

收斂只取決於 G 的譜半徑,而非它的範數——一個矩陣的範數可以大於 1,只要其特徵值全都很小,仍會收斂。但大的範數可能在最終衰減開始前,造成一段又長又難看的暫態增長。

又稱
fixed-point iteration for linear systems定常迭代線性系統的不動點迭代