数值插值方法
基本目标是根据函数的离散数据构造一个简单易于计算的函数P(x)来代替原有的复杂函数。应用十分广泛,比如根据离散数据绘制光滑曲线、图形放大算法等等。
拉格朗日插值
定义域D上的f(x) 对于 n+1个点 ( ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , . . . , ( x n , f ( x n ) ) ) ((x_0,f(x_0)),(x_1,f(x_1)),...,(x_n,f(x_n))) ((x0,f(x0)),(x1,f(x1)),...,(xn,f(xn)))的拉格朗日插值
L n ( x ) = ∑ i = 0 n f ( x i ) ∏ j ≠ i , 0 ≤ j ≤ n x − x j x i − x j L_n(x) = \sum_{i=0}^n f(x_i)\prod_{j\neq i, 0\le j\le n}\frac {x-x_j}{x_i-x_j} Ln(x)=i=0∑nf(xi)j=i,0≤j≤n∏xi−xjx−xj
定义余项
R ( x ) = f ( x ) − L n ( x ) R(x) = f(x) - L_n(x) R(x)=f(x)−Ln(x)
假设f(x) n+1 阶连续可导,则对于固定的一个x,存在ξ,使得
R ( x ) = 1 ( n + 1 ) ! f ( n + 1 ) ( ξ ) ∏ j = 0 n ( x − x j ) R(x) = \frac 1{(n+1)!}f^{(n+1)}(ξ)\prod_{j=0}^n(x-x_j) R(x)=(n+1)!1f(n+1)(ξ)j=0∏n(x−xj)
证明
任取取一个 x ′ ∈ D , 且 x ′ ≠ x i x'\in D, 且x'\neq x_i x′∈D,且x′=xi
k = R ( x ′ ) / ∏ j = 1 n ( x ′ − x j ) k = R(x')/\prod_{j=1}^n(x'-x_j) k=R(x′)/j=1∏n(x′−xj)
定义函数
g ( x ) = R ( x ) − 1 ( n + 1 ) ! k ∏ j = 0 n ( x − x j ) g(x) = R(x) - \frac 1{(n+1)!}k\prod_{j=0}^n(x-x_j) g(x)=R(x)−(n+1)!1kj=0∏n(x−xj)
显然 g(x) 也n+1 阶连续可导, 因为g(x)有n+2个零点(包括x’), 运用n+1次罗尔定理,则存在ξ,使得 g ( n + 1 ) ( ξ ) = 0 g^{(n+1)}(ξ) = 0 g(n+1)(ξ)=0.而 R ( n + 1 ) ( x ) = f ( n + 1 ) ( ξ ) R^{(n+1)}(x)= f^{(n+1)}(ξ) R(n+1)(x)=f(n+1)(ξ), ( ∏ j = 0 n ( x − x j ) ) ( n + 1 ) = ( n + 1 ) ! (\prod_{j=0}^n(x-x_j))^{(n+1)} = (n+1)! (∏j=0n(x−xj))(n+1)=(n+1)!, 所以(n+1)!k = f^{(n+1)}(ξ)。
所以对于固定的一个x,存在ξ,使得
R ( x ) = 1 ( n + 1 ) ! f ( n + 1 ) ( ξ ) ∏ j = 0 n ( x − x j ) R(x) = \frac 1{(n+1)!}f^{(n+1)}(ξ)\prod_{j=0}^n(x-x_j) R(x)=(n+1)!1f(n+1)(ξ)j=0∏n(x−xj)
牛顿插值
定义域D上的f(x) 对于 n+1个点 ( ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , . . . , ( x n , f ( x n ) ) ) ((x_0,f(x_0)),(x_1,f(x_1)),...,(x_n,f(x_n))) ((x0,f(x0)),(x1,f(x1)),...,(xn,f(xn)))的牛顿插值
N n ( x ) = a 0 + a 1 ( x − x 0 ) + . . . + a n ∏ i = 0 n − 1 ( x − x 0 ) N_n(x) =a_0+a_1(x-x_0)+...+a_n\prod_{i=0}^{n-1}(x-x_0) Nn(x)=a0+a1(x−x0)+...+ani=0∏n−1(x−x0)
定义差商函数族 g ( i 0 ) , g ( i 0 , i 1 ) , . . . , g ( i 0 , i 1 , . . . , i n ) g(i_0),g(i_0,i_1),...,g(i_0,i_1,...,i_n) g(i0),g(i0,i1),...,g(i0,i1,...,in)
g ( i 0 ) = f ( x i 0 ) g(i_0) = f(x_{i_0}) g(i0)=f(xi0)
g ( i 0 , i 1 ) = g ( i 0 ) − g ( i 1 ) x i 0 − x i 1 g(i_0,i_1) = \frac {g(i_0) - g(i_1)}{x_{i_0}-x_{i_1}} g(i0,i1)=xi0−xi1g(i0)−g(i1)
g ( i 0 , i 1 , . . . , i n ) = g ( i 0 , i 1 , . . . , i n − 1 ) − g ( i 1 , i 2 , . . . , i n ) x i 0 − x i n g(i_0,i_1,...,i_n) = \frac {g(i_0,i_1,...,i_{n-1}) - g(i_1,i_2,...,i_n)}{x_{i_0}-x_{i_n}} g(i0,i1,...,in)=xi0−xing(i0,i1,...,in−1)−g(i1,i2,...,in)
a 0 = g ( 0 ) , a 1 = g ( 0 , 1 ) , . . . , a n = g ( 0 , 1 , . . . , n ) a_0=g(0), a_1 = g(0,1), ... , a_n = g(0,1,...,n) a0=g(0),a1=g(0,1),...,an=g(0,1,...,n)
牛顿插值本质上和拉格朗日插值一致,只是形式上不同, 方便后续加入点。
证明
引理1
g ( i 0 , i 1 , . . . , i m ) = ∑ p = 0 m f ( x i p ) / ∏ q ≠ p , 0 ≤ q ≤ m ( x i p − x i q ) ( m = 0 , . . . , n ) g(i_0,i_1,...,i_m) = \sum_{p=0}^m f(x_{i_p})/\prod_{q\neq p, 0\le q\le m}(x_{i_p}-x_{i_q})\ \ \ \ (m=0,...,n) g(i0,i1,...,im)=p=0∑mf(xip)/q=p,0≤q≤m∏(xip−xiq) (m=0,...,n)
引理1证明
对m使用数学归纳法证明
1° 当m=0时,显然成立
2° 假设当m=k时成立。当m=k+1时
g ( i 0 , i 1 , . . . , i k ) = ∑ p = 0 k f ( x i p ) / ∏ q ≠ p , 0 ≤ q ≤ k ( x i p − x i q ) = f ( x i 0 ) / ∏ 1 ≤ q ≤ k ( x i 0 − x i q ) + ∑ p = 1 k f ( x i p ) / ( x i p − x i 0 ) / ∏ q ≠ p , 1 ≤ q ≤ k ( x i p − x i q ) \begin{aligned} g(i_0,i_1,...,i_k) &= \sum_{p=0}^k f(x_{i_p})/\prod_{q\neq p, 0\le q\le k}(x_{i_p}-x_{i_q})\\ &= f(x_{i_0})/\prod_{1\le q\le k}(x_{i_0}-x_{i_q}) + \sum_{p=1}^k f(x_{i_p})/(x_{i_p} - x_{i_0})/\prod_{q\neq p, 1\le q\le k}(x_{i_p}-x_{i_q}) \end{aligned} g(i0,i1,...,ik)=p=0∑kf(xip)/q=p,0≤q≤k∏(xip−xiq)=f(xi0)/1≤q≤k∏(xi0−xiq)+p=1∑kf(xip)/(xip−xi0)/q=p,1≤q≤k∏(xip−xiq)
g ( i 1 , i 2 , . . . , i k + 1 ) = ∑ p = 1 k + 1 f ( x i p ) / ∏ q ≠ p , 1 ≤ q ≤ k + 1 ( x i p − x i q ) = f ( x i k + 1 ) / ∏ 1 ≤ q ≤ k ( x i k + 1 − x i q ) + ∑ p = 1 k f ( x i p ) / ( x i p − x i k + 1 ) / ∏ q ≠ p , 1 ≤ q ≤ k ( x i p − x i q ) \begin{aligned} g(i_1,i_2,...,i_{k+1}) &= \sum_{p=1}^{k+1} f(x_{i_p})/\prod_{q\neq p, 1\le q\le k+1}(x_{i_p}-x_{i_q})\\ &= f(x_{i_{k+1}})/\prod_{1\le q\le k}(x_{i_{k+1}}-x_{i_q}) + \sum_{p=1}^k f(x_{i_p})/(x_{i_p} - x_{i_{k+1}})/\prod_{q\neq p, 1\le q\le k}(x_{i_p}-x_{i_q}) \end{aligned} g(i1,i2,...,ik+1)=p=1∑k+1f(xip)/q=p,1≤q≤k+1∏(xip−xiq)=f(xik+1)/1≤q≤k∏(xik+1−xiq)+p=1∑kf(xip)/(xip−xik+1)/q=p,1≤q≤k∏(xip−xiq)
g ( i 0 , i 1 , . . . , i k + 1 ) = g ( i 0 , i 1 , . . . , i k ) − g ( i 1 , i 2 , . . . , i k + 1 ) x i 0 − x i k + 1 = f ( x i 0 ) / ∏ 1 ≤ q ≤ k + 1 ( x i 0 − x i q ) + f ( x i k + 1 ) / ∏ 0 ≤ q ≤ k ( x i k + 1 − x i q ) + ∑ p = 1 k f ( x i p ) / ( x i p − x i k + 1 ) / ∏ q ≠ p , 0 ≤ q ≤ k + 1 ( x i p − x i q ) = ∑ p = 0 k + 1 f ( x i p ) / ∏ q ≠ p , 0 ≤ q ≤ k + 1 ( x i p − x i q ) \begin{aligned} g(i_0,i_1,...,i_{k+1}) &= \frac {g(i_0,i_1,...,i_k) - g(i_1,i_2,...,i_{k+1})}{x_{i_0}-x_{i_{k+1}}} \\ &= f(x_{i_0})/\prod_{1\le q\le k+1}(x_{i_0}-x_{i_q}) + f(x_{i_{k+1}})/\prod_{0\le q\le k}(x_{i_{k+1}}-x_{i_q}) + \sum_{p=1}^k f(x_{i_p})/(x_{i_p} - x_{i_{k+1}})/\prod_{q\neq p, 0\le q\le k+1}(x_{i_p}-x_{i_q}) \\ &=\sum_{p=0}^{k+1} f(x_{i_p})/\prod_{q\neq p, 0\le q\le k+1}(x_{i_p}-x_{i_q}) \end{aligned} g(i0,i1,...,ik+1)=xi0−xik+1g(i0,i1,...,ik)−g(i1,i2,...,ik+1)=f(xi0)/1≤q≤k+1∏(xi0−xiq)+f(xik+1)/0≤q≤k∏(xik+1−xiq)+p=1∑kf(xip)/(xip−xik+1)/q=p,0≤q≤k+1∏(xip−xiq)=p=0