
拉格朗日数乘法
-
2023年3月2日发(作者:运动会投稿怎么写)拉格朗日多项式插值法浅析
摘要
拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近
工具。“学以致用”是每一门学科都致力追求的境界,数学自然也不例外。下面,
探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的
误差界,并用MATLAB程序来实现这一数学算法的自动化,为复杂的分析研究提
供了一条数学算法的捷径。
【关键词】:拉格朗日多项式算法实现MATLAB
在科学研究和实际的工程设计中,几乎所有的问题都可以用
)(xfy
来表示
其某种内在规律的数量关系。但理想化的函数关系在实际工程应用中是很难寻找
的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利
用多项式对某一函数的进行逼近,使得这个逼近函数能够反映
)(xf
的特性,而
且利用多项式就可以简便的计算相应的函数值。例如我们不知道气温随日期变化
的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随
日期变化的函数满足某一多项式。这样,利用已经测的数据,应用待定系数法便
可以求得一个多项式函数f(x)。应用此函数就可以计算或者说预测其他日期
的气温值。一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越
准确。当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项
式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值
法进行深入探讨。
一、拉格朗日多项式插值算法基本原理
函数
)(xfy
在区间[a,b]上有定义,在是[a,b]上取定的N+1个互异节
点,且在这些点处的函数值)(
0
xf,)(
1
xf,…,)(
n
xf为已知,即yi=f
(xi),(Ni...1,0),若存在一个和)(xf近似的函数)(xP
N
,满足
)()(
iiN
xfxP(Ni...1,0)(1)
则称φ(x)为f(x)的一个插值函数,点
i
x为插值节点,(1)称为插值条件,
区间[a,b]称为插值区间,而误差函数)()(xPxfE
NN
称为插值余项。即是求
一个不超过N次多项式
01
1
1
...)(axaxaxaxPN
N
N
NN
(Ni...1,0)
满足
)()(
iiN
xfxP(Ni...1,0)
则)(xP
N
成为)(xf的N次拉格朗日插值多项式。
二、拉格朗日插值多项式的构造
1、线性插值
当n=1时即为线性插值,这也是代数插值最简单的形式。
根据给定函数
)(xf
在两个互异节点
1
x、
2
x的值)(
1
xf、)(
2
xf,用线性函数
baxxP)(
来近似代替
)(xf
。
由点斜式直线方程可得:
01
0
010
)()(
xx
xx
yyyxP
(2)
公式(1)可整理写成:
01
0
1
10
1
01
)(
xx
xx
y
xx
xx
yxP
(3)
式(2)的右端的每一项都包含了一个线性因子,记
10
1
0,1
)(
xx
xx
xL
01
0
1,1
)(
xx
xx
xL
(4)
很容易看出来,1)()(
11,100,1
xLxL,0)()(
01,110,1
xLxL,因此式(3)中的多
项式)(
1
xp也给定两个定点:
01001
)0()(yyyxP
11011
)0()(yyyxP(5)
式(3)中的项)(
0,1
xL和)(
1,1
xL称为基于节点
0
x和
1
x的拉格朗日系数多项式(线
性插值基函数)。利用这种记法,式(2)可以记为和式:
)()(
,1
1
0
1
xLyxP
k
k
k
(6)
也可以写成如下的矩阵:
1
1
1
)(
01
0
01
10
1
10
101
x
xx
x
xx
xx
x
xx
yyxP
(7)
2、二次插值
当n=1时即为线性插值,这也是常用代数插值。
根据给定函数)(xf在两个互异节点
1
x、
2
x、
3
x的值)(
1
xf、)(
2
xf、)(
3
xf,
构造次数不超过二次的多项式cbxaxxP2
2
)(来近似代替
)(xf
。使满足二次
插值条件)()(
2ii
xfxP(
2,1,0i
)。)(
2
xp的参数直接由插值条件决定,并满足
下面方程组:
21
2
2
11
2
1
00
2
0
ycbxax
ycbxax
ycbxax
(6)
仿线性插值,用基函数的方法求解方程组。求二次式1)(
00
xL,0)(
10
xL,
0)(
20
xL,因
1
x、
2
x是)(
0
xL的两个零点,因此设))(()(
210
xxxxmxL,又
1)(
00
xL,确定系数c=
))((
1
2010
xxxx
,从而导出:
))((
))((
)(
2010
21
0xxxx
xxxx
xL
(7)
同理,构造出条件满足0)(
01
xL,1)(
11
xL,0)(
21
xL的插值多项式
))((
))((
)(
211
20
1
0
xxxx
xxxx
xL
(8)
构造出条件满足0)(
02
xL,0)(
12
xL,1)(
22
xL的插值多项式
))((
))((
)(
122
10
2
0
xxxx
xxxx
xL
(9)
式(7)(8)(9)中的项)(
0
xL、)(
1
xL和)(
2
xL称为基于节点
0
x、
1
x和
3
x的拉格
朗日系数多项式(二次插值基函数)。利用这种记法,相应的有:
)()(
,1
2
0
2
xLyxP
k
k
k
(10)
也可以写成如下的矩阵:
1
))(())(())((
1
))(())(())((
1
))(()2)(())((
1
2
1202
10
1202
10
1202
2101
20
2101
20
2101
2010
21
010
21
2010
2102
x
x
xxxx
xx
xxxx
xx
xxxx
xxxx
xx
xxxx
xx
xxxx
xxxx
xx
xxxx
xx
xxxx
yyyP
3、N次插值
当插值点增加到N+1个时,就可以通过N+1个不同的已知点(
ii
yx,)
来构造一个次数为n的代数多项式P(x)。类似二次插值,先构造一个特殊的n
次多项式)(xL
i
,使其各点满足)(
0
xL
k
0)(...)(
11
kkk
xLxL,1)(
kk
xL,
0)(...)(
11
nkkk
xLxL,因
1
x、
2
x…
n
x是)(xL
k
的N个零点,因此设
))...()()...()(()(
1121nkkkk
xxxxxxxxxxmxL
,又1)(
kk
xL,确定系数
))((
1
2010
xxxx
m
k
,从而导出:
))...()()...()((
))...()()...()((
)(
1121
1121
,
nkkkkkk
nkk
kNxxxxxxxxxx
xxxxxxxxxx
xL
(12)
相应的有:
)()(
,1
0
xLyxP
k
N
k
kN
(13)
也可以写成如下的矩阵:
1
)()()()()()(
1
)()()()()()(
1
)()()()()()(
1
...
1
10
110
10
121
10
101
20
101
20
101
010
21
010
21
010
10
N
N
NNN
N
NNN
N
NNN
N
N
N
N
N
n
N
N
N
N
NN
x
x
xxxx
xxx
xxxx
xxx
xxxx
xxxx
xxx
xxxx
xxx
xxxx
xxxx
xxx
xxxx
xxx
xxxx
yyyP
4、Lagrange插值余项
设],[1baCfN,且
0
x,
1
x,
2
x,...,
N
x[a,b]为N+1个节点。如果x[a,b],
则
)()()(xExPxf
NN
(14)
其中)(xP
N
是可以用来逼近)(xf的多项式:
)()()()(
,
0
xLxfxPxf
kN
N
k
kN
(15)
误差项)(xE
N
形如
)!1(
)())...()((
)(
1
10
N
cfxxxxxx
xE
N
N
N
(16)
C为区间
],[ba
内的某个值。
三、拉格朗日多项式插值实现流程
1、根据初始数据X的取值求出相应的Y值;
2、建立W*W的矩阵;
3、利用卷积公式计算基于节点的Lagrange系数矩阵;
4、求)()(
0
,
xLyxP
N
k
kNkN
四、MATLAB程序代码
Lagrange多项式逼近程序
function[C,L]=lagran(X,Y)
w=length(X);
n=w-1;
L=zeros(w,w);
fork=1:n+1
V=1;
forj=1:n+1
ifk~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(k,:)=V;
end
C=Y*L;
五、实验结果
考虑[0.0,1.2]上的曲线
)cos()(xxfy
。
(1)利用节点
0
x=0.0和
1
x=1.2构造线性插值多项式)(
1
xP;
(2)利用节点
0
x=0.0,
1
x=0.8和
2
x=1.8构造线性插值多项式)(
2
xP;
(3)利用节点
0
x=0.0,
1
x=0.4,
2
x=0.8和
3
x=1.2构造线性插值多项式)(
3
xP。
解答:
(1)输入
X=[0.0,1.2];
Y=cos(X);
[C,L]=lagran(X,Y)
输出
C=
-0.53141.0000
L=
-0.83331.0000
0.83330
则一次逼近函数为15314.0)(
1
xxP
误差函数为)cos(15314.0)(
1
xxxE
函数图像和误差函数图像
00.511.5
0.4
0.5
0.6
0.7
0.8
0.9
1
-1-0.500.511.5
-0.16
-0.14
-0.12
-0.1
-0.08
-0.06
-0.04
-0.02
0
(2)输入
X=[0.0,0.6,1.2];
Y=cos(X);
[C,L]=lagran(X,Y)
输出
C=
-0.4004-0.05081.0000
L=
1.3889-2.50001.0000
-2.77783.33330
1.3889-0.83330
则一次逼近函数为10508.04004.0)(2
2
xxxP
误差函数为)cos(10508.04004.0)(2
2
xxxxE
函数图像和误差函数图像
00.51
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
1
00.51
-8
-6
-4
-2
0
2
4
6
8
10
x10
-3
(3)输入
X=[0.0,0.4,0.81.2];
Y=cos(X);
[C,L]=lagran(X,Y)
输出
C=
0.0922-0.56510.01391.0000
L=
-2.60426.2500-4.58331.0000
7.8125-15.62507.50000
-7.812512.5000-3.75000
2.6042-3.12500.83330
则一次逼近函数为10139.05651.00922.0)(23
1
xxxxP
误差函数为)cos(10139.05651.00922.0)(23
3
xxxxxE
函数图像和误差函数图像
00.51
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
00.51
0
0.002
0.004
0.006
0.008
0.01
0.012
0.014
六、实验分析
拉格朗日多项式插值模型简单,结构紧凑,是经典的插值法。这种算法模型
在科学的各个领域都有良好的应用。但是由于拉格朗日的插值多项式和每个节点
都有关,当改变节点个数时,需要重新计算。
一般情况下,多项式的次数越多,需要的数据就越多,误差就越小,从而预
测也就越准确。例外发生了,龙格在研究多项式插值的时候,发现有的情况下,
并非取节点越多多项式就越精确。著名的例子是
)121(
1
2x
y
,它的插值
函数在两个端点处发生剧烈的波动,造成较大的误差。研究发现,是舍入误差造
成的。
-5-4-3-2-1012345
-2
0
2
4
6
8
10
)121(
1
2x
y
的多项式逼近,基于[-1,1]的等距离节点
七、总结
本学期学习了数值方法这门学科,对我来说是非常欣喜的。它让我知道了高
等代数和数学分析不光是纯理论,是可以用于实践生活中的。也让我感受到了数
学的魅力,算法的强大。这门课程是为数不多的用理论解决实际问题的课程,这
让我在枯燥的数学理论学习中,看到了数学应用的曙光,也感受到了数学的前景。
在这门课的学习中,我始终是兴奋的。因为这门课很多的知识都是在数学分析中
学过的,这让我非常有成就感。当然,老师在课堂中,时不时的给我们注入数学
思想,提高我们的科研能力,对我们在以后的学习和工作中是有极大的帮助的,
在这里,请允许我真诚的说句感谢!
这本书的第一章主要讲了函数的分析性质和二进制的基础,这里介绍了用于
多项式计算的霍纳方法,也就是嵌套乘法。
第二章主要讲方程
0)(xf
的解法,主要介绍了不动点迭代法、波尔查诺二
分法和牛顿-拉夫森割线法。其实这三个方法在数学分析中是有接触的。不动点
迭代法和牛顿-拉夫森割线法在证明递推函数的收敛性经常会用到,二分法也就
是零点定理。所以,这章学习起来也是非常容易的。迭代法必须知道迭代公式
)(
nn
pgp
和给出初始值,再进行逐步迭代,在做一些函数时,是非常慢的。
二分法是需要在某个区间,端点函数值异号时可用,但不能求重根而且收敛速度
慢。割线法收敛速度快,但在
f
的导数为0时,则可能存在被零除错误。所以每
种方法都有它的优缺点,在应用时依情况而定。
第四章主要讲了插值与多项式逼近,讲了泰勒级数逼近、拉格朗日多项式逼
近和牛顿多项式逼近。泰勒级数要求函数存在n阶导数,从而寻找解析函数在区
间的精确逼近多项式,当x远离
0
x时,误差会很多。拉格朗日多项式简单易懂,
但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重
新计算,并且在次数较高时,在端点处会剧烈的震荡,也就是我们常说的龙格现
象。牛顿多项式把
N
p与
1N
p通过递推关系联系起来了,不需要每个节点都重新
计算,并且在进行人工计算是也是有很好的操作性的。
第五章讲曲线拟合,主要讲了最小二乘法和样条插值函数。最小二乘法在高
等代数的选学部分有一定得接触,哪里讲的是线性方程的最小二乘法,在这一章
线性方程的最小二乘法更深入的讲解,并且也介绍了Axcey型的幂函数的最小
二乘法。线性二乘法拟合主要是根据已知条件,确定最佳的系数进行拟合。样条
插值函数主要是利用分段函数在端点处的4个条件来进行拟合。
总之,通过这一学期的学习,对“函数”这个词有了不同的见解,函数是从
初中到现在一直接触的,在研究函数分析性质时,总是机械的分析,从来没有深
入的去想为什么要去研究函数,研究函数到底有什么用处,更别说去想在生活中
怎么应用函数了。特别在样条插值函数拟合时就有很大的感触,通过4个分析性
质就可以解决这么大的难题,我想我刚学习的时候,只能用目瞪口呆来形容。通
过数值方法我似乎有了些其他的想法。