资源描述:
《计算方法实验2插值法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、实验目的与任务1.掌握拉格朗日插值、牛顿插值、分段插值的基本原理;2.理解各种插值法的优缺点和插值的误差;3.熟悉插值法的一般过程。二、实验涉及的相关知识点线性插值函数的使用。三、实验内容与过程(1)【实验1.1】利用C语言编程计算:已知sin0.32=0.314567,sin0.34=0.333487,sin0.36=0.352274,用线性插值法及抛物线插值法计算sin0.3367的值并估计截断误差。线性插值公式为:由(xk,yk)、(xk+1,yk+1)得lk(x)=(x-xk+1)/(xk-xk
2、+1),lk+1(x)=(x-xk)/(xk+1-xk)L1(x)=yk*lk(x)+yk+1*lk+1(x)抛物线插值公式为:由(xk-1,yk-1)、(xk,yk)、(xk+1,yk+1)三点可得插值公式:lk-1(x)=(x-xk)(x-xk+1)/((xk-1-xk)(xk-1-xk+1))lk(x)=(x-xk-1)(x-xk+1)/((xk-xk-1)(x-xk+1))lk+1(x)=(x-xk-1)(x-xk)/((xk+1-xk-1)(xk+1-xk))L2(x)=yk-1*lk-1(x)+
3、yk*lk(x)+yk+1*lk+1(x)(2)【实验1.2】牛顿插值法:函数值与自变量的差商就是均差,一阶均差(或记作f[x0,x1]);二阶均差(或记作f[x0,x1,x2])均差有两条常用性质:(1)均差用函数值的线性组合表示;(2)均差与插值节点顺序无关。用均差为系数构造多项式,就是牛顿插值多项式Nn(x)=f(x0)+f(x0,x1)(x-x0)+f(x0,x1,x2)(x-x0)(x-x1)+…+f(x0,x1,x2,…,xn)(x-x0)(x-x1)(x-x2)…(x-xn-1)牛顿插值多项式
4、的余项为Rn(x)=f(x)-Nn(x)=f(x,x0,x1,x2,…,xn)(x-x0)(x-x1)(x-x2)…(x-xn-1)(x-xn)四、实验结果及分析【实验1.1】线性插值结果:抛物线插值结果:【实验1.2】线性插值结果:抛物线插值结果:五、实验相关说明有的容易实现,但在调式时就有很大问题,VC++不是英文输入法下作的都不行。VC++6.0提示错误时不够完善,我觉得用MicrosoftVisualStudio2008中的VC++比较好。六、实验有关附件(如程序、附图、参考资料,等)【实验1.1】
5、用MicrosoftVisualStudio2008中的C++实现#include#includeusingnamespacestd;intmain(){intN,i,j;floata[10],b[10];floatX,Y=0,s,t,k,U,W;cout<<"请输入插值节点的个数(N>=2的整数):";cin>>N;cout<<"请输入各个插值点和对应的函数值:";for(i=j=0;(i6、<<"插值点:";cin>>a[i];cout<<"请输入第"<>b[j];}cout<<"输入需求差值点的值:";cin>>X;for(j=0;j7、值法:#include#include#includeusingnamespacestd;intmain(){intI,j,k,n;floatx[10],y[10],a,b,p;cout<<"输入插值点个数n:";cin>>n;for(I=0;I>x[I];cout<<"请输入第"<>y[I];}cout<<"输入需求插值点
8、的值:";cin>>a;b=0;k=0;do{p=1;j=0;do{if(j!=k)p=p*(a-x[j])/(x[k]-x[j]);j++;}while(j