jacobi迭代法-實驗-MATLAB程序-數值分析_第1頁
jacobi迭代法-實驗-MATLAB程序-數值分析_第2頁
jacobi迭代法-實驗-MATLAB程序-數值分析_第3頁
jacobi迭代法-實驗-MATLAB程序-數值分析_第4頁
jacobi迭代法-實驗-MATLAB程序-數值分析_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

求線性方程組得近似解。精確解為x*=[3,2,1]’。解:對方程進行移項就得記為Ax=b,或寫為x=B0x+f,其中取初始值,代入原方程組可得再將把它代入可得.反復利用這個計算過程,得到一向量序列和一般的計算公式(迭代公式) 簡寫為迭代到第10次有從此例看出,由迭代法產生的向量序列x(k)逐步逼近方程組的精確解x*. 6.1常用迭代法定義1(ⅰ)對于給定的方程組x=Bx+f,用公式逐步代入求近似解的方法稱為迭代法(或稱為一階定常迭代法,這里B與k無關).(ⅱ)如果存在(記為x*),稱此迭代法收斂,顯然x*就是方程組的解,否則稱此迭代法發(fā)散.迭代法的流程圖為:①為初始向量,②是判斷條件,即時停止運行③k是循環(huán)次數。④中帶入初始值,然后賦給①Jacobi迭代法 對一般方程組從第一個方程解出x1,第二個方程解出x2,…,記成用矩陣寫法即 x=Bx+g, B的對角元皆零,可拆成B=L+U L是B下三角部分,U是B上三角部分Jacobi迭代法如下述.任取初始近似x(0),對k=1,2,…計算 直至║x(k+1)-x(k)║≤ε,預定的精度.用矩陣記號,即任取初始近似x(0),對k=1,2,…計算x(k+1)=Bx(k)+g,直至║x(k+1)-x(k)║≤ε(通常對迭代法限定最大迭代次數也是必要的).Jacobi迭代法的流程圖為:在以上的流程圖中,先讀入數據,即先輸入系數矩陣A,常數向量b,初始值,停止條件和最大循環(huán)次數。圖中是,在我們迭代公式中的。k是循環(huán)次數,N是最大循環(huán)次數。例2.

利用Jacobi方法求方程組的近似解。解把原方程改為 任取初始近似x(0),對k=1,2,…計算 直至║x(k+1)-x(k)║≤ε,預定的精度. 此即Jacobi迭代法.計算結果如下表.kx1(k)x2(k)x3(k)000010.7200000000000.8300000000000.84000000000020.9710000000001.0700000000001.15000000000031.0570000000001.1571000000001.24820000000041.0853500000001.1853400000001.28282000000051.0950980000001.1950990000001.29413800000061.0983375000001.1983374000001.29803940000071.0994416200001.1994416300001.29933498000081.0998111590001.1998111580001.29977665000091.0999364458001.1999364459001.299924463400101.0999785372701.1999785372601.299974578340111.0999927693941.1999927693951.299991414906二實驗部分本章實驗內容:實驗題目:Jacobi迭代法,Gauss-Saidel迭代法,SOR迭代法。實驗內容:利用MATLAB,編制求Ax=b的各迭代計算方法的程序。實驗目的:了解迭代法的運用性,進行各迭代法數值結果的比較,并找出一個計算量小的,使迭代法加速收斂的迭代方法。編程要求:①利用迭代法,初始向量為x(0)②同時利用Jacobi法和Gauss-Seidel法來進行對比。③利用SOR迭代法來進行對比。計算算法:①Jacobi迭代法的算法為:②Gauss-Saidel迭代法的算法為:③SOR迭代法的算法為:實驗例題⑴:條件:取實驗例題⑵:條件:取選擇適當的松弛因子。程序①:function[X,Y]=JacobiGS(A,b,p,p1,del,max)%A為線性方程組的系數矩陣,b為自由項,p和p1為兩種迭代法的初始解,del為限制數,max為循環(huán)的限制次數。n=length(b);fork1=1:maxforj=1:nY(j)=(b(j)-A(j,[1:j-1])*p1(1:j-1)-A(j,[j+1:n])*p1(j+1:n))/A(j,j);ifj==1X(1)=(b(1)-A(1,[2:n])*p(2:n))/A(1,1);elseifj==nX(n)=(b(n)-A(n,[1:n-1])*(X(1:n-1))')/A(n,n);elseX(j)=(b(j)-A(j,[1:j-1])*(X(1:j-1))'-A(j,[j+1:n])*p(j+1:n))/A(j,j);enderr=abs(norm(X'-p));reerr=err/(norm(X)+eps);p=X';if(err<del)|(reerr<del)breakenderr1=abs(norm(Y'-p1));reerr1=err1/(norm(Y)+eps);p1=Y';if(err1<del)|(reerr1<del)breakendenddisp(sprintf('kX(k)Y(k)'));fori=0:ndisp(sprintf('%d%f%f',i,X(i+1),Y(i+1)));end數值結果:[X,Y]=JacobiGS(A,b,p,p1,10^(-5),7)kX(k)Y(k)03.0000022.99902911.9999992.00262120.9999991.003131程序②:functionX=SOR(A,b,p,w,del,max)%A為線性方程組的系數矩陣,b為自由項,p為迭代初始值,w為松弛因子,del為限制數,max為循環(huán)的限制次數。n=length(b);fork=1:maxforj=1:nifj==1X(1)=p(j)+w*(b(1)-A(1,[1:n])*p(1:n))/A(1,1);elseifj==nX(n)=p(n)+w*(b(n)-A(n,[1:n-1])*(X(1:n-1))'-A(n,n)*p(n))/A(n,n);elseX(j)=p(j)+w*(b(j)-A(j,[1:j-1])*(X(1:j-1))'-A(j,[j:n])*p(j:n))/A(j,j);endenderr=abs(norm(X'-p));reerr=err/(norm(X)+eps);p=X';if(err<del)|(reerr<del)breakendenddisp(sprintf('kX(k)'));fori=0:ndisp(sprintf('%d%f',i,X(i+1)));end數值結果:X=SOR(A,b,p,1.3,10^(-5),11)kX(k)0-0.9999971-1.0000032-1.0000003-0.999999總結:①迭代法具有需要計算機的存貯單元較少,程序設計簡單,原始系數矩陣在計算過程中始終不變等優(yōu)點.②迭代法在收斂性及收斂速度等方面存在問題.[注:A必須滿足一定的條件下才能運用以下三種迭代法之一。在Jacobi中不用產生的新數據信息,每次都要計算一次矩陣與向量的乘法,而在Gauss利用新產生的信息數據來計算矩陣與向量的乘法。在SOR中必須選擇一個最佳的松弛因子,才能使收斂加速。]經過計算可知Gauss-Seidel方法比Jacobi方法剩點計算量,也是Jacobi方法的改進。可是精確度底,計算量高,費時間,需要改進。SOR是進一步改進Gauss-Seidel而得到的比Jacobi,Gauss-Seidel方法收斂速度快,綜合性強。改變松弛因子的取值范圍來可以得到Jacobi,Gauss-Seidel方法。③選擇一個適當的松

溫馨提示

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

評論

0/150

提交評論