條件數

條件數

數值分析中,一個問題的條件數是該數量在數值計算中的容易程度的衡量,也就是該問題的適定性。一個低條件數的問題稱為良態的,而高條件數的問題稱為病態(或者說非良態)的。

條件數是線性方程組Ax=b的解對b中的誤差或不確定度的敏感性的度量。數學定義為矩陣A的條件數等於A的範數與A的逆的範數的乘積,即cond(A)=‖A‖·‖A的逆‖,對應矩陣的3種範數,相應地可以定義3種條件數。

基本介紹

  • 中文名:條件數
  • 外文名:condition number
  • 表達式:C(A)=||A|| ||A^{-1}||(A為Ax=b的係數矩陣)
  • 套用學科:數學
  • 適用領域範圍:數學,套用數學,計算數學
  • 適用領域範圍:方程,線性方程組,數值解,算法
定義,矩陣條件數,其它條件數,Matlab,舉例,

定義

條件數定義為:矩陣的範數,乘以矩陣的逆矩陣的範數。
線性代數的分析可知,矩陣的條件數總是大於1.正交矩陣的條件數等於1,奇異矩陣的條件數為無窮大,而病態矩陣的條件數則為比較大的數據。

矩陣條件數

例如,線性方程Ax=b的條件數給出了數值求解得到一個解 x有多不精確的一個上限。
條件數也會增大b中存在的誤差。這個放大的程度可以使得一個低條件數的系統(通常是件好事情)變得不精確而使得一個高條件數的系統(通常是件壞事情)變得精確,這取決於b的數據知道得多清楚。對於這個問題,條件數定義為
在任何自洽的矩陣範數中。這個數字經常在數值線性代數中出現,因而單獨有個名字,稱為矩陣條件數
當然,這個定義依賴於範數的選取。
矩陣範數
其中
分別是A的極大和極小奇異值。因此
若A是正規矩陣
分別是A的極大和極小(根據模數)特徵值
若A是酉矩陣
矩陣範數而 A是下三角矩陣,非奇異(也即
)則:

其它條件數

奇異值分解,多項式求根,特徵值和其它許多問題的條件數也可以有定義。
通常,如果一個數值問題是適定的,它可以表達為一個函式 f映射它的數據(一個實數的m元組x)到它的解(一個實數的 n元組y)。
它的條件數則定義為解中的相對誤差的半徑和數據中的相對誤差的比的最大值,取遍整個問題的定義域:
其中
是問題中的數據的偏差的某個合理的小數值。
如果 f也是可微的,這可以近似的表示為

Matlab

cond(A,1):1範數
cond(A,2)或cond(A):2範數
cond(A,inf):無窮範數
condest(A)用來計算方陣1範數條件數的下界 rcond(A)用來計算矩陣逆的條件數,數值接近1時為良好條件矩陣,接近0時為壞條件矩陣
條件數事實上表示了矩陣計算對於誤差的敏感性。對於線性方程組Ax=b,如果A的條件數大,b的微小改變就能引起解x較大的改變,數值穩定性差。如果A的條件數小,b有微小的改變,x的改變也很微小,數值穩定性好。它也可以表示b不變,而A有微小改變時,x的變化情況。

舉例

比如線性方程組
〔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(最大特徵值/最小特徵值)。

相關詞條

熱門詞條

聯絡我們