【NA】拉格朗日插值法

插值问题:Interpolation.

  • 已知函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] n + 1 n+1 n+1 个相异点 a ≤ x 0 < x 1 < . . . < x n ≤ b a≤x_0<x_1<...<x_n≤b ax0<x1<...<xnb 处的函数值为 f ( x 0 ) , f ( x 1 ) , . . . , f ( x n ) f(x_0),f(x_1),...,f(x_n) f(x0),f(x1),...,f(xn),如果存在一个函数 S ( x ) S(x) S(x) 满足 S ( x i ) = f ( x i ) , i = 0 , 1 , 2 , . . . , n S(x_i)=f(x_i),i=0,1,2,...,n S(xi)=f(xi),i=0,1,2,...,n,则称函数 S ( x ) S(x) S(x) f ( x ) f(x) f(x) 在点 x i , i = 0 , 1 , 2 , . . . , n x_i,i=0,1,2,...,n xi,i=0,1,2,...,n 处的插值函数
  • 相应地, f ( x ) f(x) f(x) 为被插值函数, x i x_i xi 为插值节点, [ a , b ] [a,b] [a,b] 为插值区间,求解插值函数 S ( x ) S(x) S(x) 的方法统称为插值法。
  • 一般而言,插值函数 S ( x ) S(x) S(x) 和原函数 f ( x ) f(x) f(x) 之间总是会存在一定误差的,误差函数 R ( x ) = f ( x ) − S ( x ) R(x)=f(x)-S(x) R(x)=f(x)S(x) 被称作插值余项

初次接触余项概念是学习泰勒展开,使用高阶导数组合逼近原函数,熟悉的有皮亚诺余项、拉格朗日余项。泰勒展开的理念表明可以基于多项式来逼近光滑函数。

  • 插值函数可以用于计算原函数 f ( x ) f(x) f(x) 的函数值、导数值、数值积分和数值微分等一系列近似计算。满足插值条件的插值函数有多种形式,常见的有多项式、有理分式、三角函数和指数函数。多项式(分段多项式)由于其计算简单的优势,在工程应用中备受青睐,例如Bezier曲线和B-样条曲线。
  • 当插值函数是次数不超过 n n n 次的多项式 P n ( x ) = ∑ i = 0 n a i x i P_n(x)=\sum^n_{i=0}a_ix^i Pn(x)=i=0naixi 时,称其为 f ( x ) f(x) f(x) n n n插值多项式

插值多项式唯一性.

  • 定理】已知函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] n + 1 n+1 n+1 个相异点 a ≤ x 0 < x 1 < . . . < x n ≤ b a≤x_0<x_1<...<x_n≤b ax0<x1<...<xnb 处的函数值 f ( x i ) , i = 0 , 1 , 2 , . . . , n f(x_i),i=0,1,2,...,n f(xi),i=0,1,2,...,n,则存在唯一的不超过 n n n 次的多项式 P n ( x ) = ∑ i = 0 n a i x i P_n(x)=\sum^n_{i=0}a_ix^i Pn(x)=i=0naixi 使得 P n ( x i ) = f ( x i ) , i = 0 , 1 , 2 , . . . , n P_n(x_i)=f(x_i),i=0,1,2,...,n Pn(xi)=f(xi),i=0,1,2,...,n.
  • 证明】由插值函数的定义可知 P n ( x i ) = f ( x i ) , i = 0 , 1 , 2 , . . . , n P_n(x_i)=f(x_i),i=0,1,2,...,n Pn(xi)=f(xi),i=0,1,2,...,n 必须成立,即 a 0 x i 0 + a 1 x i 1 + a 2 x i 2 + . . . + a n x i n = f ( x i ) , i = 0 , 1 , 2 , . . . , n a_0x_i^0+a_1x_i^1+a_2x_i^2+...+a_nx_i^n=f(x_i),i=0,1,2,...,n a0xi0+a1xi1+a2xi2+...+anxin=f(xi),i=0,1,2,...,n.
  • 其系数矩阵的行列式是著名的范德蒙德行列式(注意此处是 n + 1 n+1 n+1 阶),值为 ∏ 0 ≤ j < i ≤ n ( x i − x j ) \prod_{0≤j<i≤n}(x_i-x_j) 0j<in(xixj)
  • 由于插值节点互异,所以系数行列式不为零,该方程组有唯一解,即插值多项式 P n ( x ) P_n(x) Pn(x) 存在且唯一

