《计算方法实验2插值法.doc》由会员分享,可在线阅读,更多相关《计算方法实验2插值法.doc(5页珍藏版)》请在金锄头文库上搜索。
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+1), lk+1(x)=(x-xk)/(xk+1-xk)L1(x)=yk*lk(x)
2、+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)+yk*lk(x)+yk+1*lk+1(x)(2)【实验1.2】牛顿插值法:函数值与自变量的差商就是均差,一阶均差 (或记作f x0,x1);二阶均差 (或记作f x0,x1,x2)均差
3、有两条常用性质:(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) 牛顿插值多项式的余项为Rn(x)=f(x)Nn(x)=f(x,x0,x1,x2,xn)(xx0)(xx1)(xx2)(xxn1)(xxn)四、实验结果及分析【实验1.1】线性插值结果:抛物线插值结果:【实验1.2】线性插值结果:抛物线插值结果:五、实验相关说明有的容易实现,但在调式时就有很大
4、问题,VC+不是英文输入法下作的都不行。VC+6.0提示错误时不够完善,我觉得用Microsoft Visual Studio 2008中的VC+比较好。六、实验有关附件(如程序、附图、参考资料,等)【实验1.1】用Microsoft Visual Studio 2008中的C+实现#include #include using namespace std;int main()int N,i,j;float a10,b10;float X,Y=0,s,t,k,U,W;cout= 2的整数):;cinN;cout请输入各个插值点和对应的函数值:n;for(i=j=0;(iN)&(jN);i+,j
5、+) cout请输入第i+1ai;cout请输入第j+1bj;coutX;for(j=0;jN;j+)s=aj;t=bj;U=W=1;for(i=0;iN;i+)if(i = j) continue;U=U*(X-ai);W=W*(s-ai);k=U*t/W,Y=Y+k;cout所求得的节点函数值是: Yendl;system(pause);【实验1.2】牛顿插值法:#include #include #include using namespace std;int main()int I,j,k,n;float x10,y10,a,b,p;coutn;for(I=0;In;I+) cout请输入第I+1xI; cout请输入第I+1yI;couta;b=0; k=0; dop=1; j=0; do if(j!=k) p=p*(a-xj)/(xk-xj); j+; while(jn); b=b+p*yk; k+;while(kn);cout需求插值点的值 X= aendl;cout需求插值点对应的函数值 Y= bendl;system(pause);