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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程名稱: 計算機數(shù)值方法 實驗項目:方程求根,線性方程組的直接解法與迭代 解法,代數(shù)插值,最小二乘法擬合多項式實驗地點: 逸夫樓402 專業(yè)班級: 學號: 學生姓名: 指導教師: 于亞男 2012年4月26日太原理工大學學生實驗報告學院名稱軟件學院專業(yè)班級學號學生姓名 實驗日期4月26日成績課程名稱計算機數(shù)值方法實驗題目 方程求根1、 實驗目的和要求(1)了解非線性方程求根的常見方法,如二分法、牛頓法、割線法。(2)加深對方程求根方法的認識,掌握算法。二、實驗內容和原理熟悉使用二分法、迭代法、牛頓法、割線法等方法對給定的方程進行根的求解。選擇上述方法中的兩種方法求方程:f(x)=x3+4x2

2、-10=0在1,2內的一個實根,且要求滿足精度|x*-xn|<0.5×10-53、 主要儀器設備 HP筆記本,VC+6.04、 操作方法與實驗步驟 1.二分法:#include <stdio.h>#include <math.h>double f(double x) double y; y=pow(x,3)+4*pow(x,2)-10; return (y);main() double a,b,yl,yr,ym,x1,xr,xm;a=1;b=2; yl=f(a); yr=f(b); while(yl*yr>0) yl=f(a); yr=f(b);

3、xr=a; x1=b; while(fabs(xr-x1)>0.000001) xm=(x1+xr)/2; ym=f(xm); yl=f(x1); yr=f(xr); if(yl*ym<0&&yr*ym>0) xr=xm; else x1=xm;printf("%ft%ft%fn",x1,xr,xm); printf("n所求根為x=%fn",xm); return 0;2.牛頓法:#include <stdio.h>#include <math.h>double f(double x) retu

4、rn (pow(x,3)+4*pow(x,2)-10);double f1(double x) return (3*pow(x,2)+10*x);int main() double x,x1,y1,y2; printf("請輸入一個任意實數(shù):X="); scanf("%lf",&x); printf("方程的解為:n"); do x1=x; y1=f(x); y2=f1(x1); x=x1-y1/y2; while (fabs(x-x1)>=5e-6); printf(" %lfn",x1);3.追趕

5、法5、 實驗數(shù)據(jù)記錄和處理1. 二分法2. .牛頓法6、 實驗結果與分析 通過這個兩個程序可看出,二分法的計算量更大一些。7、 討論、心得 通過這個實驗,我了解了線性方程的一些求根方法,對于方程近似值的求解有了更多的理解。實驗地點 指導教師于亞男太原理工大學學生實驗報告學院名稱專業(yè)班級學號學生姓名 實驗日期4月26日成績課程名稱計算機數(shù)值方法實驗題目 求解線性方程組一、實驗目的和要求(1) 了解直接法解線性方程組(2) 對Gauss消元法、LU分解法、追趕法有更深刻的理解二、實驗內容和原理合理利用Gauss消元法、LU分解法、追趕法求解下列方程組: (n=5,10,100,)三主要儀器設備 H

6、P筆記本,VC+6.0四操作方法與實驗步驟 1.高斯:#include<stdio.h> void main() int i,j,f,n; float a55,b5,x5,l,k; printf("Input n:"); scanf("%d",&n); printf("Input a:"); for(i=0;i<n;i+) for(f=0;f<n;f+) scanf("%f",&aif); printf("Input b:"); for(i=0;i<

7、n;i+) scanf("%f",&bi); for(i=0;i<n-1;i+) for(j=i+1;j<n;j+) l=-aji/aii; bj=bj+bi*l; for(f=i;f<n;f+) ajf=ajf+aif*l; xn-1=bn-1/an-1n-1; for(i=n-2;i>=0;i-) xi=bi; k=0; for(f=i+1;f<n;f+) k=k-aif*xf; xi=(k+bi)/aii; printf("The answer is "); for(i=0;i<n;i+) printf(

8、"%.4f ",xi);2.LU分解:#include <stdio.h> #include <math.h> #define L 30 double aLL,bL,lLL,uLL,xL,yL; int main() int n,i,j,k,r; printf("n=n"); scanf("%d",&n); printf("ann=n"); for(i=1;i<=n;+i) for(j=1;j<=n;+j) scanf("%lf",&aij);

9、 printf("bn=n"); for(i=1;i<=n;+i) scanf("%lf",&bi); for(i=1;i<=n;+i) for(j=1;j<=n;+j) lij=0; uij=0.0; for(k=1;k<=n;+k) for(j=k;j<=n;+j) ukj=akj; for(r=1;r<k;+r) ukj-=lkr*urj; for(i=k+1;i<=n;+i) lik=aik; for(r=1;r<k;+r) lik-=lir*urk; lik/= ukk; lkk=1.0;

10、 for(i=1;i<=n;+i) yi = bi; for(j=1;j<i;+j) yi-=lij*yj; for(i=n;i>0;-i) xi = yi; for(j=i+1;j<=n;+j) xi-=uij*xj; xi/= uii; for(i=1;i<=n;+i) printf("%0.2lfn",xi); return 0; 五實驗數(shù)據(jù)記錄和處理1.高斯2.LU分解六、實驗結果與分析 本次實驗數(shù)據(jù)較多,在輸入上要多費點功夫,一不小心就全部都錯了。在今后編程過程中,一定要小心謹慎。七、討論、心得 通過本次實驗,我深刻理解了直接法在計算

