拉格朗日插值法

拉格朗日插值法是一种在数值分析中用于找到通过多个已知点的多项式函数的方法。该方法由多个拉格朗日基本多项式组合而成,确保在每个给定点取到相应的值。本文介绍了拉格朗日插值法的定义、存在性和唯一性的证明,以及通过插值法推导解方程组的过程。

1. 拉格朗日插值法简介

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起。
在这里插入图片描述

约瑟夫·拉格朗日伯爵(1736 -1813)

2.定义

对某个多项式函数,已知有给定的k+1k + 1k+1个取值点:(x0,y0),…,(xk,yk)(x_{0},y_{0}),\ldots ,(x_{k},y_{k})(x0,y0),,(xk,yk),其中xjx_jxj对应着自变量的位置,而yjy_{j}yj对应着函数在这个位置的取值。假设任意两个不同的xjx_jxj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
L(x):=∑j=0kyjℓj(x)L(x):=\sum _{{j=0}}^{{k}}y_{j}\ell _{j}(x)L(x):=j=0kyjj(x)
其中每个ℓj(x)\ell _{j}(x)j(x)为拉格朗日基本多项式(或称插值基函数),其表达式为:

ℓj(x):=∏i=0, i≠jkx−xixj−xi=(x−x0)(xj−x0)⋯(x−xj−1)(xj−xj−1)(x−xj+1)(xj−xj+1)⋯(x−xk)(xj−xk)\ell _{j}(x):=\prod _{{i=0,\,i\neq j}}^{{k}}{\frac {x-x_{i}}{x_{j}-x_{i}}}={\frac {(x-x_{0})}{(x_{j}-x_{0})}}\cdots {\frac {(x-x_{{j-1}})}{(x_{j}-x_{{j-1}})}}{\frac {(x-x_{{j+1}})}{(x_{j}-x_{{j+1}})}}\cdots {\frac {(x-x_{{k}})}{(x_{j}-x_{{k}})}}j(x):=i=0,i=jkxjxixxi=(xjx0)(xx0)(xjxj1)(xxj1)(xjxj+1)(xxj+1)(xjxk)(xxk)

拉格朗日基本多项式ℓj(x)\ell _{j}(x)j(x)的特点是在xjx_{j}xj上取值为1,在其它的点xi, i≠jx_{i},\,i\neq jxi,i=j上取值为0。

即:对于给定的n+1n+1n+1个点(x0,y0),(x1,y1),…,(xn,yn)(x_{0},y_{0}),(x_{1},y_{1}),\ldots ,(x_{n},y_{n})(x0,y0),(x1,y1),,(xn,yn),对应于它们的次数不超过nnn的拉格朗日多项式LLL只有一个。

3. 证明

3.1 存在性证明

对于给定的k+1k+1k+1个点:(x0,y0),…,(xk,yk)(x_{0},y_{0}),\ldots ,(x_{k},y_{k})(x0,y0),,(xk,yk),拉格朗日插值法的思路是找到一个在一点xjx_{j}xj取值为1,而在其他点取值都是0的多项式ℓj(x)\ell _{j}(x)j(x)。这样,多项式yjℓj(x)y_{j}\ell _{j}(x)yjj(x)在点xjx_{j}xj取值为yjy_{j}yj,而在其他点取值都是0。而多项式L(x):=∑j=0kyjℓj(x)L(x):=\sum _{{j=0}}^{{k}}y_{j}\ell _{j}(x)L(x):=j=0kyjj(x)就可以满足:
L(xj)=∑i=0kyiℓi(xj)=0+0+⋯+yj+⋯+0=yjL(x_{j})=\sum _{{i=0}}^{{k}}y_{i}\ell _{i}(x_{j})=0+0+\cdots +y_{j}+\cdots +0=y_{j}L(xj)=i=0kyii(xj)=0+0++yj++0=yj

在其它点取值为0的多项式容易找到,例如:
(x−x0)⋯(x−xj−1)(x−xj+1)⋯(x−xk)(x-x_{0})\cdots (x-x_{{j-1}})(x-x_{{j+1}})\cdots (x-x_{{k}})(xx0)(xxj1)(xxj+1)(xxk)
它在点xjx_{j}xj取值为:(xj−x0)⋯(xj−xj−1)(xj−xj+1)⋯(xj−xk)(x_{j}-x_{0})\cdots (x_{j}-x_{{j-1}})(x_{j}-x_{{j+1}})\cdots (x_{j}-x_{{k}})(xjx0)(xjxj1)(xjxj+1)(xjxk)。由于已经假定xix_{i}xi两两互不相同,因此上面的取值不等于0。于是,将多项式除以这个取值,就得到一个满足“在xjx_{j}xj取值为1,而在其他点取值都是0的多项式”:

