矩陣條件數(matrix condition number)
當問題是「求解 A x = b」——找出矩陣 A 映射到向量 b 的那個 x——時,我們需要一個衡量整個線性系統的條件數。矩陣條件數 kappa(A) 告訴你,求解這種系統會把資料 b(或 A 本身)的誤差放大多少。kappa(A) 小表示系統穩定可信;kappa(A) 巨大則表示矩陣接近奇異,解非常危險。
定義是 kappa(A) = ||A|| 乘以 ||A^{-1}||,使用某個矩陣範數。用 2-範數時幾何意義最清楚:kappa(A) 等於 A 的最大奇異值除以最小奇異值,sigma_max / sigma_min。想像 A 把單位球拉伸成一個橢球;kappa(A) 就是它最長軸與最短軸的比值——也就是拉伸有多不均勻。kappa 為 1 表示 A 的作用像旋轉或均勻縮放(完美良態);最小奇異值接近零會讓 kappa 趨向無限大,意味著 A 幾乎把某個方向壓垮成零、幾乎無法被還原。
實務上的回報是一個誤差界:計算出的解 x 的相對誤差,至多約為 kappa(A) 乘以 b 的相對誤差。所以若 kappa(A) 約為 10^8,即使用完美的求解器,也預期會損失 16 位雙精度數字裡的大約 8 位。這就是為什麼數值函式庫會在解之外附上 kappa(A) 的估計(LAPACK 的 RCOND):它是你的警告標籤。注意 kappa(A) 永遠至少為 1——沒有任何矩陣能比完美良態更好。
5×5 的希爾伯特矩陣(元素為 1/(i+j-1))的 kappa(A) 約為 4.8 x 10^5;10×10 的 kappa 約為 1.6 x 10^13——尺寸超過約 12 時,用雙精度求解希爾伯特系統就毫無希望,因為最小奇異值幾乎消失。
一個教科書級的病態矩陣:小巧、看似無害,卻在數值上有毒。
kappa(A) 取決於所選的範數,但所有常用選擇對於矩陣是良態還是病態的判斷一致。它衡量的是「求解 A x = b」的條件性,而不是分解 A 的難度。