數值線性代數:直接法

完全樞紐選擇

部分樞紐選擇只從當前這一行挑最好的樞紐。完全樞紐選擇是更徹底的表親:每一步都在整個剩餘子矩陣中搜尋絕對值最大的元素,並透過同時交換一列與一行把它帶到樞紐位置。它是對樞紐最大限度謹慎的選擇,用於你想要對誤差成長最強防護的時候。

在消去第 k 步時,部分樞紐只比較第 k 行對角線下方的 n - k + 1 個元素;完全樞紐則比較右下方區塊全部 (n - k + 1)^2 個元素,找出全域最大值,並以一次列交換與一次行交換把它移到 (k, k)。由於行交換會重排未知數,記帳需要第二個置換:分解變成 P A Q = L U,其中 P 記列交換、Q 記行交換,最後須把解反置換回來。在完全樞紐下,成長因子可證明有界(至多多項式成長,遠慢於部分樞紐可能的指數最壞情況),因此它是數值上最穩健的稠密消去。

儘管保證更強,完全樞紐卻很少使用。原因是成本:每一步搜尋整個子矩陣增加 O(n^3) 次比較,與算術本身相當,遠多於部分樞紐的 O(n^2),而且它破壞了讓分塊 BLAS 變快的記憶體友善存取模式。既然部分樞紐對幾乎所有真實矩陣已夠穩定,完全樞紐的額外安全幾乎從不值得這個拖慢。折衷選項「車樞紐選擇(rook pivoting)」搜尋量介於兩者之間。所以:完全樞紐是課本中穩定性的黃金標準與有用的理論基準,但生產程式實際跑的是部分樞紐。

在第 1 步,完全樞紐選擇掃描 A 的每個元素,找出全域絕對值最大者,在消去前把它的列換到第 1 列、行換到第 1 行,並把兩者記入 P A Q = L U。

搜尋整個區塊保證成長因子有界——代價是 O(n^3) 次額外比較。

完全樞紐選擇最安全,但實務上幾乎不值其成本;部分樞紐選擇才是通用預設。注意它還需要行置換 Q,因此未知數被重排,最後必須還原。

又称
full pivotingcomplete pivoting (row and column)全選主元全樞紐選擇