




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
實驗五解線性方程組的迭代法一、問題提出對實驗四所列目的和意義的線性方程組,試分別選用Jacobi迭代法,Gauss-Seidel迭代法和SOR方法計算其解。二、要求1、體會迭代法求解線性方程組,并能與消去法做以比擬;2、分別對不同精度要求,如由迭代次數(shù)體會該迭代法的收斂快慢;3、對方程組2,3使用SOR方法時,選取松弛因子ω=0.8,0.9,1,1.1,1.2等,試看對算法收斂性的影響,并能找出你所選用的松弛因子的最正確者;4、給出各種算法的設(shè)計程序和計算結(jié)果。三、目的和意義1、通過上機計算體會迭代法求解線性方程組的特點,并能和消去法比擬;2、運用所學(xué)的迭代法算法,解決各類線性方程組,編出算法程序;3、體會上機計算時,終止步驟或k>〔給予的迭代次數(shù)〕,對迭代法斂散性的意義;體會初始解,松弛因子的選取,對計算結(jié)果的影響。四、實驗學(xué)時:2學(xué)時五、實驗步驟:1.進入C或matlab開發(fā)環(huán)境;2.根據(jù)實驗內(nèi)容和要求編寫程序;3.調(diào)試程序;4.運行程序;5.撰寫報告,討論分析實驗結(jié)果.解:J迭代算法:程序設(shè)計流程圖:源程序代碼:#include<stdlib.h>#include<stdio.h>#include<math.h>voidmain(){floata[50][51],x1[50],x2[50],temp=0,fnum=0;inti,j,m,n,e,bk=0;printf("使用Jacobi迭代法求解方程組:\n");printf("輸入方程組的元:\nn=");scanf("%d",&n);for(i=1;i<n+1;i++)x1[i]=0;printf("輸入方程組的系數(shù)矩陣:\n");for(i=1;i<n+1;i++){j=1;while(j<n+1){scanf("%f",&a[i][j]);j++;}}printf("輸入方程組的常數(shù)項:\n");for(i=1;i<n+1;i++){scanf("%f",&a[i][n+1]);}printf("\n"); printf("請輸入迭代次數(shù):\n"); scanf("%d",&m); printf("請輸入迭代精度:\n"); scanf("%d",&e);while(m!=0){for(i=1;i<n+1;i++){for(j=1;j<n+1;j++){if(j!=i)temp=a[i][j]*x1[j]+temp;}x2[i]=(a[i][n+1]-temp)/a[i][i];temp=0;}for(i=1;i<n+1;i++){fnum=float(fabs(x1[i]-x2[i]));if(fnum>temp)temp=fnum;}if(temp<=pow(10,-4))bk=1;for(i=1;i<n+1;i++)x1[i]=x2[i]; m--;}printf("原方程組的解為:\n");for(i=1;i<n+1;i++){if((x1[i]-x2[i])<=e||(x2[i]-x1[i])<=e) { printf("x%d=%7.4f",i,x1[i]); }}}運行結(jié)果:GS迭代算法:#include<iostream.h>#include<math.h>#include<stdio.h>constintm=11;voidmain(){intchoice=1;while(choice==1){doublea[m][m],b[m],e,x[m],y[m],w,se,max;intn,i,j,N,k;cout<<"Gauss-Seidol迭代法"<<endl; cout<<"請輸入方程的個數(shù):";cin>>n;for(i=1;i<=n;i++){cout<<"請輸入第"<<i<<"個方程的各項系數(shù):";for(j=1;j<=n;j++)cin>>a[i][j];}cout<<"請輸入各個方程等號右邊的常數(shù)項:\n";for(i=1;i<=n;i++){cin>>b[i];}cout<<"請輸入最大迭代次數(shù):";cin>>N;cout<<"請輸入最大偏差:";cin>>e;for(i=1;i<=n;i++){x[i]=0;y[i]=x[i];}k=0;while(k!=N){k++;for(i=1;i<=n;i++){w=0;for(j=1;j<=n;j++){if(j!=i)w=w+a[i][j]*y[j];}y[i]=(b[i]-w)/double(a[i][i]);}max=fabs(x[1]-y[1]);for(i=1;i<=n;i++){se=fabs(x[i]-y[i]);if(se>max)max=se;}if(max<e){cout<<endl;for(i=1;i<=n;i++)cout<<"x"<<i<<"="<<y[i]<<endl;break;}for(i=1;i<=n;i++){x[i]=y[i];}}if(k==N)cout<<"迭代失?。?!"<<endl; choice=0;}}SOR方法:#include<stdio.h>#include<math.h>#include<stdlib.h>/**********定義全局變量**********/float**a;/*存放A矩陣*/float*b;/*存放b矩陣*/float*x;/*存放x矩陣*/floatp;/*精確度*/floatw;/*松弛因子*/intn;/*未知數(shù)個數(shù)*/intc;/*最大迭代次數(shù)*/intk=1;/*實際迭代次數(shù)*//**********SOR迭代法**********/voidSOR(floatxk[]){inti,j;floatt=0.0;floattt=0.0;float*xl;xl=(float*)malloc(sizeof(float)*(n+1));for(i=1;i<n+1;i++){t=0.0;tt=0.0;for(j=1;j<i;j++)t=t+a[i][j]*xl[j];for(j=i;j<n+1;j++)tt=tt+a[i][j]*xk[j];xl[i]=xk[i]+w*(b[i]-t-tt)/a[i][i];}t=0.0;for(i=1;i<n+1;i++){tt=fabs(xl[i]-xk[i]);tt=tt*tt;t+=tt;}t=sqrt(t);for(i=1;i<n+1;i++)xk[i]=xl[i];if(k+1>c){if(t<=p)printf("\nReachthegivenprecision!\n");elseprintf("\noverthemaximalcount!\n");printf("\nCountnumberis%d\n",k);}elseif(t>p){k++;SOR(xk);}else{printf("\nReachthegivenprecision!\n");printf("\nCountnumberis%d\n",k);}}/**********程序*****開始**********/voidmain(){inti,j;printf("SOR方法\n");printf("請輸入方程個數(shù):\n");scanf("%d",&n);a=(float**)malloc(sizeof(float)*(n+1));for(i=0;i<n+1;i++)a[i]=(float*)malloc(sizeof(float)*(n+1));printf("請輸入三對角矩陣:\n");for(i=1;i<n+1;i++)for(j=1;j<n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<n+1;i++)for(j=1;j<n;j++)b=(float*)malloc(sizeof(float)*(n+1));printf("請輸入等號右邊的值:\n");for(i=1;i<n+1;i++)scanf("%f",&b[i]);x=(float*)malloc(sizeof(float)*(n+1));printf("請輸入初始的x:");for(i=1;i<n+1;i++)scanf("%f",&x[i]);printf("請輸入精確度:");scanf("%f",&p);printf("請輸入迭代次數(shù):");scanf("%d",&c);printf("請輸入w(0<w<2):\n");scanf("%f",&w);SOR(x);printf("方程的結(jié)果為:\n");for(i=1;i<n+1;i++)printf("x[%d]=%f\n",i,x[i]);}程序運行結(jié)果討論和分析:①迭代法具有需要計算機的存貯單元較少,程序設(shè)計簡單,原始系數(shù)矩陣在計算過程中始終不變等優(yōu)點.②迭代法在收斂性及收斂速度等方面存在問題.[注:A必須滿足一定的條件下才能運用以下三種迭代法之一.在Jacobi中不用產(chǎn)生的新數(shù)據(jù)信息,每次都要計算一次矩陣與向量的乘法,而在Gauss利用新產(chǎn)生的信息數(shù)據(jù)來計算矩陣與向量的乘法.在SOR中必須選擇一個最正確的松弛因
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地震用品儲備管理辦法
- 客房服務(wù)服務(wù)管理辦法
- 訴訟保全業(yè)務(wù)管理辦法
- 簽訂框架協(xié)議管理辦法
- 工業(yè)電氣知識培訓(xùn)課件
- 高起專2024數(shù)學(xué)試卷
- 觀察記錄中班數(shù)學(xué)試卷
- 皋城2024年小升初數(shù)學(xué)試卷
- 奪冠五年級上冊數(shù)學(xué)試卷
- 梵蒂岡數(shù)學(xué)試卷
- 《馬克思主義與社會科學(xué)方法論》1-7章思考題答案
- 設(shè)備潤滑培訓(xùn)課件
- 學(xué)生床上用品采購?fù)稑?biāo)方案
- 《社會網(wǎng)絡(luò)分析法》課件
- 銀行基礎(chǔ)知識詳解
- 散熱器安裝施工方案與技術(shù)措施
- 在線語言學(xué)習(xí)行業(yè)競爭格局分析
- 第十四講 建設(shè)鞏固國防和強大人民軍隊PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 山東工商學(xué)院金融學(xué)期末復(fù)習(xí)題及參考答案
- 國開2023年春《理工英語1》機考網(wǎng)考期末復(fù)習(xí)資料參考答案
- 信息資源管理(馬費成-第三版)復(fù)習(xí)重點
評論
0/150
提交評論