數(shù)值方法實驗報告_第1頁
數(shù)值方法實驗報告_第2頁
數(shù)值方法實驗報告_第3頁
數(shù)值方法實驗報告_第4頁
數(shù)值方法實驗報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1數(shù)學(xué)與計算科學(xué)學(xué)院實驗報告實驗項目名稱迭代法解線性方程組所屬課程名稱數(shù)值方法A實驗類型驗證型實驗日期2014年11月28日姓名學(xué)號班級成績一、實驗概述:【實驗?zāi)康摹渴炀氝\用運用所學(xué)計算機語言編寫程序,實現(xiàn)解線性方程組的迭代法,包括Gauss-Seidel迭代方法和松弛迭代法,分析迭代格式的收斂性,以及初值對迭代格式收斂的影響。用熟悉的計算機語言編程上機完成:用Gauss-Seidel迭代法求解下列方程組,當(dāng)滿足時,結(jié)束迭代。2.用松弛迭代法(取=1.25)求解下列方程組,當(dāng)滿足時結(jié)束迭代,說明迭代的收斂性,并討論初值的變化對收斂的影響?!緦嶒炘怼?.Gauss—Seidel迭代法原理:Gauss-seidel迭代法是對Jacobi迭代法的改進(jìn),在Jacobi迭代的分量形式中,為了在每一次迭代計算不同的分量時,可以利用前面已經(jīng)計算出來的分量,就將Jacobi迭代的分量形式修改為這樣,每一個計算出來的分量馬上就可以用于計算下一個分量,這種方法比Jacobi迭代法收斂得快。2.松弛迭代法原理為了提高精度,可以考慮運用松弛技術(shù),將高斯-塞德爾(Gauss-Seidel)迭代得到的值進(jìn)一步加工成某種松弛值,迭代公式如下

逐次超松弛迭代法是顯然Gauss-Seidel方法的一種加速方法,當(dāng)時,SOR方法就是Gauss-Seidel迭代方法。【實驗環(huán)境】Visualc++6.0二、實驗內(nèi)容:【實驗方案】1.Gauss—Seidel迭代法步1讀入數(shù)據(jù),初始向量n,增廣矩陣,k=1;步2步3判斷步4,,轉(zhuǎn)入步2;步5,輸出結(jié)果。2.SOR方法解方程組Ax=b的算法,其中A為對稱正定矩陣,數(shù)組x作為一組工作單元,開始存放初始向量,然后存放近似值解,最后存放結(jié)果,用控制迭代終止,k表示迭代次數(shù),可以不用。步1;步2;步3;步4步5對于有(1)(2)如果,則,(3);步6輸出;步7如果,則轉(zhuǎn)步3;步8輸出結(jié)果x,k?!緦嶒炦^程】(實驗步驟、記錄、數(shù)據(jù)、分析)調(diào)試報錯如下:在頭文件下加上如下程序doubleCompare(doublea[N],doubleb[N]){ doublec=0; inti; for(i=0;i<=N-1;i++) c+=fabs(a[i]-b[i]); returnc;}在主函數(shù)中加如下語句:Gauss_seidel(A,x,b,1e-4);【實驗結(jié)果】1.Gauss-Seidel迭代法求解方程組的實驗結(jié)果如下:2.松弛法求方程組實驗結(jié)果如下:初值的變化對收斂沒有影響,SQR方法收斂的充要條件是稀疏矩陣對稱正定,且?!緦嶒炐〗Y(jié)】(收獲體會)在這次數(shù)值分析試驗中,我明白了高斯-賽德爾迭代法和松弛迭代法的異同,更深的理解了用迭代法解線性方程組的方法,并且懂得了編寫一段代碼,我們不僅要考慮它的可行性,更應(yīng)該考慮它的算法復(fù)雜度,運行效率。由此,我們可以看出做一件事要精益求精,多加斟酌

