天天看点

c语言数值分析实验报告,数值计算实验报告

《数值计算实验报告》由会员分享,可在线阅读,更多相关《数值计算实验报告(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. 运行结果。