版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 一、目錄</b></p><p><b> 一、目錄1</b></p><p><b> 二、設(shè)計(jì)內(nèi)容2</b></p><p> 1.Gauss列主元素消去法解線性方程組的算法設(shè)計(jì)2</p><p> 1.1 模塊設(shè)計(jì)2</
2、p><p> 1.2主要程序代碼2</p><p> 1.3 運(yùn)行結(jié)果5</p><p> 2.Romberg算法6</p><p><b> 2.1模塊設(shè)計(jì)6</b></p><p> 2.2 主要程序代碼6</p><p> 2.3 運(yùn)行結(jié)果7<
3、;/p><p><b> 三、小結(jié)8</b></p><p><b> 四、參考文獻(xiàn)8</b></p><p><b> 二、設(shè)計(jì)內(nèi)容</b></p><p> 1.Gauss列主元素消去法解線性方程組的算法設(shè)計(jì)</p><p><b&g
4、t; 1.1 模塊設(shè)計(jì)</b></p><p> 求任意階(n<10)線性方程組的能力,主要包括一下模塊:</p><p> ?。?)在源程序中定義求解的方程階數(shù);</p><p> ?。?)輸入方程的系數(shù)矩陣和常數(shù)矩陣;</p><p><b> ?。?)獲取增廣矩陣</b></p>
5、<p> ?。?)Gauss列主元素消去:找主元、消元(分解)、回代、輸出結(jié)果。</p><p><b> 1.2主要程序代碼</b></p><p> #include <iostream.h></p><p> #include <iomanip.h></p><p> #
6、include <math.h></p><p> #define n 4</p><p> class Guss{</p><p><b> private:</b></p><p> float a[n][n];</p><p> float b[n];</p>
7、;<p> float Array[n][n+1];</p><p><b> public:</b></p><p> Guss() //構(gòu)造矩陣</p><p><b> {</b></p><p> cout<<"請(qǐng)輸入"<<
8、n<<"*"<<n<<"維系數(shù)矩陣:"<<endl;</p><p> for(int i = 0;i<n;i++) // 輸入系數(shù)矩陣</p><p><b> {</b></p><p> for(int j = 0;j<n;j++
9、)</p><p> cin>>a[i][j];</p><p><b> }</b></p><p> cout<<"請(qǐng)輸入"<<1<<"*"<<n<<"維常數(shù)矩陣:"<<endl;</p
10、><p> for(i = 0;i<n;i++) // 輸入常數(shù)矩陣</p><p><b> {</b></p><p> cin>>b[i];</p><p><b> }</b></p><p> /*for(int i1 = 0;i1&l
11、t;n;i1++)</p><p><b> {</b></p><p> for(int j1 =0;j1<n+1;j1++)</p><p><b> {</b></p><p> cout<<a[i1][j1]<<setw(15);</p>
12、<p><b> }</b></p><p> cout<<b[i1];</p><p> cout<<endl;</p><p><b> }</b></p><p><b> */</b></p><p>
13、<b> }</b></p><p> void zgjz() //獲得增廣矩陣</p><p><b> {</b></p><p> //float c[n][n+1]; //定義增廣矩陣</p><p> //float *p;</p><p> /
14、/p = &a[0][0];</p><p> for(int i = 0;i<n;i++) //有系數(shù)矩陣和常數(shù)矩陣獲得增廣矩陣205</p><p><b> {</b></p><p> for(int j = 0;j<n+1;j++)</p><p><b> {<
15、/b></p><p> if(j == n)</p><p> Array[i][j] = b[i];</p><p><b> else</b></p><p> Array[i][j] = a[i][j];</p><p><b> }</b></
16、p><p><b> }</b></p><p> //return &c[0][0];</p><p> //return *p; //返回增廣矩陣</p><p> cout<<"增廣矩陣為:"<<endl;</p><p> fo
17、r(int i1 = 0;i1<n;i1++)</p><p><b> {</b></p><p> for(int j1 =0;j1<n+1;j1++)</p><p><b> {</b></p><p> cout<<Array[i1][j1]<<
18、;setw(15);</p><p><b> }</b></p><p> cout<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void Gjfc() //Gus
19、s列主元素消元法</p><p><b> {</b></p><p> float max,u,z; //定義三個(gè)float變量 ,max標(biāo)記最大值,u用來(lái)交換,z用來(lái)計(jì)算最后的結(jié)果</p><p> int flag; //flag用來(lái)標(biāo)記下標(biāo)</p><p> for(int i = 0;
20、i<n-1;i++)</p><p><b> {</b></p><p> max = Array[i][i];</p><p><b> flag = i;</b></p><p> for(int k = i+1;k<n;k++)</p><p>&
21、lt;b> {</b></p><p> if(fabs(max) < fabs(Array[k][i])) //找主元</p><p><b> {</b></p><p> max = Array[k][i];</p><p><b> flag = k;</b&g
22、t;</p><p><b> }</b></p><p><b> }</b></p><p> if(flag != i)</p><p><b> {</b></p><p> for(int j = i;j<n+1;j++)<
23、;/p><p><b> {</b></p><p> u = Array[i][j];</p><p> Array[i][j] = Array[flag][j];</p><p> Array[flag][j] = u;</p><p><b> }</b><
24、/p><p><b> }</b></p><p> for(int x = i+1;x<n;x++) //消元</p><p><b> {</b></p><p> u = Array[x][i]/max;</p><p> for(int y = i;y&l
25、t;n+1;y++)</p><p><b> {</b></p><p> Array[x][y] = Array[x][y]-u*Array[i][y];</p><p><b> }</b></p><p><b> }</b></p><p&
26、gt;<b> }</b></p><p> for(int x=n-1;x>=0;x--) //回代</p><p><b> {</b></p><p><b> z=0;</b></p><p> for(int y=x+1;y<n;y++)<
27、/p><p> z=z+Array[x][y]*Array[y][n];</p><p> Array[x][n]=(Array[x][n]-z)/(Array[x][x]);//計(jì)算結(jié)果</p><p><b> }</b></p><p> cout<<"Guss消元所得方程組的解為:&qu
28、ot;<<endl;</p><p> for(i = 0;i<n;i++) //輸出結(jié)果</p><p> cout<<Array[i][n]<<setw(15);</p><p> cout<<endl;</p><p><b> }</b></
29、p><p><b> };//類(lèi)的結(jié)束</b></p><p> int main()</p><p><b> {</b></p><p><b> Guss G;</b></p><p> //float Array[n][n+1];<
30、;/p><p><b> G.zgjz();</b></p><p><b> G.Gjfc();</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b&
31、gt; 1.3 運(yùn)行結(jié)果</b></p><p> 2.Romberg算法</p><p><b> 2.1模塊設(shè)計(jì)</b></p><p> 利用遞推的復(fù)合梯形公式,并結(jié)合外推加速公式的Romberg算法。</p><p><b> 功能模塊如下:</b></p>
32、<p> ?。?)輸入積分區(qū)間、精度要求;</p><p> ?。?)在源程序中利用宏定義定義函數(shù);</p><p> ?。?)利用Romberg算法計(jì)算積分并輸出結(jié)果。</p><p> 2.2 主要程序代碼</p><p> #include<iostream.h></p><p>
33、 #include<math.h></p><p> #include<stdio.h></p><p> #define f(x) pow(x,0.5)</p><p> double T(double n,double a,double b) //函數(shù)的嵌套調(diào)用計(jì)算T0,T1,T2……</p><p>&
34、lt;b> {</b></p><p> double sum=0;</p><p> for(int i=0;2*i+1<=n;i++)</p><p><b> {</b></p><p> sum+=f(a+double (2*i+1)*(b-a)/n);</p>&
35、lt;p><b> }</b></p><p><b> if(n==1) </b></p><p> return 0.5*(f(a)+f(b))*(b-a);</p><p> return 0.5*T(n/2,a,b)+sum*((b-a)/n);</p><p><b&g
36、t; }</b></p><p> void Romberg(double a,double b,double e) //龍貝格算法的實(shí)現(xiàn)</p><p><b> {</b></p><p> double Old[10]={0.0},New[10]={0.0};</p><p> double
37、 h=b-a;</p><p> New[0]=h*(f(a)+f(b))/2.0;</p><p><b> int j;</b></p><p> for(int i=1;;i++)</p><p><b> {</b></p><p> for(j=0;j&l
38、t;i;j++) </p><p> Old[j]=New[j];</p><p> New[0]=T(pow(2,i),a,b);</p><p> for(j=1;j<=i;j++)</p><p> New[j]=(pow(4,j)*New[j-1]/(pow(4,j)-1)-Old[j-1]/(pow(4,j)-1));
39、</p><p> if(fabs(New[i]-Old[i-1])<e)</p><p><b> break;</b></p><p><b> }</b></p><p> cout<<New[i]<<endl;</p><p>&
40、lt;b> }</b></p><p> void main()</p><p><b> {</b></p><p> double a,b; </p><p><b> double e;</b></p><p> cout<<
41、"請(qǐng)輸入積分的下、上限:";</p><p> cin>>a>>b;</p><p> cout<<"輸入你要的精度:";</p><p><b> cin>>e;</b></p><p> Romberg(a,b,e);&l
42、t;/p><p><b> }</b></p><p><b> 2.3 運(yùn)行結(jié)果</b></p><p><b> 三、小結(jié)</b></p><p> 課程設(shè)計(jì)是我們動(dòng)手能力的表現(xiàn)。數(shù)值分析的課程設(shè)計(jì)收獲不小。在課程設(shè)計(jì)之前=感覺(jué)并不容易,數(shù)值分析是上學(xué)期學(xué)的,自己的C/
43、C++學(xué)的并不怎么樣,一般的小問(wèn)題還可以解決,從來(lái)也沒(méi)想過(guò)要用C/C++語(yǔ)言來(lái)解決數(shù)值分析上的問(wèn)題,還有并沒(méi)有用過(guò)C/C++做過(guò)真正的程序,有點(diǎn)害怕。但是,課程設(shè)計(jì)做完后,感覺(jué)還可以,C/C++蠻可以應(yīng)付這樣的數(shù)值問(wèn)題。</p><p> 課程設(shè)計(jì)中遇到的問(wèn)題:1.龍貝格算法不熟,算法設(shè)計(jì)思路不清,通過(guò)多次查閱課本和資料,才弄清楚;2.龍貝格算法設(shè)計(jì)好后,在實(shí)現(xiàn)方面,經(jīng)過(guò)多次運(yùn)行,才操作成功;</p>
44、;<p> 3.Gauss列主元素消元法在算法設(shè)計(jì)想好了,在具體實(shí)現(xiàn)時(shí),通過(guò)函數(shù)操作后返回一float數(shù)組,運(yùn)行一直出錯(cuò),最后經(jīng)過(guò)裴老師指點(diǎn),順利運(yùn)行下來(lái)。</p><p> 課程設(shè)計(jì)中的收獲:1.熟悉了數(shù)值分析中的Gauss列主元素消元法和龍貝格算法的算法設(shè)計(jì);2.運(yùn)用C/C++解決數(shù)值問(wèn)題;3.遇到困難挫折時(shí),要堅(jiān)持下去,可以尋求老師同學(xué)的幫助。</p><p>
45、體會(huì):如果你堅(jiān)持做一件事情,全世界都會(huì)為你讓路</p><p><b> 四、參考文獻(xiàn)</b></p><p> [1] 施吉林,劉淑珍,陳桂芝.計(jì)算機(jī)數(shù)值方法[M].第三版.北京:高等教育出版社,2009年.</p><p> [2] 譚浩強(qiáng).C程序設(shè)計(jì)[M].第三版.北京:清華大學(xué)出版社,2005年.</p><p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)值方法課程設(shè)計(jì)---牛頓法解非線性方程組
- 數(shù)值分析課程設(shè)計(jì)(求解線性方程組)
- 數(shù)值分析課程設(shè)計(jì)---線性方程組求解
- 最優(yōu)化算法課程設(shè)計(jì)--解方程組及非線性方程組
- 消元法解線性方程組
- 數(shù)值分析線性方程組迭代法實(shí)驗(yàn)
- 《計(jì)算方法》課程設(shè)計(jì)--用列主元高斯消去法求線性代數(shù)方程組的解
- 3.6線性方程組解的結(jié)構(gòu)
- 線性方程組
- 迭代法解非線性方程組.pdf
- 解線性方程組的直接法
- 解線性方程組的直接方法
- c解非齊次線性方程組--c語(yǔ)言課程設(shè)計(jì)報(bào)告
- 利用逆矩陣解線性方程組
- 解線性方程組的簡(jiǎn)單GMRES算法研究.pdf
- 基于Cell BE的解線性方程組算法研究.pdf
- 解線性方程組的直接法.pdf
- 共軛梯度法求解線性方程組
- 高等數(shù)值分析課程設(shè)計(jì)--求解線性方程組ax=b的極小化方法比較
- 區(qū)間線性方程組解集特征研究
評(píng)論
0/150
提交評(píng)論