數(shù)值分析教教案21_第1頁
數(shù)值分析教教案21_第2頁
數(shù)值分析教教案21_第3頁
數(shù)值分析教教案21_第4頁
數(shù)值分析教教案21_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Gauss-Seidel〔高斯-賽德爾迭代法〕1.Gauss-Seidel迭代原理Jacobi迭代公式〔5-9〕用方程組表示為〔5-13〕因此,在Jacobi迭代法的計算過程中,要同時保存兩個近似解向量和。如果把迭代公式改成以下形式〔5-14〕即每算出新近似解的一個分量,再算下一個分量時,用新分量代替老分量進行計算。這樣,在整個計算過程中,只需要個單元存貯近似解分量。選取初始向量,用迭代公式〔5-14〕產(chǎn)生近似解序列,這種方法叫Gauss-Seidel迭代法,式〔5-14〕為Gauss-Seidel迭代法的計算公式。公式〔5-14〕用矩陣表示為〔5-15〕其中移項可得因為,故存在,上式可改寫成〔5-16〕如果用矩陣來表法,記那么于是〔5-17〕將式〔5-17〕代入式〔5-16〕這是Gauss-Seidel迭代公式的矩陣表示,式中矩陣為迭代矩陣。2.Gauss-Seidel算法〔1〕輸入,維數(shù),誤差限,最大容許迭代次數(shù)?!?〕置?!?〕計算:〔4〕假設,輸出,停機;否那么轉〔5〕?!?〕假設,置,轉〔3〕;否那么輸出失敗信息,停機。用Gauss-Seidel迭代法解例5-4。仍取,按式〔5-14〕計算得如此繼續(xù)下去,計算結果見表5-2。00.00000.00000.000017.20009.020011.6440210.430811.671912.8205310.931311.957212.9778410.991311.994712.9972510.998911.999312.9996610.999911.999913.0000計算結果說明,用Gauss-Seidel迭代法求解例5-4中的方程組比Jacobi迭代法效果好,迭代5次所得到的結果與例5-4中迭代9次所得的結果相相仿。事實上,對有些問題Gauss-Seidel迭代法確實比Jacobi迭代法收斂的快,但也有Gauss-Seidel迭代比Jacobi迭代收斂得慢,甚至還有Jacobi迭代收斂,Gauss-Seidel迭代發(fā)散的情況。3Gauss_Seidel迭代法的MATLAB實現(xiàn)function[x,k,flag]=Gau_Seid(A,b,delta,max1)%求解線性方程組的迭代法,其中,%A為方程組的系數(shù)矩陣;%b為方程組的右端項;%delta為精度要求,缺省值為1e-5;%max1為最大迭代次數(shù),缺省值100;%x為方程組的解;%k為迭代次數(shù);%flag為指標變量flag='OK!'表示迭代收斂到指標要求,%flag='fail!'表示迭代失敗.ifnargin<4max1=100;endifnargin<3delta=1e-4;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);flag='OK!';while1y=x;fori=1:nz=b(i);forj=1:nifj~=iz=z-A(i,j)*x(j);endendifabs(A(i,i))<1e-10|k==max1falg='Fail!';return;endz=z/A(i,i);x(i)=z;endifnorm(y-x,inf)<deltabreak;endk=k+1;end【5-6】用Gauss_Seidel迭代法求解線性方程組。解:在命令窗口輸入系數(shù)矩陣和右端項:>>A=[10-2-2;-210-1;-1-23],b=[10.51]'回車得到:A=10-2-2-210-1-1-23b=1.00000.50001.0000再輸入:>>[x,k,flag]=Gau_Seid(A,b)回車得到:x=0.2311k=6flag=OK!0.14700.5084這說明經(jīng)過6次迭代得到滿足精度要求的近似解。逐次超松弛迭代法1.逐次超松弛迭代原理為了加速迭代過程的收斂,我們通過引入?yún)?shù),在Gauss-Seidel迭代的根底上得到一種新的迭代法。記,其中由式〔5-14〕算出。于是有假設將看作修正項,那么Gauss-Seidel迭代的第次近似解以此項修正后得到新的近似解。松弛法是將乘上一個參數(shù)因子作為修正項而得到新的近似解,其具體公式為即〔5-19〕按式〔5-19〕計算方程組〔5-5〕的近似解序列的方法稱為松弛法,稱為松弛因子。當時稱為低松弛,是Gauss-Seidel迭代,時稱為超松弛法,簡稱SOR法〔SuccessiveOver-Relaxation〕。2.松弛迭代算法〔1〕輸入,維數(shù),誤差限,最大容許迭代次數(shù)。〔2〕置。〔3〕計算:〔4〕假設,輸出,停機;否那么轉〔5〕?!?〕假設,置,轉〔3〕;否那么輸出失敗信息,停機。【5-7】取,用超松弛法求解方程組。解由迭代公式〔5-19〕,有將代入上式得如此繼續(xù)下去,計算結果如表5-3所示。01.00001.00001.000011.00001.00001.560021.00001.39201.618431.27441.46821.640441.21801.41361.593451.20231.39161.606861.19321.40341.600771.20511.40271.601681.19991.40001.599491.20001.39961.6001所以,方程組有解與精確解比擬,誤差為松弛法的迭代公式〔5-19〕的矩陣表示為〔5-20〕因為,故存在,從而有存在,式〔5-20〕可改寫成〔5-21〕松弛法的迭代矩陣為松弛因子的選取對收斂速度影響極大,但目前尚無可供實用的計算最正確松弛因子的方法。實際計算時,通常是根據(jù)系數(shù)矩陣的性質及實際計算經(jīng)驗,通過試算來確定松弛因子的值。特別當為對稱正定的三對角時,有其中為Jacobi迭代矩陣的譜半徑。為了提高計算效率,改善收斂性,又產(chǎn)生了對稱超松弛法,簡稱SSOR法。對稱超松弛法實質上是將同等看待,連續(xù)兩次使用SOR迭代公式得到。它的優(yōu)點是對某些使用SOR法不收斂的問題,可以構造出收斂的SSOR法;松弛法對松弛因子十分敏感,SSOR法那么不敏感;充分利用內(nèi)外交換時所得到的信息,提高計算效率。3.超松弛迭代法MATLAB實現(xiàn)function[x,k,flag]=SOR(A,b,ep,w,max1)%求解線性方程組的迭代法,其中,%A為方程組的系數(shù)矩陣;%b為方程組的右端項;%delta為精度要求,缺省值為1e-5;%max1為最大迭代次數(shù),缺省值100;%w為超松超松弛因子,缺省為1;%x為方程組的解;%k為迭代次數(shù);%flag為指標變量flag='OK!'表示迭代收斂到指標要求,%flag='fail!'表示迭代失敗.ifnargin<5max1=100;endifnargin<4w=1;endifnargin<3ep=1e-5;endn=length(A);k=0;x=zeros(n,1);y=zeros(n,1);flag='OK!';while1y=x;fori=1:nz=b(i);forj=1:nifj~=iz=z-A(i,j)*x(j);endendifabs(A(i,i))<1e-10|k==max1flag='fail';return;endz=z/A(i,i);x(i)=(1-w)*x(i)+w*z;endifnorm(y-x,inf)<epbreak;endk=k+1;end【5-8】用松弛迭代法求線性方程組。解:在命令窗口輸入系數(shù)矩陣和右端項:>>A=[2-100;-12-10;0-12-1;00-12],b=[1010]'回車得到:A=2-100-12-100-12

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論