《數值計算實驗報告》由會員分享,可線上閱讀,更多相關《數值計算實驗報告(23頁珍藏版)》請在人人文庫網上搜尋。
1、2012級6班#(學号)計算機數值方法實驗報告成績冊姓名:安元龍學号:成績:實驗編号實驗名稱實驗學時實驗成績實驗一Newton插值2實驗二Romberg算法2實驗三求拟合算法2實驗四弦截斷法2實驗五Courant求解方程組2實驗六超松弛疊代求解方程組2實驗七幂法和反幂法2實驗八R-K方法求解初值問題2數值計算方法與算法 實驗報告學期: 2014 至___2015 第 1 學期 2014年 10月26日課程名稱:__數值計算方法與算法 __ 專業:資訊與計算科學 12級5班實驗編号: 1實驗項目Neton插值多項式 指導教師__孫峪懷姓名: 安元龍 學号: 實驗成績: 1、 實驗目的及要求實驗目。
2、的:掌握Newton插值多項式的算法,了解Newton插值多項式構造過程中基函數的繼承特點,掌握差商表的計算特點。實驗要求:1. 給出Newton插值算法2. 用C語言實作算法二、實驗内容三、實驗步驟(該部分不夠填寫.請填寫附頁)1.算法分析:下面用僞碼描述Newton插值多項式的算法:Step1 輸入插值節點數n,插值點序列x(i),f(i),i=1,2,n,要計算的插 值點x.Step2 形成差商表for i=0 to nfor j=n to i f(j)=(f(j)-f(j-1)/(x(j)-x(j-1-i);Step3 置初始值temp=1,newton=f(0)Step4 for i。
3、=1 to ntemp=(x-x(i-1)*tempNewton=newton+temp*f(i);Step5 輸出f(x)的近似數值newton(x)=newton.#include#define MAX_N 20typedef struct tagPOINTdouble x;double y;POINT;int main()int n;int i,j;POINT pointsMAX_N+1;double diffMAX_N+1;double x,tmp,newton=0;printf(n。
4、Input n value:);scanf(%d,&n);if(nMAX_N)printf(The input n is larger then MAX_N,please redefine the MAX_N.n);return 1;if(ni;j-)diffj=(diffj-diffj-1)/(pointsj.x-pointsj-1-i.x);tmp=1;newton=diff0;for(i=0;i#include#define f(x) (sin(x) #define N_H 20#define MAXREPT 10 #define a 1.0 #define b 2.0 #define 。
5、epsilon 0.00001 double computeT(double aa, double bb, long int n) int i;double sum, h=(bb-aa)/n;sum=0;for(i=1;iTm1-epsilon)printf(The Integrate is %lfn,Tm1); return;printf(Return no solved.n);3. 運作結果數值計算方法與算法 實驗報告學期: 2014 至___2015 第 1 學期 2014年 10月26日課程名稱:__數值計算方法與算法 __ 專業:資訊與計算科學 12級5班實驗編号。
6、: 3實驗項目:求拟合算法 指導教師__孫峪懷姓名: 安元龍 學号: 實驗成績: 1、 實驗目的及要求實驗目的:學習了曲線拟合的最小二乘法,會求拟合曲線,線性拟合和二次拟合函數,還有形如aexp(bx)的曲線拟合,實驗主要是求形如aexp(bx)的曲線拟合,并了解體會其意義。實驗要求:1. 形如aexp(bx)曲線拟合的算法;2. 用C語言實作算法二、實驗内容用形如p(x)=aexp(bx)的函數拟合給定()三、實驗步驟(該部分不夠填寫.請填寫附頁)1.算法分析:拟合函數aexp(bx)的算法描述:Step1 輸入m值,及(xi,yi),i=1,2,.,m;Step2 解方程組m a = b 。
7、Step3 輸出p(x)=aexp(bx)即所求拟合函數1.算法分析:2. 用C語言實作算法的程式代碼#include#include#define MAX_N 25typedef struct tagPOINTdouble x;double y;POINT;int main()int m;int i;POINT pointsMAX_N;static double u11,u12,u21,u22,c1,c2;double A,B,tmp;printf(nInpute m value:);scanf(%d,&m);if(m=MAX_N)printf(The inpute m is larger 。
8、than MAX_N,please redefine the MAN_N.n);return 1;if(m#include#define f(x) (x*x*x-7.7*x*x+19.2*x-15.3) #define x0 0.0 #define x1 1.0#define MAXREPT 1000 #define epsilon 0.00001 void main()int i;double x_k=x0,x_k1=x1,x_k2=x1;for(i=0;i-epsilon)printf(!Root:%fn,x_k2); return;x_k=x_k1;x_k1=x_k2; printf(A。
9、fter %d repeate,no solved.n,MAXREPT);5. 運作結果數值計算方法與算法 實驗報告學期: 2014 至___2015_ 第 1 學期 2014年 10月26日課程名稱:__數值計算方法與算法 __ 專業:資訊與計算科學 12級5班實驗編号: 5實驗項目:Courant求解方程組 指導教師__孫峪懷姓名: 安元龍 學号: 實驗成績: 一實驗目的: 用C語言實作直接分解法的算法,掌握直接分解法與高斯消去法的不同之處實驗要求:掌握怎樣将已給的算法在計算機上實作,分析算法的優缺點,找到實作直接分解算法最佳的結構;體會從鍵盤讀入二維數組的源代碼,了解計算機内部存儲二維數。
10、組得規則;體會Courant分解先分解U的行,再分解L列 的算法實作規則;将下面的方程組用直接分解法實作,并比較其與高斯消元法的不同。二、實驗内容1、用Corant直接分解法求解下列方程組:a a . a x ba a . a x = b. . . . . . . . . . . . .a a . a x b三、實驗步驟(該部分不夠填寫.請填寫附頁)1.courant的算法描述:Step1 輸入矩陣A及列向量b;Step2 将矩陣A分解為 A=LU . . . , U= . . . L= . . . . . . . . . . . . . . . . . 1 Step3 對k=1,2,.,n,。
11、=- i=k,k+2,.,n;= - j=k+1,k+2,.,n記=y,解=:= , i=1,2,.,n Step4 再由=得,j=n,n-1,.,2,12. 用C語言實作算法的程式代碼#include#include#define MAX_N 20 int main()int n;int i,j,k;static double aMAX_NMAX_N,bMAX_N,xMAX_N,yMAX_N;static double lMAX_NMAX_N,uMAX_NMAX_N;printf(nInput n value(dim of Ax=b):); scanf(%d,&n);if(nMAX_N)pr。
12、intf(The input n is larger than MAX_N,please redefine the MAX_N.n);return 1;if(n=0;i-) xi=yi;for(j=i+1;j#include#define MAX_N 20 #define MAXREPT 100#define epsilon 0.00001 int main()int n;int i,j,k;double err,w;static double aMAX_NMAX_N,bMAX_NMAX_N,cMAX_N,gMAX_N;static double xMAX_N,nxMAX_N;printf(n。
13、Input n value(dim of AX=C):); scanf(%d,&n);if(nMAX_N)printf(The input n is larger than MAX_N,please redefine the MAX_N.n);return 1;if(n=2)printf(w must between 1 and 2.n);return 1;for(i=0;i#include#define MAX_N 20#define MAXREPT 100#define epsilon 0.0001int mian()int n;int i,j,k;double err;double xm。
14、ax,oxmax;static double aMAX_NMAX_N;static double lMAX_NMAX_N,uMAX_NMAX_N;static double xMAX_N,nxMAX_NMAX_N;printf(nInput n value(dim of AX=C):;scanf(%d,&n);if(nMAX_N)printf(The input n is larger than MAX_N,please redefine the MAX_N.n);return 1;if(1nxmax) xmax=fabs(nxj);for(j=0;j=0;j-)xj=nxj;for(k=j+。
15、1;kxmax) xmax=fabs(xj);for(j=0;j#include#define f(x,y) (x/y) int main()int m;int i;double a,b,y0;double xn,yn,yn1;double k1,k2,k3,k4;double h;printf(nInput the begin and end of x:);scanf(%lf%lf,&a,&b);printf(Input the y value at %f:,a);scanf(%lf,&y0);printf(Input m valuedivide(%f,%f):,a,b);scanf(%d,&m);if(m=0)printf(Please input a number larger than 1.n);return 1;h=(b-a)/m;xn=a;yn=y0;for(i=1;i=m;i+)k1=f(xn,yn);k2=f(xn+h/2),(yn+h*k1/2);k3=f(xn+h/2),(yn+h*k2/2);k4=f(xn+h),(yn+h*k3);yn1=yn+h/6*(k1+2*k2+2*k3+k4);xn+=h;printf(x%d=%f,y%d=%fn,i,xn,i,yn1);yn=yn1;return 0;3. 運作結果。