数值计算实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012级6班###(学号)计算机数值方法
实验报告成绩册
姓名:安元龙
学号:2012060501
成绩:
数值计算方法与算法实验报告
学期: 2014 至___2015 第 1 学期 2014年 10月26日课程名称:__数值计算方法与算法 __ 专业:信息与计算科学 12级5班实验编号: 1实验项目Neton插值多项式指导教师__孙峪怀姓名:安元龙学号: 2012060501 实验成绩:
一、实验目的及要求
实验目的:
掌握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.
#include
#define MAX_N 20
typedef struct tagPOINT
{
double x;
double y;
}POINT;
int main()
{
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 then 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++)
scanf("%lf%lf",&points[i].x,&points[i].y);
printf("Now input the X value:");
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年 10月26日课程名称:__数值计算方法与算法 __ 专业:信息与计算科学 11级5班 实验编号: 2实验项目Romberg算法指导教师__孙峪怀 姓名:安元龙学号: 2012060501 实验成绩: 一、实验目的及要求 实验目的: 熟练掌握数值积分的基本思想和动手推导积分公式的能力,并写出自己设计的变步长算法,用此算法解决实际问题。主要锻炼分析问题及对数值方法产生的误差在实际执行算法中的变化,体会事前误差和事后误差的不同之处。 实验要求:写出Romberg算法的描述,并用此算法计算下列定积分的值,要求满足给定误差。 二、实验内容。 (1)用变步长的Romberg方法计算定积分: ⎰=10sin I xdx 给定误差限为3 10 * 5.0- = ε 三、实验步骤(该部分不够填写.请填写附页) 1.算法分析: 下面用伪码描述Romberg的算法描述: Sstep1 输入区间端点a,b,精度控制值e,循环次数M,定义函数f(x),取n=1,h=b-a; Step2R1,1=(f(a)+f(b))*h/2; Step3for k=2 to M {Rk,1=(R(k-1),1+h(k-1)*∑- = - + 2 2 1 2/) *)1 * 2( ( k i hk i a f/*1 2/- =k k h h*/