數值線性代數:直接法

LU分解

當你執行高斯消去法時,會對矩陣做大量算術,最後得到一個三角系統。LU分解是個簡單卻強大的領悟:這些工作可以存成兩個三角矩陣——下三角的 L(對角線為 1,存放你用過的乘數)與上三角的 U(消去後的結果)。它們的乘積還原出原矩陣:A = L U。它就是把消去過程裝瓶,好讓你重複使用。

L 與 U 為何會出現?每個消去步驟「把列 i 減去 m_i1 倍的列 1」本身就是一個簡單的下三角運算,把它們還原(把乘數 m_i1 放回去)就構成 L。因此若你把消去元素 (i, j) 所用的每個乘數 m_ij = a_ij / a_jj 都存起來,就剛好得到 L,而 U 是留下來的上三角矩陣。接著要解 A x = b,就拆成兩個容易的三角求解:先用前代(由上而下)解 L y = b,再用回代(由下而上)解 U x = y。分解約需 2 n^3 / 3 次浮點運算;每次三角求解只約需 n^2 次。

好處就是「分解一次、求解多次」:若你必須對許多不同的右端 b 解 A x = b(在模擬、最佳化、時間步進中很常見),你只付一次立方成本得到 L 與 U,之後每個新的 b 只花 O(n^2)。LU分解也幾乎免費地給你行列式(U 對角線的乘積乘上列交換的符號),而且這是 LAPACK 之類函式庫解稠密系統的標準途徑。實務上它會搭配樞紐選擇,所以真正算出的是 P A = L U,其中 P 是置換矩陣。

對列為 (4, 3) 與 (6, 3) 的 A,一次消去步驟(row2 -= 1.5*row1)得列為 (4, 3) 與 (0, -1.5) 的 U,以及列為 (1, 0) 與 (1.5, 1) 的 L;驗證 L U = A。

乘數 1.5 正是 L 的非對角元素;U 是消去後留下的部分。

並非每個矩陣都能在不交換列的情況下做 LU 分解(即使 A 非奇異也可能出現零樞紐),因此實用的對象是搭配部分樞紐選擇的 P A = L U;未選樞紐的版本主要具理論意義。

又称
LU decompositiontriangular factorizationLU分解三角分解