预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

拉格朗日插值法分析报告 拉格朗日插值法介绍 插值概念简介 已知在区间上个不同点处的函数值,求一个至多次的多项式 使其在给定点处与同值,既满足插值条件 称为插值多项式,称为插值节点,称为插值区间。从几何上看,次的多项式插值就是过个点,作一条多项式曲线近似曲线。 图1多项式曲线以及近似曲线 2、拉格朗日插值法原理 在求满足插值条件次插值多项式之前,先考虑一个简单的插值问题:对节点中任一点,作一n次多项式,使它在该点上取值为1,而在其余点上取值为零,即 上式表明个点都是次多项式的零点,故可设 其中,为待定系数。由条件立即可得 故 由上式可以写出个次插值多项式。我们称它们为在个节点上的次基本插值多项式或次插值基函数。 利用插值基函数立即可以写出满足插值条件的次插值多项式 根据条件,容易验证上面多项式在节点处的值为,因此,它就是待求的次插值多项式。 形如的插值多项式就是拉格朗日插值多项式,记为,即 作为常用的特例,令,由上式即得两点插值公式 ,这是一个线性函数,故又名线性插值。 若令,则又可得到常用的三点插值公式 这是一个二次函数,故又名二次插值或抛物线插值。 算法设计 算法描述 输入已知点的个数; 分别输入已知点X的坐标; 分别输入已知点Y的坐标; 调用拉格朗日插值函数,求得某点对应的函数值。 算法流程图 分别输入已知点X的坐标和已知点Y的坐标 开始 = 程序源代码 #include<stdio.h> #include<malloc.h> floatlagrange(float*x,float*y,floatxx,intk) { inti,j; floatl,yy=0.0; for(i=0;i<=k-1;i++) { l=1.0; for(j=0;j<=k-1;j++) if(j!=i)l=l*(xx-x[j])/(x[i]-x[j]); yy=yy+y[i]*l; } returnyy; } intmain() { inti,n,k; floatx[50],y[50],xx,yy; printf("插值次数k:"); scanf("%d",&k); printf("输入差值点个数n:"); scanf("%d",&n); for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i); scanf("%f",&y[i]); } printf("\n"); printf("Inputxx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); }