數值線性代數:直接法

部分樞紐選擇

純高斯消去法有個脆弱之處:每一步都要除以當前的對角元,也就是樞紐。若這個樞紐恰好為零,方法就直接崩潰;若它只是極小,方法雖能存活卻會把捨入誤差放大成垃圾。部分樞紐選擇是便宜又標準的修補:在消去每一行之前,沿著該行往下看,交換列,使可用元素中絕對值最大者坐到樞紐位置。

逐步來說,當你要消去第 k 行時,掃描元素 a_kk, a_{k+1,k}, ..., a_nk,找出絕對值最大的那個,把它的列換上來成為第 k 列。如今樞紐是可用中最大的,所以每個乘數 m_ik = a_ik / a_kk 的絕對值至多為 1——你絕不會把某一列乘上巨大的因子,這正是把誤差成長控制住的關鍵。把這些列交換記為置換矩陣 P,分解就變成 P A = L U 而非 A = L U。額外成本只是整個消去過程的 O(n^2) 次比較,相對於 n^3 的算術可忽略不計。

部分樞紐選擇正是讓高斯消去法在浮點下可用的關鍵:它幾乎是每個稠密求解器(包括 LAPACK)的預設。有了它,乘數有界,且對應用中出現的矩陣,方法在實務上是向後穩定的。誠實的注意點是它並非理論保證——存在刻意構造的矩陣,使成長因子在部分樞紐下仍隨規模指數爆炸——但這類矩陣在真實問題中幾乎從不出現,因此部分樞紐被信賴為主力,而完全樞紐選擇則保留給罕見的多疑情況。

對列為 (0, 1) 與 (1, 1) 的矩陣,樞紐 a_11 = 0 會使純消去法崩潰;部分樞紐選擇交換兩列得列 (1, 1) 與 (0, 1),樞紐為 1,消去便順利進行。

一次列交換把不可能的零樞紐變成健康的樞紐——並把每個乘數限制在 1 以內。

部分樞紐選擇限制了乘數,但在最壞情況下並未限制成長因子;它在實務上穩定,是因為病態的成長對真實世界的矩陣幾乎從不發生。它只做列運算——不重排各行。

又称
partial pivoting (row pivoting)部分選主元列樞紐選擇