




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數值計算方法實驗報告學院:計算機科學與技術學院專業:計算機科學與技術班級:0802班學號:2008001424姓名:王春生太原理工大學學生實驗報告學院名稱計算機科學與技術學院專業班級計算機0802學號2008001424學生姓名王春生實驗日期成績課程名稱數值計算方法實驗題目實驗一 方程求根一、實驗目的及意義:(1)了解非線性方程求根的常見方法,如二分法、牛頓法、割線法。(2)加深對方程求根方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。二、實驗任務:選擇上述方法中的兩種方法求方程f(x)=x3+4x2-10=0在1,2內的一個實根,且要求滿足精度|x*-xn|0.510-5
2、 。三、計算公式:(1)二分法公式f(x)在區間a,b上連續,且f(a)f(b)0,令x1=(a+b)/2,計算f(x1)。若f(x1)=0,則x=x1;若f(a) f(x1)0,則記(a,b)=(x1,b);重復此過程,直至滿足精度要求,(b-a)/2。 (2)牛頓法迭代公式: 四、結構程序設計1)二分法源代碼:/二分法.cpp#include #include using namespace std;double fx(double x)return (x*x*x)+(4*x*x)-10);void main()double A,B,mid,result,accuracy=0.000005
3、;double a0=1.0,b0=2.0;coutf(x)=x3+4x2-10=0 1,2 |x*-xn|0.5*10-5endl; cout*endl;doA=a0,B=b0;mid=(A+B)/2;if( fx(mid)=0)result=mid;a0=A,b0=B;else if (fx(A)*fx(mid)0)a0=A;b0=mid;coutA=setw(10)setprecision(10)a0 B=setw(10)setprecision(10)b0endl; else if(fx(mid)*fx(B)0) a0=mid;b0=B; coutA=setw(10)setprecis
4、ion(10)a0 B=setw(10)setprecision(10)b0=accuracy);cout*endl;coutthe result is X=setw(10)setprecision(10)resultendl;coutA=setw(10)setprecision(10)a0endl;coutB=setw(10)setprecision(10)b0endl;2)牛頓法源代碼:/牛頓法.cpp/f(x)=x3+4x2-10=0 |x-xn|0.5*10(-5)#include #include using namespace std;double f(double x)retur
5、n (x*x*x+4*x*x-10);double fo(double x)return (3*x*x+8*x);int main()double x0=1,y;double temp,x1,xn;x1=x0;doxn=x1-f(x1)/fo(x1);temp=x1;x1=xn;y=xn-temp;if (y0)y=(-y);coutxn=setprecision(6)xn=0.000005);cout*endl;coutresult is xnendl;return 0;五、結果討論和分析牛頓法結果: 分析:兩種方法的結果是一樣的。比較算法,可知牛頓法的收斂速度比二分法要快很多。二分法要求函
6、數連續,而牛頓法則要求函數的一階導數存在。誤差方面,二者都能達到所要求的精度。實驗地點綜合樓六層606室指導教師王崢太原理工大學學生實驗報告學院名稱計算機科學與技術專業班級計科0802學號2008001424學生姓名王春生實驗日期 成績課程名稱數值計算方法實驗題目實驗二 線性方程組的直接解法一、實驗目的及意義:(1)了解線性方程組常見的直接解法,如Guass消元法、LU分解法、追趕法。(2)加深對線性方程組求解方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。二、實驗任務:合理利用Gauss消元法: 三、計算公式:高斯分解法:將原方程組化為三角形方陣的方程組:lik=aik/
7、akk aij= aij- lik* akj k=1,2,n-1 i=k+1,k+2, ,n j=k+1,k+2, ,n+1由回代過程求得原方程組的解: xn= ann+1/ ann xk=( akn+1-akj xj)/ akk (k=n-1,n-2, ,2,1)四、結構程序設計1)Guass消元法源代碼: /高斯.cpp#include stdio.hvoid main()FILE *f;double a1515;double b15,s;int i,j,k,n;f=fopen(Gaussdata.txt,r);fscanf(f,%d,&n);for(i=1;i=n;i+)for(j=1;
8、j=n;j+)fscanf(f,%lf,&aij);fscanf(f,%lf,&bi);fclose(f);k=1;dofor (j=k+1;j=n;j+) akj=akj/akk;bk=bk/akk;i=1;for(i=k+1;i=n;i+)for (j=k+1;j=1;i-) s=0;for(j=i+1;j=n;j+)s=s+aij*bj;bi=bi-s;for(i=1;i=n;i+)printf(b%2d=%lfn,i,bi);/ Gaussdata.txt31 2 3 140 1 2 82 4 1 13五、結果討論和分析Guass消元法結果:分析:從消元過程可以看出,對于n階線性方程組
9、,只要各步主元素不為零,即akk(k-1)0,經過n-1步消元,就可以得到一個等價的系數矩陣為上三角形陣的方程組,然后再利用回代過程可求得原方程組的解。實驗地點計算機與軟件學院606教室指導教師王崢太原理工大學學生實驗報告學院名稱計算機科學與技術專業班級計科0802學號2008001424學生姓名王春生實驗日期成績課程名稱數值計算方法實驗題目實驗三 線性方程組的迭代解法一、實驗目的及意義:(1)了解線性方程組常見的迭代解法,如雅克比迭代法、高斯塞德爾迭代法。(2)加深對線性方程組迭代求解方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。二、實驗任務:使用雅可比迭代法或高斯-賽
10、德爾迭代法對下列方程組進行求解。 三、計算公式:雅克比迭代法:設線性方程組Ax=b的系數矩陣A可逆且主對角元素a11,a22,ann均不為零,令D=diag(a11,a22,ann)并將A分解成A=(A-D)+D從而線性方程組可寫成Dx=(D-A)x+b則有迭代公式x(k+1)=B1x(k)+f1其中,B1=I-D-1A,f1=D-1b。四、結構程序設計雅克比迭代法源代碼:/雅克比迭代.cpp#include #include #include using namespace std;double fx_1(double x2,double x3) return (0.1*x2+0.2*x3+
11、0.72);double fx_2(double x1,double x3) return (0.1*x1+0.2*x3+0.83);double fx_3(double x1,double x2) return (0.2*x1+0.2*x2+0.84);double abs(double a) /abs取絕對值充值為double型 if (a=0) return(a); else return(-a);void main() double x1=0,x2=0,x3=0; double temp1,temp2,temp3,a,b,c; do a=x1;b=x2;c=x3; coutx1(k)=
12、setw(7)a x2(k)=setw(7)b x3(k)=setw(7)c 0.00005|abs(x2-b)0.00005|abs(x3-c)0.00005); coutx1 =x1 x2= x2 x3= x3endl;五、結果討論和分析分析:雅克比迭代公式簡單,每迭代一次只須計算一次矩陣和向量的乘法。在計算機運算時需要兩組存儲單元,以存放x(k)及x(k+1)。實驗地點計算機與軟件學院606教室指導教師王崢太原理工大學學生實驗報告學院名稱計算機科學與技術專業班級計科0802學號2008001424學生姓名王春生實驗日期 成績課程名稱數值計算方法實驗題目實驗四 矩陣特征值與特征向量問題一、
13、實驗目的及意義:(1)了解矩陣特征值與特征向量問題解法,掌握冪法。(2)加深對矩陣特征值與特征向量問題求解方法的認識,掌握算法。(3)會進行誤差分析。二、實驗任務:使用冪法求A模為最大的特征值及其相應的特征向量。三、計算公式:冪法:由已知的非零向量x0和矩陣A的乘冪構造向量序列xn以計算矩陣A的按模最大特征值及其特征向量的方法,稱為冪法。迭代公式:結果可取 四、結構程序設計#include #include const int N(3);using namespace std;void matrixx(double ANN,double xN,double yN) /求y的值 for(int
14、i=0;iN;i+) yi=0; for(int j=0;jN;j+) yi+=Aij*xj; double m(double yN) /求m的值,即y的最大值 double max; for(int i=0;iyi+1?yi:yi+1; return max;void main() cout矩陣:endl|2 -1 0|endl;cout|-1 2 -1|endl;cout|0 -1 2|=e) for(int q=0;qN;q+) pq=yq; matrixx(A,x,y); for(int i=0;iN;i+) ui=yi/(m(y); delta=fabs(m(y)-m(p); k+;
15、 for(int l=0;lN;l+) xl=ul; cout迭代次數是:kendl; cout特征值為:m(y)endl; cout特征向量為:(; coutu0,u1,u2; cout ) endl;system(“pause”);五、結果討論和分析分析: 冪法是一種求任意矩陣A的按模最大特征值及其對應特征向量的迭代算法。該方法的最大優點是計算簡單,容易在計算機上實現,對稀疏矩陣較為適合,但有時收斂速度很慢。實驗地點計算機與軟件學院606教室指導教師王崢太原理工大學學生實驗報告學院名稱計算機科學與技術專業班級計算機0903學號2009001496學生姓名李杰實驗日期成績課程名稱數值計算方法
16、實驗題目實驗五 代數插值一、實驗目的及意義:(1)了解代數插值問題解法,掌握拉格朗日插值法或牛頓插值法。(2)加深對代數插值問題求解方法的認識,掌握算法。(3)能對各種方法進行比較,會進行誤差分析。二、實驗任務:使用拉格朗日插值法或牛頓插值法求解:已知f(x)在6個點的函數值如下表所示,運用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.25386三、計算公式:設函數在區間a,b上n+1互異節點x0,x1,xn上的函數值分別為y0,y1,yn,求n次插值多項式Pn(x),滿
17、足條件Pn(xj)=yj, j=0,1,n令Ln(x)=y0l0(x)+y1l1(x)+ynln(x)= yili(x)其中l0(x),l1(x), ln(x) 為以x0,x1,xn為節點的n次插值基函數,則Ln(x)是一次數不超過n的多項式,且滿足Ln(xj)=yj, L=0,1,n再由插值多項式的唯一性,得Pn(x)Ln(x)四、結構程序設計#include#include#includetypedef struct data float x; float y;Data; /變量x和函數值y的結構Data d20; /最多二十組數據float f(int s,int t) /牛頓插值法,用
18、以返回插商 if(t=s+1) return (dt.y-ds.y)/(dt.x-ds.x); else return (f(s+1,t)-f(s,t-1)/(dt.x-ds.x); float Newton(float x,int count) int n; while(1) coutn; if(n=count-1)/ 插值次數不得大于count1次 break; else system(cls); float t=1.0; float y=d0.y; float yt=0.0; for(int j=1;j=n;j+) t=(x-dj-1.x)*t; yt=f(0,j)*t; y=y+yt;
19、 return y;float lagrange(float x,int count) float y=0.0; for(int k=0;kcount;k+)/這兒默認為count1次插值 float p=1.0;/初始化p for(int j=0;jcount;j+) /計算p的值 if(k=j)continue;/判定是否為同一個數 p=p*(x-dj.x)/(dk.x-dj.x); y=y+p*dk.y;/求和 return y;/返回y的值void main() float x,y; int count; while(1) coutcount; if(count=20) break;/
20、檢查輸入的是否合法 system(cls); /獲得各組數據 for(int i=0;icount;i+) cout請輸入第i+1di.x; cout請輸入第i+1di.y; system(cls); coutx; while(1) int choice=3; cout請您選擇使用哪種插值法計算:endl; cout (0):退出endl; cout (1):Lagrangeendl; cout (2):Newtonendl; coutchoice;/取得用戶的選擇項 if(choice=2) cout你選擇了牛頓插值計算方法,其結果為:; y=Newton(x,count);break;/調
21、用相應的處理函數 if(choice=1) cout你選擇了拉格朗日插值計算方法,其結果為:; y=lagrange(x,count);break;/調用相應的處理函數 if(choice=0) break; system(cls); cout輸入錯誤!endl; coutx , yendl;/輸出最終結果 五、結果討論和分析分析:拉格朗日插值的優點是插值多項式特別容易建立,缺點是增加節點是原有多項式不能利用,必須重新建立,即所有基函數都要重新計算,這就造成計算量的浪費。實驗地點計算機與軟件學院606教室指導教師王崢太原理工大學學生實驗報告學院名稱計算機科學與技術專業班級計科0802學號200
22、8001424學生姓名王春生實驗日期成績課程名稱數值計算方法實驗題目實驗六 最小二乘法擬合多項式一、 實驗目的及意義:1熟練運用已學計算方法求解方程組2加深對計算方法技巧,選擇正確的計算方法來求解各種方程組3培養使用電子計算機進行科學計算和解決問題的能力二、 實驗任務:給定數據點(xi ,yi),用最小二乘法擬合數據的多項式,并求平方誤差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00三、計算公式: 建立正規方程組:(xij+k)ak=xijyi ,j=0,1,n 平方誤差:I=(akxik-yi)2四、結構程序設計#include#inclu
23、de#define N 15double power(double &a,int n)double b=1;for(int i=0;in;i+)b*=a;return b;void Gauss();double XN,YN,sumXN,sumYN,aNN,bN,lNN,xN;void main()ofstream outdata;ifstream indata;double s;int i,j,k,n,index;coutn;coutendl;cout請輸入X和Y:endl; /輸入給定數據for(i=0;in;i+)coutXiXi;sumX1+=Xi;coutYiYi;sumY1+=Yi;coutendl;coutsumX1=sumX1t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 樓面漏水測評方案(3篇)
- 工程監管策劃方案(3篇)
- DB23-T3018-2021-綠色洗染店(廠)評價規范-黑龍江省
- 自建樓房保養方案(3篇)
- DB23-T2907-2021-山韭良種繁育技術規程-黑龍江省
- 醫療文書書寫管理制度
- 華西集團現場管理制度
- 倉庫瓷器清倉方案(3篇)
- 小組合作小組管理制度
- 大樓租賃投標方案(3篇)
- 2025年大學英語四級真題試卷及答案
- 2025年大學生心理健康教育試題及答案
- GB 5768.1-2025道路交通標志和標線第1部分:總則
- 2025年商業模式創新能力考試卷及答案
- 2025山西太原化學工業集團有限公司所屬企業社會招聘100人筆試參考題庫附帶答案詳解
- 2025年國際關系與外交專業考試試題及答案
- 涉外投資協議書
- 2025年物流行業安全生產考試題庫(物流安全生產法規與事故處理)試題
- 完善土地清表協議書
- 醫療器械公司質量管理體系文件
- 小升初語文閱讀技巧第十講把握人物情感變化含例題解析答案
評論
0/150
提交評論