拉格朗日插值法.

  • 上部分证明过程中使用待定系数法也能够解出插值多项式的系数,但其问题在于计算量过大,并且当插值节点分布密集时,其稀疏矩阵是病态的,数值求解不稳定。

线性(一次)插值.

  • 如果只有一个插值节点 f ( x 0 ) f(x_0) f(x0),那么得到的插值多项式即为常函数 P n ( x ) = f ( x 0 ) P_n(x)=f(x_0) Pn(x)=f(x0).
  • 一次插值】已知函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] 上两点 x 0 , x 1 x_0,x_1 x0,x1 处的函数值 y 0 , y 1 y_0,y_1 y0,y1,求插值函数 L 1 L_1 L1 满足 L 1 ( x 0 ) = y 0 , L 1 ( x 1 ) = y 1 L_1(x_0)=y_0,L_1(x_1)=y_1 L1(x0)=y0,L1(x1)=y1.
  • 实际上此时的插值多项式就是过点 ( x 0 , y 0 ) , ( x 1 , y 1 ) (x_0,y_0),(x_1,y_1) (x0,y0),(x1,y1) 的直线,其函数式为 L 1 ( x ) = x − x 1 x 0 − x 1 ⋅ y 0 + x − x 0 x 1 − x 0 ⋅ y 1 L_1(x)=\frac{x-x_1}{x_0-x_1}·y_0+\frac{x-x_0}{x_1-x_0}·y_1 L1(x)=x0x1xx1y0+x1x0xx0y1.
  • l 0 ( x ) = x − x 1 x 0 − x 1 , l 1 ( x ) = x − x 0 x 1 − x 0 l_0(x)=\frac{x-x_1}{x_0-x_1},l_1(x)=\frac{x-x_0}{x_1-x_0} l0(x)=x0x1xx1,l1(x)=x1x0xx0,那么 L 1 ( x ) = l 0 ( x ) ⋅ y 0 + l 1 ( x ) ⋅ y 1 L_1(x)=l_0(x)·y_0+l_1(x)·y_1 L1(x)=l0(x)y0+l1(x)y1 称为 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b] 上的Lagrange型线性插值函数,其中 l 0 ( x ) , l 1 ( x ) l_0(x),l_1(x) l0(x),l1(x) 分别是点 x 0 , x 1 x_0,x_1 x0,x1 上的Lagrange插值基函数
  • 可以发现 l 0 ( x ) , l 1 ( x ) l_0(x),l_1(x) l0(x),l1(x) 都是线性函数,并且具有以下性质: ①   l 0 ( x ) + l 1 ( x ) = 1 ①~l_0(x)+l_1(x)=1  l0(x)+l1(x)=1; ②   l k ( x i ) = δ k i ②~l_k(x_i)=\delta_{ki}  lk(xi)=δki,其中 δ \delta δKronecker符号
  • 拉格朗日插值函数可以视为节点函数值 y i y_i yi 对节点插值基函数 l i ( x ) l_i(x) li(x) 的线性组合。

二次插值.

  • 已知函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] 上三点 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2 处的函数值 y 0 , y 1 , y 2 y_0,y_1,y_2 y0,y1,y2,求插值函数 L 2 L_2 L2 满足 L 2 ( x i ) = y i L_2(x_i)=y_i L2(xi)=yi.
  • L 2 ( x ) = ∑ i = 0 2 l i ( x ) ⋅ y i L_2(x)=\sum^2_{i=0}l_i(x)·y_i L2(x)=i=02li(x)yi,由于 l k ( x i ) = δ k i l_k(x_i)=\delta_{ki} lk(xi)=δki,所以对于 l 0 ( x ) l_0(x) l0(x) 而言,它是一个以 x 1 , x 2 x_1,x_2 x1,x2 为零点的二次函数 C ( x − x 1 ) ( x − x 2 ) C(x-x_1)(x-x_2) C(xx1)(xx2),又 l 0 ( x 0 ) = 1 l_0(x_0)=1 l0(x0)=1,可得 C = [ ( x 0 − x 1 ) ( x 0 − x 2 ) ] − 1 C=[(x_0-x_1)(x_0-x_2)]^{-1} C=[(x0x1)(x0x2)]1,同理可以计算出 l 1 ( x ) , l 2 ( x ) l_1(x),l_2(x) l1(x),l2(x).
  • 观察 l 0 ( x ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) = ∏ j = 0 , j ≠ 0 2 x − x j x 0 − x j l_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}=\prod^2_{j=0,j≠0}\frac{x-x_j}{x_0-x_j} l0(x)=(x0x1)(x0x2)(xx1)(xx2)=j=0,j=02x0xjxxj 以及 l 1 ( x ) , l 2 ( x ) l_1(x),l_2(x) l1(x),l2(x) 的表达式,可以统一写为 l k ( x ) = ∏ j = 0 , j ≠ k 2 x − x j x k − x j l_k(x)=\prod^2_{j=0,j≠k}\frac{x-x_j}{x_k-x_j} lk(x)=j=0,j=k2xkxjxxj,所以: L 2 ( x ) = ∑ k = 0 2 ( ∏ j = 0 , j ≠ k 2 x − x j x k − x j ) L_2(x)=\sum^2_{k=0}(\prod^2_{j=0,j≠k}\frac{x-x_j}{x_k-x_j}) L2(x)=k=02(j=0,j=k2xkxjxxj)