,并且在數(shù)值分析理論課方面更應(yīng)該多下功夫,扎實基礎(chǔ)才是最重要的。三、指導(dǎo)教師評語及成績:評語評語等級優(yōu)良中及格不及格1.實驗報告按時完成,字跡清楚,文字?jǐn)⑹隽鲿?邏輯性強2.實驗方案設(shè)計合理3.實驗過程(實驗步驟詳細(xì),記錄完整,數(shù)據(jù)合理,分析透徹)4實驗結(jié)論正確.成績:指導(dǎo)教師簽名:批閱日期:附錄:源程序程序1:#include<stdio.h>#include<math.h>#include<iostream.h>#defineN3doubleCompare(doublea[N],doubleb[N]){ doublec=0; inti; for(i=0;i<=N-1;i++) c+=fabs(a[i]-b[i]); returnc;}voidGauss_seidel(doubleA[N][N],doublex[N],doubleb[N],doubleprecesion){ inti,j,k; doublex2[N],x3[N],sum; for(i=0;i<=N-1;i++) { x2[i]=x[i]; x3[i]=x[i]; } k=1;//k為迭代次數(shù) while(1) { for(i=0;i<=N-1;i++) { sum=0; for(j=0;j<=N-1;j++) { if(j!=i) sum+=A[i][j]*x2[j]; } x[i]=(b[i]-sum)/A[i][i]; x2[i]=x[i]; } //輸出每一次迭代的結(jié)果 printf("第%d次迭代:\n",k); printf("x3="); for(i=0;i<=N-1;i++) printf("%lf",x3[i]); printf("\n"); printf("x="); for(i=0;i<=N-1;i++) printf("%lf",x[i]); printf("\n"); //判斷是否達(dá)到迭代精度 if(Compare(x3,x)<=precesion) { printf("達(dá)到迭代精度的方程組的解為:\n"); printf("x="); for(i=0;i<=N-1;i++) printf("%lf",x[i]); printf("\n"); break; } else { for(i=0;i<=N-1;i++) x3[i]=x[i]; k++; continue; } }}voidmain(){ doubleA[N][N]={{5,2,1},{-1,4,2},{2,-3,10}},x[N]={0},b[N]={-12,20,3}; Gauss_seidel(A,x,b,1e-4);程序2:#defineN3//線性方程組的階數(shù)#include<iostream.h>#include<math.h>voidmain(){ doublea[N][N]={2,2,-2,2,5,-4,-2,-4,5},//系數(shù)矩陣 b[N]={1,2,0};//右端常數(shù)向量 doublex0[N]={0,0,0},x[N];//迭代初始向量和迭代向量 doublee=1e-5;//精度要求 intM=500;//最大迭代次數(shù) inti,j,c_M=0; doublesum,current_e; do { current_e=0; for(i=0;i<N;i++) { sum=0; for(j=0;j<N;j++) { if(j!=i) { sum=sum+a[i][j]*x0[j]; } } x[i]=(b[i]-sum)/a[i][i]; }//更新迭代向量 c_M++;//迭代次數(shù)加1 for(i=0;i<N;i++) { if(fabs(x[i]-x0[i])>current_e) current_e=fabs(x[i]-x0[i]); } //計算當(dāng)前誤差 for(i=0;i<N;i++) x0[i]=x[i];//更新初始向量 }while(current_e<=e&&c_M<M);//判斷是否仍未達(dá)到精度要求且未達(dá)到最大迭代次數(shù) for(i=0;i<N;i++) cout<<x[i]<<endl;//輸出結(jié)果 cout<<c_M<<endl;//輸出迭代次數(shù)} 附錄2:實驗報告填寫說明1.實驗項目名稱:要求與實驗教學(xué)大綱一致.2.實驗?zāi)康模耗康囊鞔_,要抓住重點,符合實驗教學(xué)大綱要求.3.實驗原理:簡要說明本實驗項目所涉及的理論知識.4.實驗環(huán)境:實驗用的軟、硬件環(huán)境.5.實驗方案(思路、步驟和方法等):這是實驗報告極其重要的內(nèi)容.概括整個實驗過程.對于驗證性實驗,要寫明依據(jù)何種原理、操作方法進(jìn)行實驗,要寫明需要經(jīng)過哪幾個步驟來實現(xiàn)其操作.對于設(shè)計性和綜合性實驗,在上述內(nèi)容基礎(chǔ)上還應(yīng)該畫出流程圖、

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論