數值分析中,一個數值問題的條件數是該問題在數值計算中的容易程度的衡量,也就是該問題的適定性。一個低條件數的問題稱為良置的,而高條件數的問題稱為病態(或者說非良置)的。
定義
矩陣A的條件數等于A的范數與A的逆的范數的乘積,即cond(A)=‖A‖·‖A-1‖。這個定義依賴于范數的選取,對應矩陣的不同范數,相應地可以定義不同的條件數。
矩陣條件數
一次方程Ax=b的條件數反映了數值求解得到的解x的精確度的一個上限。條件數還會放大b中存在的誤差,這個放大的程度取決于b的數據的準確性。矩陣條件數通常在數值線性代數中出現,定義為κ(A)=‖A-1‖·‖A‖。若‖·‖是l2矩陣范數,則κ(A)=σ_max(A)/σ_min(A),其中σ_max(A)和σ_min(A)分別是A的最大和最小奇異值。如果A是正規矩陣,則κ(A)=|λ_max(A)/λ_min(A)|,其中λ_max(A)和λ_min(A)分別是A的最大和最小(根據模數)特征值。對于酉矩陣,κ(A)=1。若‖·‖是l∞矩陣范數且A是下三角矩陣,非奇異(即a_ii≠0 ?i),則κ(A)≥(max_i(|a_ii|)/min_i(|a_ii|))。
其它條件數
條件數的概念不僅限于矩陣問題,它也適用于奇異值分解、多項式求根、特征值計算等多種數值問題。通常,如果一個數值問題是適定的,它可以表達為一個函數f,將數據(一個實數的m元組x)映射到解(一個實數的多元組y)。條件數定義為解中的相對誤差的半徑與數據中的相對誤差的比的最大值,取遍整個問題的定義域。如果f是可微的,條件數可以近似表示為|f'(x)/f(x)|·|x|,其中ε是問題中數據的偏差的某個合理的小數值。
函數
cond(A,1)、cond(A)或cond(A)表示矩陣A的條件數,具體取決于所使用的范數。
舉例
比如線性方程組
〔1 2 [x = [4 3.999 1] y] 7.999] 的解是(x,y)=(2,1)
而 〔1 2 [x = [4.001 3.999 1] y] 7.998] 的解是(x,y)=(-3.999,4.000)
可見b很小的擾動就引起了x很大的變化,這就是A矩陣條件數大的表現。一個極端的例子,當A奇異時,條件數為無窮,這時即使不改變b,x也可以改變。奇異的本質原因在于矩陣有0特征值,x在對應特征向量的方向上運動不改變Ax的值。如果一個特征值比其它特征值在數量級上小很多,x在對應特征向量方向上很大的移動才能產生b微小的變化,這就解釋了為什么這個矩陣為什么會有大的條件數,事實上,正規陣在二范數下的條件數就可以表示成 abs(最大特征值/最小特征值)。
參考資料 >