11、機上解線性方程組的有效性,對于Gauss消元法、LU分解法也有了深刻的理解。實驗地點 逸夫樓402指導教師于亞男太原理工大學學生實驗報告學院名稱軟件學院專業(yè)班級學號學生姓名 實驗日期4月26日成績課程名稱計算機數(shù)值方法實驗題目 線性方程組的迭代解法1、 實驗目的和要求掌握雅可比迭代法和高斯-賽德爾迭代法對方程組進行求解二、實驗內容和原理使用雅可比迭代法或高斯-賽德爾迭代法對下列方程組進行求解。三、主要儀器設備 HP筆記本,VC+6.0四、操作方法與實驗步驟 雅可比迭代法:#include <stdio.h> #include <math.h> int main() do

12、uble a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2;/定義方程組 float x3=0,0,0,sum; int i,j,k,n=3; printf("tt X1tt X2tt X3n"); for(k=0;k<8;k+) for(i=0;i<3;i+) sum=0; for(j=0;j<n;j+) if(i=j)continue; sum=sum+aij*xj; xi=(bi-sum)/aii; printf("第%d次迭代:t",k+1); for(i=0;i<n;i+) pri

13、ntf("%ft",xi); printf("n"); 五、實驗數(shù)據(jù)記錄和處理六、實驗結果與分析 在本次實驗中,編程不太容易,對c/c+的學習應該更進一步。七、討論、心得 通過這次實驗,我明白了雅克比迭代的一般性解法,對于編程的應用也有了更深刻的理解。實驗地點 逸夫樓402指導教師于亞男太原理工大學學生實驗報告學院名稱軟件學院專業(yè)班級學號學生姓名 實驗日期4月26日成績課程名稱計算機數(shù)值方法實驗題目 代數(shù)插值1、 實驗目的和要求 掌握拉格朗日插值法和牛頓插值法求近似解二、實驗內容和原理使用拉格朗日插值法或牛頓插值法求解:已知f(x)在6個點的函數(shù)值如下表

14、所示,運用插值方法,求f(0.596)的近似值。X0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.25386三、主要儀器設備 HP筆記本,VC+6.0四、操作方法與實驗步驟#include "stdafx.h"#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <malloc.h>void difference(float *x,float *y,int n) fl

15、oat *f; int k,i; f=(float *) malloc (n*sizeof(float); for(k=1;k<=n;k+) f0=yk; for(i=0;i<k;i+)fi+1=(fi-yi)/(xk-xi); yk=fk; return; int main() int i,n; float x10,y10,xx,yy; printf("輸?入?結á點?個?數(shù)簓n:阰"); scanf("%d",&n);printf("n"); for(i=0;i<=n-1;i+) printf(

16、"x%d=",i); scanf("%f",&xi);printf("y%d=",i);scanf("%f",&yi);printf("n"); difference(x,(float *)y,n); printf("所ù求ó插?值X:阰"); scanf("%f",&xx); yy=y20; for(i=n-1;i>=0;i-)yy=yy*(xx-xi)+yi; printf("n近ü

17、似?值為a:阰F(%f)=%fn",xx,yy); 五、實驗數(shù)據(jù)記錄和處理六、實驗結果與分析 拉格朗日插值的優(yōu)點是插值多項式特別容易建立,缺點是增加節(jié)點是原有多項式不能利用,必須重新建立,即所有基函數(shù)都要重新計算,這就造成計算量的浪費。所以要用到牛頓插值多項式,兩種方法相結合才能更好的解決多項式的問題。實驗地點 逸夫樓402指導教師于亞男太原理工大學學生實驗報告學院名稱軟件學院專業(yè)班級學號學生姓名實驗日期4月26日成績課程名稱計算機數(shù)值方法實驗題目 最小二乘法擬合多項式一、實驗目的和要求掌握用最小二乘法擬合數(shù)據(jù)的多項式,并求平方誤差二、實驗內容和原理給定數(shù)據(jù)點(xi ,yi),用最小

18、二乘法擬合數(shù)據(jù)的多項式,并求平方誤差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00三、主要儀器設備 HP筆記本,VC+6.0四、操作方法與實驗步驟#include<iostream.h>#include<fstream.h>#define N 15double power(double &a,int n)double b=1;for(int i=0;i<n;i+)b*=a;return b;void Gauss();double XN,YN,sumXN,sumYN,aNN,bN,lNN,xN;void m

19、ain()ofstream outdata;ifstream indata;double s;int i,j,k,n,index;cout<<"請輸入已知點的個數(shù)n="cin>>n;cout<<endl;cout<<"請輸入X和Y:"<<endl; /輸入給定數(shù)據(jù)for(i=0;i<n;i+)cout<<"X"<<i<<"="cin>>Xi;sumX1+=Xi;cout<<"Y&q

20、uot;<<i<<"="cin>>Yi;sumY1+=Yi;cout<<endl;cout<<"sumX1="<<sumX1<<"t"<<"sumY1="<<sumY1<<endl;cout<<"請輸入擬合次數(shù)index="cin>>index;cout<<endl;i=n;sumX0=i;for(i=2;i<=2*index;i+)sumXi=0;for(j=0;j<n;j+)sumXi+=power(Xj,i);cout<<"sumX"<<i<<"="<<sumXi<<endl;for(i=2;i<=index+1;i+)sumYi=0;for(j=0;j<n;j+)sumYi+=power(Xj,i-1)*Yj;cout<<"sumY"<<i<<"="<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論