-
病態方程組
鎖定
由實際問題得到的方程組的係數矩陣或者常數向量的元素,本身會存在一定的誤差;這些初始數據的誤差在計算過程中就會向前傳播,從而影響到方程組的解。病態方程組是指因係數的很小改變卻導致解改變很大的方程組,稱相應的係數矩陣A為病態矩陣。病態方程組對任何算法都將產生數值不穩定性。對病態方程組有四種處理原則:採用高精度的算術運算;採用預處理方法;採用特殊的數值解法或尋找出現病態的原因,改變原問題的提法。
病態方程組預備知識
病態方程組擾動
病態方程組條件數
病態方程組定義
病態方程組是指因係數的很小改變卻導致解改變很大的方程組。病態的另外一個解釋是很大範圍的解都能近似滿足方程組。因為舍入誤差會使係數有一些小的改變,那麼對於病態方程組,這些人為的改變會導致解有很大的誤差。
[2]
病態方程組表述一
設方程組為Ax=b,係數矩陣A和常數向量b的擾動分別記為:
和
,如果
和
很小,而
很大,則稱方程組Ax=b為病態(ill-conditioned)方程組,稱係數矩陣A為關於求解方程組或求逆的病態矩陣;反之,如果
和
微小時,
也很微小,則稱方程組Ax=b為良態(well-conditioned)方程組,稱係數矩陣A為關於求解方程組或求逆的良態矩陣。病態方程組對任何算法都將產生數值不穩定性(如用LU分解法求解線性方程組時,更換主元有可能使解的精確度大大下降)。
[1]
病態方程組表述二
求解線性方程組Ax=b時,設A是n階非奇異矩陣,當條件數Cond(A)比較大時,A和b的小擾動會引起解的較大誤差,所以條件數Cond(A)刻畫了方程組Ax=b的性態。如果條件數比較大,就説方程組是“病態”的;如果條件數比較小,就説方程組是“良態”的;當然,病態和良態是相對的。
[1]
病態方程組典例
設有方程組:
易得其精確解為
。
若常數項有一個擾動,得到方程組:
則其解為
。
可見A或b中元素的0.0001的微小變化會導致方程組解的巨大差異,這樣的方程組就是“病態”方程組,可以利用範數來描述向量和矩陣的擾動誤差。
[3]
病態方程組判斷和發現
病態方程組一般方法
病態方程組特殊情況
在特殊情況下,可以依據下面出現的情況來判斷:
(1)當det(A)相對來説很小或者A的某些行(或列)近似線性相關時,Ax=b可能是病態的;
(2)如果用選主元消去法求解Ax=b,在A的約化過程中出現小的主元,Ax=b可能是病態的;
(3)當解Ax=b時出現一個很大的解,Ax=b可能是病態的;
病態方程組四種處理原則
若發現Ax=b可能是病態的.通常有四種處理原則:
採用高精度的算術運算
採用預處理方法
對病態線性方程組Ax=b進行預處理,如取P,Q為對角陣,稱為平衡方法,即當係數矩陣A的元素數量級相差很大時,可採用行均衡或列均衡方法,這時矩陣A的條件數可能得到改善。所謂行均衡,是在解Ax=b之前,對A的每一行都乘以適當的數,使A所有的行按照某種範數大體上有相同的長度。
[4]
採用特殊的數值解法
找病因改問題