跳转至

Chapter 03 : Interpolation and Polynomial Approximation

约 2151 个字 2 张图片 预计阅读时间 11 分钟

Abstract

对于一个函数 y=f(x),如果它非常复杂,甚至是未知的,我们可以通过一些已知的点 y0=f(x0),,yn=f(xn) 来建立一个相对更简单的估计函数 g(x)f(x)

如果 g(x) 满足 g(xi)=f(xi),i=0,,n,那么称其为 f(x) 的插值函数(Interpolating Function)。最常用的插值函数是线性多项式。

Interpolation and the Lagrange Polynomial

Lagrange Polynomial

拉格朗日插值法就是构造一个次数至多为 n 次的多项式,使它通过 n+1 个给定的点,这个多项式就是拉格朗日多项式

n=1 情况

n=1 时,构造 P1(x)=a0+a1x,使得 P1(x0)=y0P1(x1)=y1

构造函数 P1(x) 作为给定的两个点 (x0,y0),(x1,y1) 的线性函数:

P1(x)=y0+y1y0x1x0(xx0)=xx1x0x1y0+xx0x1x0y1=i=01L1,i(x)yi

其中 xx1x0x1xx0x1x0 分别记作 L1,0(x)L1,1(x)(第一个下标即为 n 的值,第二个下标为样本点的序号),这称为拉格朗日基函数(Lagrange Basis)

可以知道,拉格朗日基函数总是满足 Kronecker Delta 函数 L1,i(xj)=δij

