數值分析讀書筆記(3)求解線性代數方程組的迭代法

數值分析讀書筆記(3)求解線性代數方程組的迭代法

1.基本迭代法及其構造

考慮方程組Ax=b,其中A屬於n*n維的矩陣空間,b和x屬於n維向量空間,一般來說我們需要從這個隱式的方程組轉變成顯示的等價方程,一般具有形式

x=ϕ(x)
,這樣的方程爲不動點方程,我們可以通過不斷迭代,計算出等式右端然後賦值給變量x

對於Ax=b而言,如果我們簡單取A=I-B,可以得到等價的x=Bx+b,從而構造迭代格式

x(k+1)=Bx(k)+b

需要注意的是,迭代法不一定會是收斂的,也就是說x不一定會收斂到某個值,這樣並不是我們所希望的,故後面會討論一下迭代法的收斂性,我們先來談談迭代法的構造,從迭代格式中可以看到,我們對矩陣A進行了一次分裂,分裂的格式顯然不是唯一的,我們將採取A=M-N這樣一種分裂方法,可以得到線性的不動點方程

x=Bx+f,B=M1N=IM1A,f=M1b

不同的分裂法將使我們的B和f不一致,我們通常將A分裂成三個部分A=D-L-U,其中D爲對角矩陣,L和U分別是下三角和上三角矩陣,這裏需要注意一下符號的不同,L和U的元素都是原矩陣上三角和下三角元素符號的相反數

下面通過這樣的一種分裂方式,我們介紹幾種迭代形式,首先是Jacobi迭代法(同步迭代)

注意到線性迭代中的M和N,在Jacobi迭代中,我們令M=D, N=L+U,構造出迭代格式,即

(1)Ax=((D)(L+U))x=b(2)Dx=(L+U)x+b(3)x=D1(L+U)x+D1b(4)x(k+1)=D1(L+U)x(k)+D1b(5)x(k+1)=BJx(k)+fJ

直觀上來看Jacobi迭代,就是把方程n行對應的x保留,其餘維度的x移到方程的左端,用這n維的左端的式子來迭代更新n個維度的x

那麼這樣看就可以理解Jacobi迭代爲什麼是同步迭代了,因爲所有的維度的x必須全部更新完成之後纔可以進行下一步的迭代,由此我們介紹下一種迭代,Gauss-Seidel迭代(異步迭代)

在Gauss-Seidel迭代中,我們和上面對A進行同樣的分裂方式,只不過在M,N的選取上做出了改變,我們令M=D-L,N=U,構造出迭代格式,即

(6)Ax=((DL)(U))x=b(7)(DL)x=Ux+b(8)x=(DL)1Ux+(DL)1b(9)x(k+1)=(DL)1Ux(k)+(DL)1b(10)x(k+1)=BGx(k)+fG

直觀來看Gauss-Seidel迭代,和Jacobi一樣就是把方程n行對應的第n個x保留,其餘的x移到方程的左端,只不過在我們更新第k個的時候會利用前面迭代更新完成了的前k-1個x進行帶入計算後面的n-k個x仍然使用初始值,也就是一種異步的思想

在實際中,我們使用Jacobi迭代或者是Gauss-Seidel迭代都可能會出現不收斂或者收斂速度比較慢這樣的情況,我們是不是可以試着去構造一種帶參數的迭代方法,這樣我們就能夠利用參數的調整來實現對整個迭代方法調整已增加其收斂速度等,下面介紹SOR(Successive over relaxation method)迭代

SOR迭代的基本思想是,在以求出第k個x值的基礎上用Gauss-Seidel解出第k+1個x值,然後利用這k+1個x的值和第k個x的值的線性組合來的出更好的近似解

同樣的我們利用和Jacobi,Gauss-Seidel迭代方法一樣的分裂方法,對A進行分裂,注意到一種矩陣的記法

(11)Dx(k+1)=(1ω)Dx(k)+ω(b+Lx(k+1)+Ux(k))(12)=(1ω)Dx(k)+ωb+ωLx(k+1)+ωUx(k)

注意到等式右端的第一部分,即(1ω)Dx(k) ,這一部分其實就是之前的上一步的值

