高斯-賽德爾法
/ GOWSS ZY-del /
高斯-賽德爾法是把雅可比法做一個小而巧妙的改動:一拿到新資訊就立刻用。當你掃過各方程、依序更新 x_1、x_2、x_3、... 時,輪到 x_3 時,你在這同一輪掃描中其實已經算出 x_1 與 x_2 的新值了。雅可比法固執地不理它們、仍用舊值;高斯-賽德爾法則立刻採用新值。這就像一排人傳話、邊傳邊更正,而不是每個人各自照昨天的版本獨立猜測。
更新公式為 x_i^{new} = (b_i - 對 j < i 求和 a_ij x_j^{new} - 對 j > i 求和 a_ij x_j^{old}) / a_ii。注意第一個和用的是已更新的 x_j^{new}(本輪稍早已算完的分量),第二個和用的是舊值(尚未輪到的)。作為拆分,它是 M = D - L(整個下三角部分)、N = U,所以下一個迭代值是用前代法解一個三角系統得到。對對稱正定矩陣與嚴格對角佔優矩陣,高斯-賽德爾法保證收斂,且通常約比雅可比法快一倍——在模型問題上,採用新值大致把迭代矩陣的譜半徑減半。
速度的代價是更新現在變成依序進行:算 x_i 需要 x_{i-1},所以無法輕易一次全做完,使得天真的高斯-賽德爾法比雅可比法更難平行(巧妙的染色法,如紅黑排序,可恢復平行性)。和雅可比法一樣,它仍太慢,無法單獨把大問題逼到完整精度,但它是多重網格法裡極佳的平滑子,也是不錯的預條件子。它還有一個對稱變體(先一次正向掃描、再一次反向掃描),與共軛梯度法搭配解對稱問題時相得益彰。
對 2x + y = 11、x + 3y = 13,從 x_0 = y_0 = 0:x = 11/2 = 5.5,然後立刻 y = (13 - 5.5)/3 = 2.5。下一輪:x = (11 - 2.5)/2 = 4.25,y = (13 - 4.25)/3 = 2.92——掃描相同輪數後,比雅可比法更接近 (4, 3)。
在同一輪掃描內重複使用剛算出的新值,大致使收斂速度比雅可比法快一倍。
比雅可比法快,但並非對每個矩陣都無條件如此:存在某些矩陣使雅可比法收斂而高斯-賽德爾法不收斂,反之亦然。對常見的對稱正定與嚴格對角佔優情形,保證成立;在這些之外,要檢查譜半徑。