资源描述:
《拉格朗日多项式插值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、拉格朗日多项式插值法浅析摘要拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。“学以致用”是每一门学科都致力追求的境界,数学自然也不例外。下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用MATLAB程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。【关键词】:拉格朗日多项式算法实现MATLAB在科学研究和实际的工程设计中,几乎所有的问题都可以用来表示其某种内在规律的数量关系。但理想化的函数关系在实际工程应用中是很难寻找的,
2、对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映的特性,而且利用多项式就可以简便的计算相应的函数值。例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f(x)。应用此函数就可以计算或者说预测其他日期的气温值。一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越准确。当然,构造组合多项式方法比
3、较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。一、拉格朗日多项式插值算法基本原理函数在区间[a,b]上有定义,在是[a,b]上取定的N+1个互异节点,且在这些点处的函数值,,…,为已知,即yi=f(xi),(),若存在一个和近似的函数,满足()(1)则称φ(x)为f(x)的一个插值函数,点为插值节点,(1)称为插值条件,区间[a,b]称为插值区间,而误差函数称为插值余项。即是求一个不超过N次多项式()满足()则成为的N次拉格朗日插
4、值多项式。二、拉格朗日插值多项式的构造1、线性插值当n=1时即为线性插值,这也是代数插值最简单的形式。根据给定函数在两个互异节点、的值、,用线性函数来近似代替。由点斜式直线方程可得:(2)公式(1)可整理写成:(3)式(2)的右端的每一项都包含了一个线性因子,记(4)很容易看出来,,,因此式(3)中的多项式也给定两个定点:(5)式(3)中的项和称为基于节点和的拉格朗日系数多项式(线性插值基函数)。利用这种记法,式(2)可以记为和式:(6)也可以写成如下的矩阵:(7)2、二次插值当n=1时即为线性插值,这也是
5、常用代数插值。根据给定函数在两个互异节点、、的值、、,构造次数不超过二次的多项式来近似代替。使满足二次插值条件()。的参数直接由插值条件决定,并满足下面方程组:(6)仿线性插值,用基函数的方法求解方程组。求二次式,,,因、是的两个零点,因此设,又,确定系数c=,从而导出:(7)同理,构造出条件满足,,的插值多项式(8)构造出条件满足,,的插值多项式(9)式(7)(8)(9)中的项、和称为基于节点、和的拉格朗日系数多项式(二次插值基函数)。利用这种记法,相应的有:(10)也可以写成如下的矩阵:3、N次插值当插
6、值点增加到N+1个时,就可以通过N+1个不同的已知点()来构造一个次数为n的代数多项式P(x)。类似二次插值,先构造一个特殊的n次多项式,使其各点满足,,,因、…是的N个零点,因此设,又,确定系数,从而导出:(12)相应的有:(13)也可以写成如下的矩阵:4、Lagrange插值余项设,且,,,...,[a,b]为N+1个节点。如果x[a,b],则(14)其中是可以用来逼近的多项式:(15)误差项形如(16)C为区间内的某个值。三、拉格朗日多项式插值实现流程1、根据初始数据X的取值求出相应的Y值;2、建立W
7、*W的矩阵;3、利用卷积公式计算基于节点的Lagrange系数矩阵;4、求四、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]上的曲线。(1)利用节点=0.0和=1.2构造线性插值多项式;(
8、2)利用节点=0.0,=0.8和=1.8构造线性插值多项式;(3)利用节点=0.0,=0.4,=0.8和=1.2构造线性插值多项式。解答:(1)输入X=[0.0,1.2];Y=cos(X);[C,L]=lagran(X,Y)输出C=-0.53141.0000L=-0.83331.00000.83330则一次逼近函数为误差函数为函数图像和误差函数图像(2)输入X=[0.0,0.6,1.2];Y=cos(X);[C,