線性方程組之迭代法篇

2021-09-24 23:43:58 字數 1355 閱讀 4757

不管哪一種數值演算法,其設計原理都是將複雜轉化為簡單的重複,或者說,通過簡單的重複生成複雜,在演算法設計和演算法實現過程中,重複就是力量[1]。    

----題記

一般地,線性方程組可以表達為

ax = b

其中,a稱為係數矩陣,b稱為右端項,x為待求的未知數向量。 

迭代法的適用場合。如果未知數個數不多的話,用消去法(包括各種選主元的方式)就可以完美地解決,但是實際情況中,如有限元方程中,係數矩陣常常是大規模稀疏矩陣(所謂稀疏,指的是矩陣中只有少量的元素值非零),這個時候再使用消去法的話(其實,它可以轉化為矩陣形式的 lu 分解),就會破壞係數矩陣的稀疏性,導致計算量激增。

先看兩種簡單情況下的結果。如果係數矩陣為對角陣的話,那麼方程可以很容易地求解出來;稍微複雜一些,如果係數矩陣為下三角型矩陣的話,那麼可以先求出第乙個未知數,再求出第二個未知數,一直順序進行下去,直至求出最後乙個未知數。

在 [1] 中(p139)提到,求解線性方程組的迭代法,其實質是將所給方程組逐步地對角化或三角化,即將線性方程組的求解過程加工成對角方程組或三角方程組求解過程的重複。當加工成對角方程組求解過程的重複時,對應於 jacobi 迭代法;當加工成三角方程組求解過程的重複時, 對應於 gauss-seidel 迭代法。進一步地,如果對 gauss-seidel 迭代法使用鬆弛技術(將兩個相伴隨的近似值進行加權來更好地逼近目標值的方法,該技術的關鍵在於加權係數即鬆弛因子的選取),就得到了超鬆弛 (sor) 迭代方法(這裡的「超」是指加權的係數的取值可以不必在[0,1]範圍內);考慮到對稱正定的係數矩陣,由於其上三角矩陣是其下三角矩陣的轉置,針對上三角形式,使用 sor迭代方法,接著針對下三角形式,類似地可以使用 sor 迭代方法,和前者不同僅僅是未知數迭代的順序,後者採用的是倒序的方式。額,既然兩次使用 sor 迭代方法,那麼自然地就將其稱之為ssor 迭代法[2]。oh,no! 其實不是這樣子滴,ssor 裡面的第乙個 s 是對稱的(symmetric)這個單詞的首字母。將ssor迭代法中的矩陣用作共軛梯度法中的預處理矩陣,就可以得到相應的ssor-pcg方法[3]。

迭代法是否奏效,即迭代序列能否逼近問題的真解,就需要考慮收斂性問題了。粗略地分析,從前後兩個序列的差來看,自然要求它們之間的距離(可以給出不同形式定義的,常見的有1-範數,2-範數以及無窮範數)越來越小,直至趨於 0。注意到,迭代的序列是乙個向量序列,借用數值串行的結論(考慮乙個等比數列a_n=k*a_趨於0,那麼k的絕對值必須小於1),這裡要求迭代矩陣的範數(可以將其看成數的絕對值)小於1。 

求解線性方程組 Jacobi迭代法

求解線性方程組 jacobi迭代法 求解線性方程組 jacobi迭代法 include include using namespace std 二維陣列動態分配模板 template t allocation2d int m,int n return a 一維陣列動態分配模板 template t ...

jacobi迭代法求解線性方程組

首先將 方程組中的 係數矩陣 a分解成三部分,即 a l d u,如圖1所示,其中 d為對角陣,l為下三角矩陣,u為上三角矩陣。之後確定迭代格式,x k 1 b x k f 這裡 表示的是上標,括號內數字即迭代次數 如圖2所示,其中 b稱為迭代矩陣,雅克比迭代法中一般記為 j。k 0,1,再選取初始...

解線性方程組的迭代法 md

參閱中科大數學系教案 a 11x1 a1 nxn b1ma n1x1 a nnxn bn x1 1a11 a12x 2 a1nx n b1 x2 1a22 a21x 1 a23 x3 a1n xn b 2 mx n 1 ann an1x 1 ann 1xn 1 bn xk 1 1x k 1 2 mx...