等式的第二部分就是類似Gauss-Seidel迭代得到的解然後乘上一個鬆弛因子(ω

通過對上式進行化簡,我們可以簡單的得到

(13)(DωL)x(k+1)=(1ω)Dx(k)+ωb+ωUx(k)(14)=((1ωD)ωU)x(k)+ωb

對於DωL 這個矩陣我們知道,當ω 取任意值的時候,總爲非奇異矩陣,也就是所總存在逆矩陣,所以上式可以繼續化簡(證明過程只需將矩陣的形式畫出來,由於對角線元素不等於0,即可得證)

得到x(k+1)=(DωL)1((1ωD)ωU)x(k)+ω(DωL)1b

所以我們可以根據上式建立起來SOR的迭代格式

x(k+1)=Bωx(k)+fω

其中,Bω=(DωL)1((1ωD)ωU),fω=ω(DωL)1b

注意到SOR中的Guass-Seidel迭代也有區分向前或者向後Gauss-Seidel迭代,由此可以引申出SSOR(Sysmetrical Successive Over Relaxation method),此外還有Richardson迭代以及塊迭代的方法,這裏暫時不做出說明,以後補充

2.迭代法的收斂性分析

我們利用上面的知識可以構造迭代格式來進行迭代,但是這裏就出現一個問題,所有的迭代方法都是可行的嗎?這裏指的可行可能是收不收斂,收斂的快慢等等,所以我們有必要對其進行規範化,系統化的分析

先來看看一般的迭代格式

x(k+1)=Bx(k)+f

我們可以從n=0一直寫到n=k+1,這樣來看就有

x(k+1)=B(k+1)x(0)+(Bk++B+I)f

我們必須研究矩陣B 是否會變的越來越大,或者趨近於一個常數矩陣B ,以及x 是否去趨近於x

這裏引入誤差向量

e(k+1)=x(k+1)x

只要誤差向量趨近於0即可收斂,這裏做個簡單的計算

e(k+1)=x(k+1)x=(Bx(k)+f)(Bx+f)=B(x(k)x)=Be(k)=B(k+1)(x(0)x)

下面給出收斂定理

B=(bij)n×n , 則 BkO(k) 的充要條件是B 的譜半徑滿足

ρ(B)<1

這裏直接給出這個收斂定理,並沒有給出證明,具體的證明思路爲利用Jordan標準型以及極限關係可以證明,後續等待補充

繼續不加證明地給出一個定理

設方程組Ax=b 的不動點方程組爲x=Bx+f ,則對於任意初始近似向量x(0) 與任意常數向量f ,求解Ax=b 的基本迭代法x(k+1)=Bx(k)+f 收斂的充要條件爲

ρ(B)<1

一般來說我們通過上述幾個定理就可以通過計算矩陣的譜半徑,也就是先計算最大的特徵值,然後判斷其是否大於1來判別一個基本迭代格式是否是收斂的,但是對於維度等級十分高的矩陣,我們可能得尋求一種較爲簡單的判別方法,下面我們不加證明地給出利用範數來判別的一個定理

求解Ax=b 的基本迭代法x(k+1)=Bx(k)+f 收斂的充分條件爲

B<1

其中 爲任意一種矩陣範數

3.誤差估計

對於迭代格式的收斂性我們已經討論過了,下面給出誤差的估計,主要是用來計算相應到達誤差範圍相應迭代次數的值,下面給出一個定理

設求解 Ax=b 的基本迭代法爲x(k+1)=Bx(k)+f , x(0) 爲初始迭代向量,且迭代矩陣的一矩陣範數B=q<1 , 則

x(k)xB1Bx(k)x(k1)

x(k)xBk1Bx(1)x(0)

該定理證明可以利用之前所介紹的Banach引理來證明

用上面的式子,可以求解出來精度e(k)ϵ 的迭代步數,令步數爲k,B的範數爲q,則有

kϵ(1q)x(0)x(1)|ln(q)|

4.關於幾類特殊矩陣進行迭代法的收斂性

首先我們來看看對角佔優矩陣進行基本迭代法的收斂性

對角佔優矩陣可以簡單的劃分成嚴格對角佔優弱對角佔優

嚴格對角佔優是指對角線上的元素的絕對值比相同行其他元素的絕對值的和都大,這裏不存在等號的條件
弱對角佔優是嚴格對角佔優的基礎上添加等號的條件,也就是說對角線上的元素的絕對值大於等於相同行其他元素的絕對值的和

我們直接不加證明的給出一個定理:

對於嚴格對角佔優矩陣和弱對角佔優矩陣,我們使用任意的初始向量,構造Jacobi迭代格式或者Gauss-Seidel迭代格式,結果均收斂

接下來,我們看一下另外一種特殊矩陣,即對稱正定矩陣

給出一個定理

設A對稱,且對角元素爲正,則方程組Ax=b的Jacobi迭代格式收斂的充分必要條件就是A和2D-A均正定,其中D爲A生成的對角矩陣

同樣的,我們對於Gauss-Seidel迭代也給出一個定理

設A對稱正定,則方程組Ax=b的Gauss-Seidel迭代收斂

對SOR的迭代格式,比較複雜,對於某些特定的矩陣有着一定規律,給出一個定理

對任意的ARn×n ,如果它的對角元素皆非0,則SOR迭代的迭代矩陣Bω 的譜半徑ρ(Bω) 與鬆弛係數ω 有着下列關係

ρ(Bω)|(1ω)|

由上述定理可以推出,方程組使用SOR方法收斂的一個必要條件

0<ω<2

反過來,也有一個定理

ARn×n ,且A 對稱正定,如果0<ω<2 , 則求解Ax=b 的SOR迭代格式收斂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章