ℓj(x):=∏i=0, i≠jkx−xixj−xi=(x−x0)(xj−x0)⋯(x−xj−1)(xj−xj−1)(x−xj+1)(xj−xj+1)⋯(x−xk)(xj−xk)\ell _{j}(x):=\prod _{{i=0,\,i\neq j}}^{{k}}{\frac {x-x_{i}}{x_{j}-x_{i}}}={\frac {(x-x_{0})}{(x_{j}-x_{0})}}\cdots {\frac {(x-x_{{j-1}})}{(x_{j}-x_{{j-1}})}}{\frac {(x-x_{{j+1}})}{(x_{j}-x_{{j+1}})}}\cdots {\frac {(x-x_{{k}})}{(x_{j}-x_{{k}})}}j(x):=i=0,i=jkxjxixxi=(xjx0)(xx0)(xjxj1)(xxj1)(xjxj+1)(xxj+1)(xjxk)(xxk)
这就是拉格朗日基本多项式。

3.2 唯一性证明

次数不超过kkk的拉格朗日多项式至多只有一个,因为对任意两个次数不超过kkk的拉格朗日多项式:P1P_{1}P1P2P_{2}P2,它们的差P1−P2P_{1}-P_{2}P1P2在所有k+1k+1k+1个点上取值都是0,因此必然是多项式(x−x0)(x−x1)⋯(x−xk)(x-x_{0})(x-x_{{1}})\cdots (x-x_{{k}})(xx0)(xx1)(xxk)的倍数。因此,如果这个差P1−P2P_{1}-P_{2}P1P2不等于0,次数就一定不小于k+1k+1k+1。但是P1−P2P_{1}-P_{2}P1P2是两个次数不超过k的多项式之差,它的次数也不超过k。所以P1−P2=0P_{1}-P_{2}=0P1P2=0,也就是说P1=P2P_{1}=P_{2}P1=P2。这样就证明了唯一性。

4.拉格朗日插值法

 思考的问题:对于某一个未知函数的一组观测或者实验数据,寻找一个多项式函数,使这个多项式函数能够过这些点。

例如,已知下面这几个点,我想找到一根穿过它们的曲线:
在这里插入图片描述
假设这根曲线是一个二次多项式:y=a0+a1x+a2x2y=a_0+a_1x+a_2x^2y=a0+a1x+a2x2
因为已知有三个点,可以通过下列方程组解出这个二次多项式:

