數值分析大作業(yè)3_第1頁
數值分析大作業(yè)3_第2頁
數值分析大作業(yè)3_第3頁
數值分析大作業(yè)3_第4頁
數值分析大作業(yè)3_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課題三線性方程組的迭代法一、問題提出對課題二所列目的和意義的線性方程組,試分別選用 Jacobi 迭代法,Gauss-Seidol 迭代法和 SOR 方法計算其解。二、要求1、體會迭代法求解線性方程組,并能與消去法做以比較;2、分別對不同精度要求,如 103 ,104 ,105 由迭代次數體會該迭代法的收斂快慢;3、對方程組 2,3 使用 SOR 方法時,選取松弛因子 =0.8,0.9,1,1.1,1.2 等,試看對算法收斂性的影響,并能找出你所選用的松弛因子的最佳者;4、給出各種算法的設計程序和計算結果。三、目的和意義1、通過上機計算體會迭代法求解線性方程組的特點,并能和消去法比較;2、運用

2、所學的迭代法算法,解決各類線性方程組,編出算法程序;(予給的迭代次數),對x(k 1) x(k )3、體會上機計算時,終止步驟迭代法斂散性的意義;x (0) ,松弛因子的選取,對計算結果的影響。4、體會初始解1Jacobi 迭代法開始輸入系數矩陣級右端項維數和初始解向量最大迭代次數和精度循環(huán)k=1.N i=1nJ=1.n Xi=(bi-Aijx0j)/Aii+x0ii=1nR=max|xi-x0i|R=eYNX0i=xi i=1.n輸出迭代次數k輸出x1xn已達到最大迭代次數輸出x1xn結束源程序:#include#include#includeusing namespatd;main()n,

3、N;i,j,k;double e;coutn;coutN;coute;double *A=new double*(n+1);for(i=1;i=n;i+)Ai=new doublen+1;double*b=new doublen+1;double*x0=new doublen+1;double*x=new doublen+1;cout輸入系數矩陣A:endl;for(i=1;i=n;i+)for(j=1;jAij;cout輸入右端項b:endl;for(i=1;ibi;cout初始化解向量x0:endl;for(i=1;ix0i;for(k=1;k=N;k+)for(i=1;i=n;i+)do

4、uble sum=0;for(j=1;j=n;j+)sum=sum+Aij*x0j;xi=x0i+(bi-sum)/Aii;double max=0;for(i=1;imax) max=m;if(max=e)cout輸出迭代次k:kendl;cout迭代后的解x:endl;for(i=1;i=n;i+) coutxiendl;system(pause);return 0;elsefor(i=1;i=n;i+)x0i=xi;cout已達到最大迭代次數:Nendl;cout迭代后的解x:endl;for(i=1;i=n;i+) coutxiendl;system(pause);return 0;2

5、Gauss-Seidol 迭代法開始輸入系數矩陣級右端項維數和初始解向量 最大迭代次數和精度循環(huán)k=1.N i=1nJ=i為a=x0i Xi=(bi-Aij*a)/Aii+x0ii=1nR=max|xi-x0i|R=eYNX0i=xi i=1.n輸出迭代次數k輸出x1xn已達到最大迭代次數輸出x1xn結束源程序#include#include#includeusing namespatd;main()n,N;i,j,k;double e;coutn;coutN;coute;double *A=new double*(n+1);for(i=1;i=n;i+)Ai=new doublen+1;do

6、uble*b=new doublen+1;double*x0=new doublen+1;double*x=new doublen+1;cout輸入系數矩陣A:endl;for(i=1;i=n;i+)for(j=1;jAij;cout輸入右端項b:endl;for(i=1;ibi;cout初始化解向量x0:endl;for(i=1;ix0i;for(k=1;k=N;k+)for(i=1;i=n;i+)double sum=0;for(j=1;j=n;j+)if(ji) sum=sum+Aij*xj;elsesum=sum+Aij*x0j;xi=x0i+(bi-sum)/Aii;double m

7、ax=0;for(i=1;imax) max=m;if(max=e)cout輸出迭代次k:kendl;cout迭代后的解x:endl;for(i=1;i=n;i+) coutxiendl;system(pause);return 0;elsefor(i=1;i=n;i+)x0i=xi;cout已達到最大迭代次數:Nendl;cout迭代后的解x:endl;for(i=1;i=n;i+) coutxiendl;system(pause);return 0;3SOR 方法源程序#include#include#include#includeusing namespatd;main()n;coutn

8、;vectorvector va;vector vd;cout輸入系數矩陣:endl;for(i=0;in;+i) for(j=0;jdtemp;vd.push_back(dtemp);va.push_back(vd);vd.clear();cout輸入初始解向量:;vector vtemp;for(i=0;idtemp;vd.push_back(dtemp);coutd;coutmcount;coutxd;vectorvector :iteratoria,iaend;ia=va.begin();bool flag=true;count=0;while(flag) double dmax=0.

9、0;vtemp.assign(vd.begin(),vd.end();for(i=0;in;+i) doubledtemp=0.0;for(j=0;jn;+j) if(j=i) dtemp+=(*(ia+i)j*vtempj;dtemp=(*(ia+i)n-dtemp;vdi=xd*dtemp/(*(ia+i)i;vdi+=vtempi;+count;for(i=0;in;+i) if(dmaxfabs(vdi-vtempi)dmax=fabs(vdi-vtempi);if(dmaxd) cout輸出迭代次數: countendl;coutd-dmaxendl;cout輸出迭代解:(;for(

10、i=0;in;+i) if(i=n-1)coutvdi);elsecoutvdimcount) cout已達到最大迭代次數!endl;cout輸出迭代解:(;for(i=0;in;+i) if(i=n-1)coutvdi);elsecoutvdi,;flag=false;system(pause);return 0;方程組一1Jacobi迭代法2Gauss-Seidol 迭代法方程組二1Jacobi迭代法精度e=0.0012Gauss-Seidol 迭代法3SOR 方法 松弛因子 w=0.8方程組三1Jacobi迭代法2Gauss-Seidol 迭代法3SOR 方法 精度 e=0.001 松弛因子 w=0.8松弛因子 w=1.0松弛因子 w=1.2結果分析問題 1. 體會迭代法求解線性方程組,并能與消去法做以比較;消去法如果不考慮計算過程中的舍入誤差,能求出方程組的精確解。迭代法即使不考慮計算過程中的舍入誤差,迭代法也很難獲得精確解。問題 2.對于不同的精度,迭代次數也不同。對第三個方程組用 GS迭代法采用不同精度,迭代次數不同。精度越精確,需要迭代次數越多。問題 3從題中 W=0.8 1.0 1.2 時,可以看出 w=1.0 時迭代的最快。在這次的數值分析大作業(yè)中,不同的系數矩陣對上述三種迭代方法有很大的影響,會導致結果發(fā)散無法得到正常的結果。三種算法的

溫馨提示

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

評論

0/150

提交評論