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