數值分析--第三章--迭代法


迭代一般方程:

 本文實例方程組: 

一.jacobi迭代法

從第i個方程組解出xi。

 線性方程組Ax=b,先給定一組x的初始值,如[0,0,0],第一次迭代,用x2=0,x3=0帶入第一個式子得到x1的第一次迭代結果,用x1=0,x3=0,帶入第二個式子得到x2的第一次迭代結果,用x1=0,x2=0帶入第三個式子得到x3的第一次迭代結果。得到第一次的x后,重復第一次的運算。

轉化成一般的形式:(其中L是A的下三角部分,D是A的對角元素部分,U 是上三角部分)

 

 

得到迭代公式:

 

其中的矩陣B和向量f如何求得呢?

 

其實,矩陣B的計算也很簡單,就是每行的元素/該行上的對角元素

 

 二.Gauss-Seidel迭代法【收斂速度更快】

這個可以和jacobi法對比進行理解,我們以第二次迭代為例(這里的第一次迭代結果都用一樣的,懶得去換)

   從上表對比結果可以看出,Jacobi方法的第二次迭代的時候,都是從第一次迭代結果中,獲取輸入值。

上一次迭代結果[2.5,3.0,3.0],將這個結果帶入上面式子1,得到x1=2.88,;將[2.5,3.0,3.0]替換成[2.88,3.0,3.0]帶入第二個式子的運算,這里得到x2=1.95,所以把[2.88,3.0,3.0]替換成[2.88,1.95,3.0]輸入第三個式子計算X3=1.0.這就完成了這一次的迭代,得到迭代結果[2.88,1.95,1.0],基於這個結果,開始下一次迭代。

特點:jacobi迭代法,需要存儲,上一次的迭代結果,也要存儲這一次的迭代結果,所以需要兩組存儲單元。

  而Gauss-Seidel迭代法,每一次迭代得到的每一個式子得到的值,替換上一次迭代結果中的值即可。所以只需要一組存儲單元。

 轉化成一般式:

注意:第二個式子中的是k+1次迭代的第一個式子的值,不是第k次迭代得值。

 

 

計算過程同jacobi迭代法的類似

三.逐次超松弛法SOR法

上面僅僅通過實例說明,Jacobi和Seidel迭代的運算過程。並沒有構造其一般的計算公式。

Gauss-Seidel迭代法的一般公式:

.......................式1.1

 對於這個公式,怎么看着都比較別扭,分解一下就是

 將式1.1改寫:

 .......................式1.2

同樣分解一下:

注意:左側的x是本次(k+1)需要求的迭代結果,右側的x是上次(k)的迭代結果。 

.......................式1.3

 .......................式1.4

分解一下:

松弛因子,當松弛因子=1時,就是seidel迭代法,當調節松弛因子時,可以加快或減緩迭代速度。(和深度學習中的學習因子一個意思)

 改寫成矩陣形式:

對矩陣公式進行實例化分解之后,能夠直觀的理解,這個公式。

四.迭代的收斂條件

從上面的實例,不斷的迭代,最終可以獲得需要的解。這是在給點的線性方程組的迭代方程收斂。當然,也存在不收斂的情況,最終得不到正確的解。

其中:

譜半徑:

1范數:

 

 ∞范數:

 

 嚴格對角占優:

正定(順序主子式都>0):

 

 

誤差限:

 

其中范數||B||<1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM