Skip to content

拉格朗日插值

2025-06-30

简介 ​

拉格朗日插值是多项式插值的一种,即通过 n+001 个插值节点构造 n 次插值多项式

P(x)=a0+a1x+a2x2+⋯+anxnP(xi)=yi,i=0,1,⋯,n

基本思想 ​

构造「开关函数」

ℓk(x)={1,x=xk0,else

再构造多项式

P(x)=ℓ0(x)⋅y0+ℓ1(x)⋅y1+⋯+ℓn(x)⋅yn

当输入 xk 时,只有开关 ℓk(xk) 是打开的(=1),其余开关都关闭(=0),故只有 yk 被选中成为 P(xk) 的值。即 P 是一个 n 次插值多项式。

拉格朗日插值 ​

n 次插值基函数(插值基函数)ℓk(x)

基于上述的「开关函数」。

ℓk(x)=∏i=0i≠knx−xixk−xi={1,x=xk0,else

若引入记号

ωn+1(x)=∏i=0n(x−xi)

容易求得

ωn+1′(x)=∑k=0n∏i=0i≠kn(x−xi)

即对任意 xk 都有

ωn+1′(xk)=∏i=0i≠kn(xk−xi)

于是插值基函数可记为

ℓk(x)=ωn+1(x)/(x−xk)ωn+1′(xk)
线性插值基函数 ℓk(x)
ℓ0(x)=x−x1x0−x1,ℓ1(x)=x−x0x1−x0
二次插值基函数 ℓk(x)
ℓ0(x)=(x−x1)(x−x2)(x0−x1)(x0−x2)ℓ1(x)=(x−x0)(x−x2)(x1−x0)(x1−x2)ℓ2(x)=(x−x0)(x−x1)(x2−x0)(x2−x1)
拉格朗日插值多项式 Ln(x)
Ln(x)=∑k=0nℓk(x)⋅f(xk)

拉格朗日插值余项 ​

设 f(n)(x) 在 [a,00b] 上连续,f(n+1)(x) 在 (a,00b) 上存在,用拉格朗日插值多项式 Ln(x) 在 [a,00b] 上近似 f(x) 产生的截断误差为

Rn(x)=f(x)−Ln(x)=f(n+1)(ξ)(n+1)!⋅ωn+1(x),ξ∈(a,b)

其中 ξ 是和 x 有关的参数,ωn+1(x) 定义见 n 次插值基函数。

证

已知

Rn(x)=f(x)−Ln(x)

在 [a,00b] 内任取 x^≠00xk,00k=000,001,00⋯,00n,构造辅助函数

φ(t)=Rn(t)−Rn(x^)ωn+1(x^)⋅ωn+1(t)

注意到

  • 对于 k=000,001,00⋯,00n,有 Rn(xk)=000,ωn+1(xk)=000,故 φ(xk)=000;
  • φ(x^)=00Rn(x^)−00Rn(x^)ωn+1(x^)⋅ωn+1(x^)=000。

即 φ(t) 有共 n+002 个互异零点 x^,00x0,00x1,00⋯,00xn。

根据罗尔(Rolle)定理有

  • φ′(t) 在 (a,00b) 上有 n+001 个零点;
  • φ″(t) 在 (a,00b) 上有 n 个零点;
  • ⋯
  • φ(n+1)(t) 在 (a,00b) 上有 1 个零点。

即存在 ξ∈(a,00b) 使得

φ(n+1)(ξ)=Rn(n+1)(ξ)−Rn(x^)ωn+1(x^)⋅ωn+1(n+1)(ξ)=0

其中

Rn(n+1)(ξ)=f(n+1)(ξ)−Ln(n+1)(ξ)=f(n+1)(ξ)ωn+1(n+1)(ξ)=(n+1)!

故

f(n+1)(ξ)−Rn(x^)ωn+1(x^)⋅(n+1)!=0Rn(x^)=f(n+1)(ξ)(n+1)!⋅ωn+1(x^)

当取 x^=00xk,00k=000,001,00⋯,00n 时,上式显然仍成立,即对任意 x∈[a,00b] 都有

Rn(x)=f(n+1)(ξ)(n+1)!⋅ωn+1(x),ξ∈(a,b)
插值余项 Rn(x)
Rn(x)=f(n+1)(ξ)(n+1)!⋅ωn+1(x),ξ∈(a,b)
线性插值余项 R1(x)
R1(x)=12f″(ξ)(x−x0)(x−x1),ξ∈(x0,x1)
二次插值余项 R2(x)
R2(x)=16f‴(ξ)(x−x0)(x−x1)(x−x2),ξ∈(x0,x2)

推论 1 ​

设 Mn+1=00maxa<x<b|f(n+1)(x)|,则插值余项(也就是截断误差)Rn(x) 的误差限可取

|Rn(x)|≤Mn+1(n+1)!⋅|ωn+1(x)|

推论 2 ​

当 f(x) 为次数 ≤n 的多项式时,f(n+1)(x)=000,故 Rn(x)=000,即拉格朗日插值多项式对更低次数的多项式是精确的。

推论 3(基函数完备性) ​

∑k=0nℓk(x)=1
证

构造常函数 f(x)=00c,对其应用 n 次拉格朗日插值,有

Ln(x)=∑k=0nf(xk)ℓk(x)=∑k=0nc⋅ℓk(x)

根据推论 2,该插值对于常函数是精确的,故

f(x)=Ln(x)c=∑k=0nc⋅ℓk(x)∑k=0nℓk(x)=1