高斯消去法
/ GOWSS-ee-an /
想像一疊含有數個未知數的線性方程式,像一團彼此打結的繩子,每條都把未知數綁在一起。高斯消去法就是耐心解開它們的方法:用某一條方程式把某個未知數從其餘所有方程式中消掉,再換下一個,直到最後一條方程式只剩一個未知數(可以直接讀出),然後反向逐步把其餘的填回去。這就是你學過的「加減消元解方程」,寫成一套仔細、可重複的步驟。
具體來說,把系統寫成 A x = b,並把 A 與 b 並排成增廣陣列。對第 1 行,選對角元 a_11 當樞紐(主元),對下面每一列 i,把列 i 減去 (a_i1 / a_11) 倍的列 1,使樞紐下方每個元素變成零。如此第 1 行只剩最上方非零;對第 2 行用 a_22 當樞紐重複,依此類推。經過 n-1 次掃描後,A 變成上三角矩陣 U(對角線以下全為零),同樣的運算施於 b 得到變換後的右端。接著用回代解這個三角系統。小例子:由 x + y = 3 與 2x + y = 4,把第二列減去 2 倍的第一列得 -y = -2,故 y = 2,再回代得 x = 1。
這是數值線性代數幾乎一切的主力;它所做的消去正是 LU 分解所記錄的內容,因此兩者是同一個計算的不同視角。對 n×n 系統約需 2 n^3 / 3 次浮點運算。若某個樞紐為零或極小,最樸素的版本會失敗或失去精度,因此實務上一律搭配樞紐選擇(列交換)以維持穩定性。
從 { x + y = 3 ; 2x + y = 4 } 消去 x:令 row2 := row2 - 2*row1 得 0*x - y = -2,故 y = 2;回代到 row1:x = 3 - 2 = 1。
一次消去步驟就把 2x2 系統化為可一眼解出的三角系統。
課本上不選樞紐的高斯消去法可能除以零樞紐,且對許多矩陣數值不穩定;實際程式一律對列做置換。用消去法求解也遠勝於先求 A 的逆。