δij={1,i=j0,ij

推广到 n 次插值,构造 P(x)=a0+a1x++anxn,使得 P(xi)=yii=0,1,,n。就是要找到 Ln,i(x) 使得 Ln,i(xj)=δij

分析可知,这里的 Ln,i(x)n 个根,分别为 x0,x1,,xi1,xi+1,,xn。所以可以构造出:

Ln,i(x)=C(xx0)(xx1)(xxi1)(xxi+1)(xxn)

又因为 Ln,i(xi)=1,所以:

Ln,i(x)=(xx0)(xx1)(xxi1)(xxi+1)(xxn)(xix0)(xix1)(xixi1)(xixi+1)(xixn)=j=0,jinxxjxixj

于是我们根据拉格朗日基函数构造出了 n 次拉格朗日插值多项式:

Pn(x)=i=0nLn,i(x)yi

Theorem

n 个不同的点 , n 次拉格朗日插值多项式是唯一的

Proof

如果不唯一,假设存在另一个多项式 Qn(x),使得 Qn(xi)=yii=0,1,,n,且 Qn(x)Pn(x)

Rn(x)=Pn(x)Qn(x) 是一个次数不超过 n 的多项式,且 Rn(xi)=0i=0,1,,n

由于 Rn(x) 的次数不超过 nn 次多项式不可能有 n+1 个解,所以Rn(x)=0,即 Pn(x)=Qn(x),与假设矛盾。

Tip

如果对 n 个点运用超过 n 次的拉格朗日插值多项式,那么得到的多项式就不唯一了

例如 P(x)=Ln(x)+p(x)i=0n(xxi)


Analyze the Remainder

假定 ax0<x1<<xnbfC[a,b]Pn(x)f(x)x0,x1,,xn 上的拉格朗日插值多项式,则对任意 x[a,b],存在 ξ(x)(a,b),使得

f(x)Pn(x)=f(n+1)(ξ(x))(n+1)!i=0n(xxi)

证明

Rn(x)=f(x)Pn(x),则 Rn(x) 是一个次数不超过 n 的多项式,且 Rn(xi)=0i=0,1,,n。所以 Rn(x) 可记作 K(x)i=0n(xxi)

固定一个点 x (xxi) 时,记 g(t)=Rn(t)K(x)i=0n(txi),则g(x)=0g(xi)=0i=0,1,,n,所以 g(t) 存在 n+2 个不同的零点

根据推广 Rolle 定理,存在 ξ(x)(a,b),使得 g(n+1)(ξ(x))=0,即

0=g(n+1)(ξ(x))=(Rn(ξ(x))K(x)i=0n(ξ(x)xi))(n+1)=(f(ξ(x))Pn(ξ(x))K(x)i=0n(txi))(n+1)=f(n+1)(ξ(x))K(x)(n+1)!

所以 K(x)=f(n+1)(ξ(x))(n+1)!,所以 Rn(x)=f(n+1)(ξ(x))(n+1)!i=0n(xxi)

Rolle 定理及其推广

如果 φ(x) 是光滑的且 φ(x0)=φ(x1)=0,那么存在 ξ(x0,x1) 使得 φ(ξ)=0

推广情况,如果有 φ(x0)=φ(x1)=φ(x2)=0,那么就存在 ξ0(x0,x1),ξ1(x1,x2) 使得 φ(ξ0)=φ(ξ1)=0,进而就存在一个 ξ(ξ0,ξ1) 使得 φ(ξ)=0

再做推广,如果有 φ(x0)==φ(xn)=0,那么存在一个 ξ(a,b) 使得 φ(n)(ξ)=0

  • 因为这里的 f(n+1)(ξ(x)) 是不知道的,所以我们经常用 f(n+1)(x) 的上界来估计余项。即估计一个 Mn+1 使得 x(a,b),|f(n+1)(x)|Mn+1,将 Mn+1(n+1)!i=0n|xxi| 作为总误差的上界
  • 插值多项式对于所有 n 次多项式函数来说都是准确的,因为 f(n+1)(x)=0

例题

假设为 x[0,1] 的函数 f(x)=ex 做一个表格。设表中每一项精确的位数是 d8,相邻 x 值之差即步长为 h。为使线性插值(即一次 Lagrange 插值)的误差不超过 106h 应该是多少?

Answer

假设 [0,1] 被分成 n 个等距的子区间 [x0,x1],[x1,x2],,[xn1,xn]x 在区间 [xk,xk+1] 中。则误差估计为

|f(x)P1(x)|=|f(ξ(x))2!(xxk)(xxk+1)||eξ2(xkh)(x(k+1)h)|e2h24106

所以 h1.72×103。我们不妨取 h=103,则 n=1000

给定 sinπ6=12,sinπ4=12,sinπ3=32。使用关于 sinx 的线性和二次拉格朗日多项式,计算 sin50° 并评估误差。(已知 sin50°=0.7660444...

Answer

我们先使用 x0,x1​ 和 x1,x2 计算线形插值

  • 使用 x0=π6,x1=π4
    • P1(x)=xπ4π6π4×12+xπ6π4π6×12
    • sin50°P1(5π18)0.77614
    • f(x)=sinx,f(x)=sinξx,ξx(pi6,π3,且 12<sinξx<32
    • R1(x)=f(ξx)2!(xπ6)(xπ4),得到 0.01319<R1(5π18)<0.00762,因此外推误差 0.01001
  • 使用 x1=π4,x2=π3
    • 计算得到 sin50°0.76008,0.00538<R1~(5π18)<0.00660,因此插值误差 0.00596

再使用 x0,x1,x2​ 计算二次插值

  • P2(x)=(xπ4)(xπ3)(π6π4)(π6π2)×12+(xπ6)(xπ3)(π4π6)(π4π3)×12+(xπ6)(xπ4)(π3π6)(π3π4)×32
  • sin50°P2(5π18)0.76543
  • R2(x)=cosξx3!(xπ6)(xπ4)(xπ3),12<cosξx<32
  • 0.00044<R2(5π18)<0.00077,所以二次插值的误差 0.00061

更高次的插值法通常会带来更好的结果,但并不总是如此


Neville's Method

记号说明:fx0,x1,,xn 上有定义,m1,m2,,mkk 个不同的整数,0mini=1,2,,k。记在这 k 个点上与 f(x) 相同的拉格朗日多项式为 Pm1,m2,,mk(x)

定理:fx0,x1,,xn 上有定义,让 xixj 是这个集合中的两个不同的数。则

P(x)=(xxj)P0,1,...,j1,j+1,...,k(x)(xxi)P0,1,...,i1,i+1,...,k(x)(xixj)

描述了对 fx0,x1,,xkk+1 个点上的 k 次插值多项式

证明:

对于任意 0rkrirj,分子上的两个插值多项式在 xr 处都等于 f(xr),所以 P(xr)=f(xr)

分子上的第一个多项式在 xi 处等于 f(xi),而第二个多项式在 xi 处为0,所以 P(xi)=f(xi)。同理 P(xj)=f(xj)

所以 P(x)x0,x1,,xk 上与 f(x) 相同,因为 P(x)k 次多项式,所以 P(x)=P0,1,,k(x)

评论