{y1=a0+a1x1+a2x12y3=a0+a1x2+a2x22y3=a0+a1x3+a2x32\begin{cases} y_1=a_0+a_1x_1+a_2x_1^2 \\ y_3=a_0+a_1x_2+a_2x_2^2 \\ y_3=a_0+a_1x_3+a_2x_3^2 \end{cases}y1=a0+a1x1+a2x12y3=a0+a1x2+a2x22y3=a0+a1x3+a2x32

不过这里不打算通过解方程来得到这根二次曲线,我们来看看拉格朗日是怎么解出这根曲线的?

4.1 拉格朗日的思考

首先,这是二次曲线。
其次,拉格朗日认为可以通过三根二次曲线相加来达到目标。那么,这三根二次曲线长什么样呢?

第一根二次曲线f1(x)f_1(x)f1(x),在点x1x_1x1处取值为1,其余两点取值为0:
在这里插入图片描述
第二根二次曲线f2(x)f_2(x)f2(x),在点x2x_2x2处取值为1,其余两点取值为0:
在这里插入图片描述
第三根二次曲线f3(x)f_3(x)f3(x),在点x3x_3x3处取值为1,其余两点取值为0:
在这里插入图片描述
这就是朗格朗日需要的三根曲线。

  • y1f1(x)y_1f_1(x)y1f1(x)可以保证,在x1x_1x1点处,取值为y1y_1y1,其余两点取值为0。
  • y2f2(x)y_2f_2(x)y2f2(x)可以保证,在x2x_2x2点处,取值为y2y_2y2,其余两点取值为0。
  • y3f3(x)y_3f_3(x)y3f3(x)可以保证,在x3x_3x3点处,取值为y3y_3y3,其余两点取值为0。

则有:f(x)=y1f1(x)+y2f2(x)+y3f3(x)f(x)=y_1f_1(x)+y_2f_2(x)+y_3f_3(x)f(x)=y1f1(x)+y2f2(x)+y3f3(x)

一个动画来展示一一穿过这三个点:
在这里插入图片描述
拉格朗日伯爵说,看,这三根曲线就可以组成我在寻找的曲线:
在这里插入图片描述

4.2 插值法推导

用符号来表示这三根曲线:fi(xj),i=1,2,3,j=1,2,3f_i(x_j),i=1,2,3,j=1,2,3fi(xj),i=1,2,3,j=1,2,3

首先,fif_ifi必须是二次函数。其次,需要满足的条件是
fi(xj)={1,i=j0,i≠jf_i(x_j)=\begin{cases} 1, & \text {$i=j$} \\0, & \text {$i \neq j$} \end{cases}fi(xj)={1,0,i=ji=j

那么,如下构造f1(x)f_1(x)f1(x)很显然可以满足上述条件:
f1(x)=(x−x2)(x−x3)(x1−x2)(x1−x3)f_1(x)=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}f1(x)=(x1x2)(x1x3)(xx2)(xx3)

不失一般性,写成:
fi(x)=∏i≠j1≤j≤3x−xjxi−xjf_i(x)= \quad \prod_{i\neq j}^{1\leq j \leq3} \frac{x-x_j}{x_i-x_j}fi(x)=i=j1j3xixjxxj

因此,最终得到:
f(x)=∑i=13yifi(x)f(x)=\sum_{i=1}^3 y_if_i(x)f(x)=i=13yifi(x)

这就是拉格朗日插值法。上面的思路要推广到更多点的插值也非常容易。

4.2 解答开始提出的方程组

如何解下面这个三元一次方程组:
{y1=a0+a1x1+a2x12y3=a0+a1x2+a2x22y3=a0+a1x3+a2x32\begin{cases} y_1=a_0+a_1x_1+a_2x_1^2 \\ y_3=a_0+a_1x_2+a_2x_2^2 \\ y_3=a_0+a_1x_3+a_2x_3^2 \end{cases}y1=a0+a1x1+a2x12y3=a0+a1x2+a2x22y3=a0+a1x3+a2x32

(x1,y1),(x2,y2),(x3,y3)(x_1,y_1),(x_2,y_2),(x_3,y_3)(x1,y1),(x2,y2),(x3,y3)三个点是已知的,因此上面实际是一个线性方程组:
(y1y2y3 )⏟y⃗=(1x1x121x2x221x3x32 )⏟A(a0a1a2 )⏟a⃗ \underbrace{ \begin{pmatrix}y_1 \\ y_2 \\ y_3 \ \end{pmatrix}}_{\vec{y}} = \underbrace{ \begin{pmatrix}1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ 1 & x_3 & x_3^2 \ \end{pmatrix} }_{A} \underbrace{\begin{pmatrix}a_0 \\ a_1 \\ a_2\ \end{pmatrix}}_{\vec{a}} yy1y2y3 =A111x1x2x3x12x22x32 aa0a1a2 

简写即:
y⃗=Aa⃗\vec{y}=A\vec{a}y=Aa

AAA就是范德蒙矩阵,如果∣A∣≠0|A|\neq0A=0,那么方程就只有唯一的解。

下面就求∣A∣|A|A,先把r2−r1,r3−r1r_2-r_1,r_3-r_1r2r1,r3r1,(rir_iri表示第iii行)得到:
∣A∣=∣1x1x120x2−x1x22−x120x3−x1x32−x12∣=∣x2−x1x22−x12x3−x1x32−x12∣=(x3−x1)(x3−x2)(x2−x1)|A|=\begin{vmatrix} 1 & x_1 & x_1^2 \\ 0 & x_2-x_1 & x_2^2-x_1^2 \\ 0 & x_3-x_1 & x_3^2-x_1^2\\ \end{vmatrix} = \begin{vmatrix} x_2-x_1 & x_2^2-x_1^2 \\ x_3-x_1 & x_3^2-x_1^2\\ \end{vmatrix} =(x_3-x_1)(x_3-x_2)(x_2-x_1)A=100x1x2x1x3x1x12x22x12x32x12=x2x1x3x1x22x12x32x12=(x3x1)(x3x2)(x2x1)

由于x1,x2,x3x_1,x_2,x_3x1,x2,x3都不相等,所以∣A∣≠0|A|\neq0A=0

到此为止,也说明“对于给定的n+1n+1n+1个点(x0,y0),(x1,y1),…,(xn,yn)(x_{0},y_{0}),(x_{1},y_{1}),\ldots ,(x_{n},y_{n})(x0,y0),(x1,y1),,(xn,yn),对应于它们的次数不超过nnn的拉格朗日多项式LLL只有一个。”

5. 参考

[1] https://www.zhihu.com/question/58333118
[2] https://www.cnblogs.com/Wolfycz/p/10624678.html

欢迎关注公众号:区块链之美
致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值