n n n 次插值.

  • 回到最一般的情况,已知函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] n + 1 n+1 n+1 个相异点 a ≤ x 0 < x 1 < . . . < x n ≤ b a≤x_0<x_1<...<x_n≤b ax0<x1<...<xnb 处的函数值为 y i , i = 0 , 1 , 2 , . . . , n y_i,i=0,1,2,...,n yi,i=0,1,2,...,n.
  • L n ( x ) = ∑ k = 0 n ( ∏ j = 0 , j ≠ k n x − x j x k − x j ) L_n(x)=\sum^n_{k=0}(\prod^n_{j=0,j≠k}\frac{x-x_j}{x_k-x_j}) Ln(x)=k=0n(j=0,j=knxkxjxxj)

插值余项.

  • 定理】拉格朗日插值法得到的插值多项式 L n ( x ) L_n(x) Ln(x) 产生的误差 R n ( x ) = f ( x ) − L n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ω n + 1 ( x ) R_n(x)=f(x)-L_n(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!}\omega_{n+1}(x) Rn(x)=f(x)Ln(x)=(n+1)!f(n+1)(ξ)ωn+1(x).
  • 其中 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b] 上具有 n n n 阶连续导数,并且在 ( a , b ) (a,b) (a,b) n + 1 n+1 n+1 阶可导, ξ ∈ ( a , b ) \xi∈(a,b) ξ(a,b) ω n + 1 ( x ) = ∏ i = 0 n ( x − x i ) \omega_{n+1}(x)=\prod^n_{i=0}(x-x_i) ωn+1(x)=i=0n(xxi).
  • 证明】根据 R n ( x ) = f ( x ) − L n ( x ) R_n(x)=f(x)-L_n(x) Rn(x)=f(x)Ln(x),当 x = x i , i = 0 , 1 , 2 , . . . , n x=x_i,i=0,1,2,...,n x=xi,i=0,1,2,...,n R n ( x i ) = 0 R_n(x_i)=0 Rn(xi)=0,所以 R n ( x ) R_n(x) Rn(x) n + 1 n+1 n+1 个零点,可以设 R n ( x ) = K ( x ) ( x − x 0 ) ( x − x 1 ) . . . ( x − x n ) R_n(x)=K(x)(x-x_0)(x-x_1)...(x-x_n) Rn(x)=K(x)(xx0)(xx1)...(xxn),其中 K ( x ) K(x) K(x) 待定。
  • 构造辅助函数 ϕ ( t ) = R n ( t ) − K ( x ) ∏ i = 0 n ( t − x i ) \phi(t)=R_n(t)-K(x)\prod^n_{i=0}(t-x_i) ϕ(t)=Rn(t)K(x)i=0n(txi),当 t = x t=x t=x 时可以发现 ϕ ( x ) = 0 \phi(x)=0 ϕ(x)=0,另外 t = x i t=x_i t=xi ϕ ( x i ) = 0 \phi(x_i)=0 ϕ(xi)=0,因此 ϕ ( t ) \phi(t) ϕ(t) n + 2 n+2 n+2 个零点。

