您好,欢迎访问三七文档
拉格朗日多项式插值法浅析摘要拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。“学以致用”是每一门学科都致力追求的境界,数学自然也不例外。下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用MATLAB程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。【关键词】:拉格朗日多项式算法实现MATLAB在科学研究和实际的工程设计中,几乎所有的问题都可以用)(xfy来表示其某种内在规律的数量关系。但理想化的函数关系在实际工程应用中是很难寻找的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映)(xf的特性,而且利用多项式就可以简便的计算相应的函数值。例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f(x)。应用此函数就可以计算或者说预测其他日期的气温值。一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越准确。当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。一、拉格朗日多项式插值算法基本原理函数)(xfy在区间[a,b]上有定义,在是[a,b]上取定的N+1个互异节点,且在这些点处的函数值)(0xf,)(1xf,…,)(nxf为已知,即yi=f(xi),(Ni...1,0),若存在一个和)(xf近似的函数)(xPN,满足)()(iiNxfxP(Ni...1,0)(1)则称φ(x)为f(x)的一个插值函数,点ix为插值节点,(1)称为插值条件,区间[a,b]称为插值区间,而误差函数)()(xPxfENN称为插值余项。即是求一个不超过N次多项式0111...)(axaxaxaxPNNNNN(Ni...1,0)满足)()(iiNxfxP(Ni...1,0)则)(xPN成为)(xf的N次拉格朗日插值多项式。二、拉格朗日插值多项式的构造1、线性插值当n=1时即为线性插值,这也是代数插值最简单的形式。根据给定函数)(xf在两个互异节点1x、2x的值)(1xf、)(2xf,用线性函数baxxP)(来近似代替)(xf。由点斜式直线方程可得:010010)()(xxxxyyyxP(2)公式(1)可整理写成:010110101)(xxxxyxxxxyxP(3)式(2)的右端的每一项都包含了一个线性因子,记1010,1)(xxxxxL0101,1)(xxxxxL(4)很容易看出来,1)()(11,100,1xLxL,0)()(01,110,1xLxL,因此式(3)中的多项式)(1xp也给定两个定点:01001)0()(yyyxP11011)0()(yyyxP(5)式(3)中的项)(0,1xL和)(1,1xL称为基于节点0x和1x的拉格朗日系数多项式(线性插值基函数)。利用这种记法,式(2)可以记为和式:)()(,1101xLyxPkkk(6)也可以写成如下的矩阵:111)(0100110110101xxxxxxxxxxxyyxP(7)2、二次插值当n=1时即为线性插值,这也是常用代数插值。根据给定函数)(xf在两个互异节点1x、2x、3x的值)(1xf、)(2xf、)(3xf,构造次数不超过二次的多项式cbxaxxP22)(来近似代替)(xf。使满足二次插值条件)()(2iixfxP(2,1,0i)。)(2xp的参数直接由插值条件决定,并满足下面方程组:212211210020ycbxaxycbxaxycbxax(6)仿线性插值,用基函数的方法求解方程组。求二次式1)(00xL,0)(10xL,0)(20xL,因1x、2x是)(0xL的两个零点,因此设))(()(210xxxxmxL,又1)(00xL,确定系数c=))((12010xxxx,从而导出:))(())(()(2010210xxxxxxxxxL(7)同理,构造出条件满足0)(01xL,1)(11xL,0)(21xL的插值多项式))(())(()(2112010xxxxxxxxxL(8)构造出条件满足0)(02xL,0)(12xL,1)(22xL的插值多项式))(())(()(1221020xxxxxxxxxL(9)式(7)(8)(9)中的项)(0xL、)(1xL和)(2xL称为基于节点0x、1x和3x的拉格朗日系数多项式(二次插值基函数)。利用这种记法,相应的有:)()(,1202xLyxPkkk(10)也可以写成如下的矩阵:1))(())(())((1))(())(())((1))(()2)(())((12120210120210120221012021012021012010210102120102102xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyP3、N次插值当插值点增加到N+1个时,就可以通过N+1个不同的已知点(iiyx,)来构造一个次数为n的代数多项式P(x)。类似二次插值,先构造一个特殊的n次多项式)(xLi,使其各点满足)(0xLk0)(...)(11kkkxLxL,1)(kkxL,0)(...)(11nkkkxLxL,因1x、2x…nx是)(xLk的N个零点,因此设))...()()...()(()(1121nkkkkxxxxxxxxxxmxL,又1)(kkxL,确定系数))((12010xxxxmk,从而导出:))...()()...()(())...()()...()(()(11211121,nkkkkkknkkkNxxxxxxxxxxxxxxxxxxxxxL(12)相应的有:)()(,10xLyxPkNkkN(13)也可以写成如下的矩阵:1)()()()()()(1)()()()()()(1)()()()()()(1...11011010121101012010120101010210102101010NNNNNNNNNNNNNNNNNNnNNNNNNxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyP4、Lagrange插值余项设],[1baCfN,且0x,1x,2x,...,Nx[a,b]为N+1个节点。如果x[a,b],则)()()(xExPxfNN(14)其中)(xPN是可以用来逼近)(xf的多项式:)()()()(,0xLxfxPxfkNNkkN(15)误差项)(xEN形如)!1()())...()(()(110NcfxxxxxxxENNN(16)C为区间],[ba内的某个值。三、拉格朗日多项式插值实现流程1、根据初始数据X的取值求出相应的Y值;2、建立W*W的矩阵;3、利用卷积公式计算基于节点的Lagrange系数矩阵;4、求)()(0,xLyxPNkkNkN四、MATLAB程序代码Lagrange多项式逼近程序function[C,L]=lagran(X,Y)w=length(X);n=w-1;L=zeros(w,w);fork=1:n+1V=1;forj=1:n+1ifk~=jV=conv(V,poly(X(j)))/(X(k)-X(j));endendL(k,:)=V;endC=Y*L;五、实验结果考虑[0.0,1.2]上的曲线)cos()(xxfy。(1)利用节点0x=0.0和1x=1.2构造线性插值多项式)(1xP;(2)利用节点0x=0.0,1x=0.8和2x=1.8构造线性插值多项式)(2xP;(3)利用节点0x=0.0,1x=0.4,2x=0.8和3x=1.2构造线性插值多项式)(3xP。解答:(1)输入X=[0.0,1.2];Y=cos(X);[C,L]=lagran(X,Y)输出C=-0.53141.0000L=-0.83331.00000.83330则一次逼近函数为15314.0)(1xxP误差函数为)cos(15314.0)(1xxxE函数图像和误差函数图像00.511.50.40.50.60.70.80.91-1-0.500.511.5-0.16-0.14-0.12-0.1-0.08-0.06-0.04-0.020(2)输入X=[0.0,0.6,1.2];Y=cos(X);[C,L]=lagran(X,Y)输出C=-0.4004-0.05081.0000L=1.3889-2.50001.0000-2.77783.333301.3889-0.83330则一次逼近函数为10508.04004.0)(22xxxP误差函数为)cos(10508.04004.0)(22xxxxE函数图像和误差函数图像00.510.50.550.60.650.70.750.80.850.90.95100.51-8-6-4-20246810x10-3(3)输入X=[0.0,0.4,0.81.2];Y=cos(X);[C,L]=lagran(X,Y)输出C=0.0922-0.56510.01391.0000L=-2.60426.2500-4.58331.00007.8125-15.62507.50000-7.812512.5000-3.750002.6042-3.12500.83330则一次逼近函数为10139.05651.00922.0)(231xxxxP误差函数为)cos(10139.05651.00922.0)(233xxxxxE函数图像和误差函数图像00.510.50.60.70.80.911.11.200.5100.0020.0040.0060.0080.010.0120.014六、实验分析拉格朗日多项式插值模型简单,结构紧凑,是经典的插值法。这种算法模型在科学的各个领域都有良好的应用。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。一般情况下,多项式的次数越多,需要的数据就越多,误差就越小,从而预测也就越准确。例外发生了,龙格在研究多项式插值的时候,发现有的情况下,并非取节点越多多项式就越精确。著名的例子是)121(12xy,它的插值函数在两个端点处发生剧烈的波动,造成较大的误差。研究发现,是舍入误差造成的。-5-4-3-2-1012345-20246810)121(12xy的多项式逼近,基于[-1,1]的等距离节点七、总结本学期学习了数值方法这门学科,对我来说是非常欣喜的。它让我知道了高等代数和数学分析不光是纯理论,是可以用于实践生活中的。也让我感受到了数学的魅力,算法的强大。这门课程是为数不多的用理论解决实际问题的课程,这让我在枯燥的数学理论学习中,看到了数学应用的曙光,也感受到了数学的前景。在这门课的学习中,我始终是兴奋的。因为这门课很多的知识都是在数学分析中学过的,这让我非常有成就感。当然,老师在课堂中,时不时的给我们注入数学思想,提高我们的科研能力,对我们在以后的学习和工作中是有极大的帮助的,在这里,请允许我真诚的说句感谢!这本书的第一章主要讲了函数的
本文标题:拉格朗日多项式插值
链接地址:https://www.777doc.com/doc-6373043 .html