王慧蓉,賈武艷
(長治學院 數學系,山西 長治 046011)
在許多科學和工程領域中,常常會遇到求解線性方程組的問題,而方程組解的準確性則由其性態所決定。病態線性方程組是在計算過程中經常要遇到的問題,因其系數矩陣的條件數很大,故會使得解嚴重失真。近年來,求解病態線性方程組的新算法不斷推出,文獻[1]采用了正則化方法求解病態方程組,文獻[2]提出了病態問題的增廣方程組法,文獻[3]給出了精細積分解法等,并給出了一些數值例子來說明有較好的效果。但這些算法中選取的數值例子比較單一,大多數都以Hilbert矩陣為例來研究病態線性方程組,而針對系數矩陣為范德蒙德矩陣的研究相對較少。
文章選取以系數矩陣為范德蒙德矩陣的病態線性方程組,借鑒文獻[4]提供的單參數迭代法和文獻[5]中的新主元加權迭代法,對病態線性方程組進行分析求解。結果表明選取的迭代方法切實可行,對分析此病態線性方程組有很大幫助。
選取n階的范德蒙德矩陣如下:

估計其階數與2-條件數的關系,分析其病態性。

表1 階數n與條件數
由表1的數據可知,隨著范德蒙德矩陣階數的增加,其2-條件數也越來越大,病態性也越來越嚴重參見文獻[6-7]。為更直觀地了解階數與條件數之間的關系,對條件數增長率進一步分析,如圖1所示。

圖1 2-條件數的對數(log(cond(H)))與階數n的關系圖
從圖1中可以看出,當范德蒙德矩陣的階數增加時,其對應的條件數在不斷增加,病態程度也越嚴重。
設病態線性方程組為:

其中系數矩陣A為范德蒙德矩陣,

即

對于上述線性方程組,取n=10,A的條件數為cond2(A)≈1.2×1014,可以看出此時矩陣A是嚴重病態的矩陣。用單參數迭代法對這個線性方程組進行求解,其中單參數迭代算法的參數ρ=1.000001(經過多次驗證所得),得到表2的數值結果。
由表2可得:單參數迭代法對此病態線性方程組的求解效果比較好,迭代次數上有比較明顯的優勢,此方法對求解一般的病態方程組是非常有效的。

表2 解的近似值(n=10,ρ=1.000001)
設病態線性方程組:

其中系數矩陣為范德蒙德矩陣,

下面用新主元加權迭代法對這個線性方程組進行求解,得到的結果如表3所示。

表3 解的近似值(n=10加權因子為ρ=1.000001)
由表3的數據可知,此方法相較于文獻[4]和文獻[8]中的方法,迭代次數明顯減少,收斂速度也更快,解的精確度也非常高。在經過多次數值實驗選取合適的加權因子后,對求解階數不高時的病態線性方程組是有效的。
下面進一步分析加權因子取值的不同對此病態線性方程組解的影響。

表4 加權因子與絕對誤差
從表4可以看出,對于加權因子ρ=0.0001,隨著階數的增加,絕對誤差在增大。當階數增加到12時,在重新選擇ρ=0.0001的基礎上,發現絕對誤差繼續增大,說明本方法還有待進一步改進。
由上述研究結果可知,方法一(單參數迭代法)收斂速度快,是比較實用和有效的算法。方法二(新主元加權法)降低了矩陣的條件數,提高了收斂速度和精度。通過Mat l a b軟件編程并運算以系數矩陣為范德蒙德矩陣的病態線性方程組可知,這兩種方法都有較好的求解效果。但是對于矩陣元素過大的病態線性方程組,加權因子ρ應如何更合理地選取,還有待進一步研究,以提高算法的有效性。