当前位置:文档之家› 数值计算实验报告

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 **:*** 学号:

成绩: 实验编号 实验名称 实验学实验成绩

数值计算方法与算法 实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日 课程名称: 数值计算方法与算法 专业:信息与计算科学 班级 12级5班 实验编号: 1实验项目Neton插值多项式 指导教师:孙峪怀 姓名: 宋元台 学号: 实验成绩:

一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

时 实验一 Newton插值 2 实验二 Romberg算法 2 实验三 求拟合算法 2 实验四 弦截断法 2 实验五 Courant求解方程组 2 实验六 超松弛迭代求解方程组 2 实验七 幂法和反幂法 2 实验八 R-K方法求解初值问题 2 1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插 值点x. Step2 形成差商表 for i=0 to n for 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=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #include{ int n; int i,j; POINT points[MAX_N+1];double diff[MAX_N+1]; double x,tmp,newton=0; printf("\nInput n value:"); scanf("%d",&n); if(n>MAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i); scanf("%lf %lf",&points[i].x,&points[i].y); } printf("now input the value of x:\n"); scanf("%lf",&x); for(i=0;i<=n;i++) diff[i]=points[i].y; for(i=0;i{ for(j=n;j>i;j--) { diff[j]=(diff[j]-diff[j-1])(points[j].x-points[j-1-i].x); } } tmp=1;newton=diff[0]; for(i=0;i{ tmp=tmp*(x-points[i].x); newton=newton+tmp*diff[i+1]; } printf("newton(%f)=%f\n",x,newton); return 0; } 程序运行结果过程及截图为:

数值计算方法与算法 实验报告 学期: 2014 至2015 第 1 学期 2014年 12月1日 课程名称: 数值计算方法与算法 专业:信息与计算科学 班级 12级5班

实验编号: 2实验项目Romberg算法 指导教师:孙峪怀 姓名: 宋元台 学号: 实验成绩: 一、实验目的及要求 实验目的: 熟练掌握数值积分的基本思想和动手推导积分公式的能力,并写出自己设计的变步长算法,用此算法解决实际问题。主要锻炼分析问题及对数值方法产生的误差在实际执行算法中的变化,体会事前误差和事后误差的不同之处。 实验要求:写出Romberg算法的描述,并用此算法计算下列定积分的值,

要求满足给定误差。 二、实验内容。 (1)用变步长的Romberg方法计算定积分: 给定误差限为 三、实验步骤(该部分不够填写.请填写附页) 1.算法分析: 下面用伪码描述Romberg的算法描述: Sstep1 输入区间端点a,b,精度控制值e,循环次数M,定义函数f(x),取n=1, (x)) #define N_H 20 #define MAXREPT 10 #define a 1.0 #define b 2.0 #define epsilon 0.00001 double computeT(double aa,double bb,long int n) { int i;double sum=0.0;double ; for(i=1;i{ sum+=f(aa+i* (() { int i; long int n=N_H,m=0; double T[MAXREPT+1][2]; T[0][1]=computeT(a,b,n); n*=2; for (m=1;m{ for (i=0;i{ T[i][0]=T[i][1]; } T[0][1]=computeT(a,b,n); n*=2; for (i=1;i<=m;i++) { T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])(pow(2,2*m)-1);

if((T[m-1][1]T[m][1]-epsilon)) { printf("the integrate is %lf\n",T[m][1]); return; } } } printf("return no solved...\n"); } 2.运行结果

数值计算方法与算法 实验报告 学期: 2014 至2015 第 1 学期 2014年 12月1日 课程名称: 数值计算方法与算法 专业:信息与计算科学 班级 12级5班

实验编号: 3实验项目:求拟合算法 指导教师:孙峪怀 姓名: 宋元台 学号: 实验成绩: 一、实验目的及要求 实验目的: 学习了曲线拟合的最小二乘法,会求拟合曲线,线性拟合和二次拟合函数,还有形如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

Step3 输出p(x)=aexp(bx)即所求拟合函数 1.算法分析: 2.用C语言实现算法的程序代码 #include{ int m; int i; POINT points[MAX_N]; static double u11,u12,u21,u22,c1,c2; double A,B,tmp; printf("\nInput m value"); scanf("%d",&m); if(m>=MAX_N) { printf("The input m is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(m<=0) { printf("Please input a number between 1 and %d",MAX_N); return 1; } printf("Now input the (x_i,y_i),i=1,...,%d:\n",m); for(i=1;i<=m;i++) {

相关主题