您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 拉格朗日插值法分析报告
拉格朗日插值法分析报告一、拉格朗日插值法介绍1、插值概念简介已知)(xf在区间],[ba上1n个不同点nxxx,,10处的函数值),,1,0)((niifyi,求一个至多n次的多项式nnxaxaax10)(使其在给定点处与)(xf同值,既满足插值条件),,1,0()()(niyxfxiiin)(xn称为插值多项式,),,1,0(nixi称为插值节点,],[ba称为插值区间。从几何上看,n次的多项式插值就是过1n个点),,1,0())(,(nixfxii,作一条多项式曲线)(xyn近似曲线)(xfy。y)(xyn)(xfyx图1多项式曲线以及近似曲线2、拉格朗日插值法原理在求满足插值条件n次插值多项式)(xPn之前,先考虑一个简单的插值问题:对节点),,1,0(nixi中任一点)0(nkxk,作一n次多项式)(xlk,使它在该点上取值为1,而在其余点),,1,1,1,0(nkkixi上取值为零,即kikixlik01)(上式表明n个点nkkxxxxx,,,,,,1110都是n次多项式)(xlk的零点,故可设)())(())(()(1110nkkkkxxxxxxxxxxAxl其中,kA为待定系数。由条件1)(kkxl立即可得)())(()(1110nkkkkkkkxxxxxxxxA故)())(()()())(()()(110110nkkkkkknkkkxxxxxxxxxxxxxxxxxl由上式可以写出1n个n次插值多项式)(,),(),(10xlxlxln。我们称它们为在1n个节点nxxx,,,10上的n次基本插值多项式或n次插值基函数。利用插值基函数立即可以写出满足插值条件的n次插值多项式)()()(1100xlyxlyxlynn根据条件kikixlik01)(,容易验证上面多项式在节点ix处的值为),,1,0(niyi,因此,它就是待求的n次插值多项式)(xPn。形如)()()(1100xlyxlyxlynn的插值多项式就是拉格朗日插值多项式,记为)(xLn,即)())(()()())(()()()()()(1101102211nkkkkkknkknnnxxxxxxxxxxxxxxxxxlyxlyxlyxL作为常用的特例,令1n,由上式即得两点插值公式)()(0010101xxxxyyyxL,这是一个线性函数,故又名线性插值。若令1n,则又可得到常用的三点插值公式))(())(())(())(())(())(()(1202102210120120102102xxxxxxxxyxxxxxxxxyxxxxxxxxyxL这是一个二次函数,故又名二次插值或抛物线插值。二、算法设计1、算法描述(1)输入已知点的个数;(2)分别输入已知点X的坐标;(3)分别输入已知点Y的坐标;(4)调用拉格朗日插值函数,求得某点对应的函数值。2、算法流程图=开始分别输入已知点X的坐标和已知点Y的坐标00.0iyy0.1lnkkjlxxxxljij,,,1,,0*yylyyyy*?ni1iiyy3、程序源代码#includestdio.h#includemalloc.hfloatlagrange(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);}
本文标题:拉格朗日插值法分析报告
链接地址:https://www.777doc.com/doc-2449917 .html