数值计算实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法
实验报告成绩册
**:***
学号:
成绩:
数值计算方法与算法实验报告
学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班
实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀
姓名:宋元台学号:实验成绩:
一、实验目的及要求
实验目的:
掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。
实验要求:
1. 给出Newton插值算法
2. 用C语言实现算法
二、实验内容
三、实验步骤(该部分不够填写.请填写附页)
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 {