罗尔定理】函数 f ( x ) f(x) f(x) 满足在区间 [ a , b ] [a,b] [a,b] 连续, ( a , b ) (a,b) (a,b) 可导并且 f ( a ) = f ( b ) f(a)=f(b) f(a)=f(b) 时,一定存在 ξ ∈ ( a , b ) \xi∈(a,b) ξ(a,b) 使得 f ′ ( ξ ) = 0 f'(\xi)=0 f(ξ)=0.

  • 已知函数 ϕ ( t ) \phi(t) ϕ(t) n + 2 n+2 n+2 个零点,将其按从小到大的顺序排列并重新编号为 t 0 , t 1 , . . . , t n + 1 t_0,t_1,...,t_{n+1} t0,t1,...,tn+1. 考察区间 [ t 0 , t 1 ] [t_0,t_1] [t0,t1],根据罗尔定理,存在 ξ 0 ∈ ( t 0 , t 1 ) \xi_0∈(t_0,t_1) ξ0(t0,t1) 使得 ϕ ′ ( ξ 0 ) = 0 \phi'(\xi_0)=0 ϕ(ξ0)=0. 同理可以得到另外 n n n ϕ ′ ( t ) \phi'(t) ϕ(t) 的零点。
  • ϕ ′ ( t ) \phi'(t) ϕ(t) 继续使用罗尔定理,可以得到 ϕ ′ ′ ( t ) \phi''(t) ϕ(t) n − 1 n-1 n1 个零点,第 n + 1 n+1 n+1 次迭代后得到以下结论:存在 ξ ∈ ( a , b ) \xi∈(a,b) ξ(a,b) 使得 ϕ ( n + 1 ) ( ξ ) = 0 \phi^{(n+1)}(\xi)=0 ϕ(n+1)(ξ)=0.
  • 由于 ϕ ( t ) = R n ( t ) − K ( x ) ∏ i = 0 n ( t − x i ) = f ( x ) − L n ( x ) − K ( x ) ∏ i = 0 n ( t − x i ) \phi(t)=R_n(t)-K(x)\prod^n_{i=0}(t-x_i)=f(x)-L_n(x)-K(x)\prod^n_{i=0}(t-x_i) ϕ(t)=Rn(t)K(x)i=0n(txi)=f(x)Ln(x)K(x)i=0n(txi),对其三个部分求 n + 1 n+1 n+1 阶导数, f ( x ) f(x) f(x) 部分求导为 f ( n + 1 ) ( x ) f^{(n+1)}(x) f(n+1)(x) L n ( x ) L_n(x) Ln(x) n n n 次多项式,所以其 n + 1 n+1 n+1 阶导数为 0 0 0;第 3 3 3 部分为 n + 1 n+1 n+1 次多项式,求导结果为 K ( x ) ⋅ ( n + 1 ) ! K(x)·(n+1)! K(x)(n+1)!.
  • 综上所述,得 ϕ ( n + 1 ) ( ξ ) = f ( n + 1 ) ( ξ ) − ( n + 1 ) ! ⋅ K ( x ) = 0 \phi^{(n+1)}(\xi)=f^{(n+1)}(\xi)-(n+1)!·K(x)=0 ϕ(n+1)(ξ)=f(n+1)(ξ)(n+1)!K(x)=0,解得 K ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! K(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!} K(x)=(n+1)!f(n+1)(ξ),因此 R n ( x ) = K ( x ) ∏ i = 0 n ( x − x i ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ⋅ ω n + 1 ( x ) R_n(x)=K(x)\prod^n_{i=0}(x-x_i)=\frac{f^{(n+1)(\xi)}}{(n+1)!}·\omega_{n+1}(x) Rn(x)=K(x)i=0n(xxi)=(n+1)!f(n+1)(ξ)ωn+1(x),拉格朗日插值法余项得证。

碎碎念.

  • 如果将 f ( x ) f(x) f(x) L n ( x ) L_n(x) Ln(x) 分别视为真实模型和假设模型,那么 R n ( x ) R_n(x) Rn(x) 可以视为误差。从其表达式可以看出 R n ( x ) R_n(x) Rn(x) 并不是随着插值节点数量的增加单调减小。
  • 一般来说对于拉格朗日插值法而言,增加插值节点的个数可以减小余项大小,但回忆前面部分从线性插值、二次插值到 n n n 次插值的推导过程可以发现,每次增加插值节点,插值基函数都需要重新计算,有很多冗余的计算量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值