Newton插值法

Aitken逐次插值法虽然具有承袭性的特点,但其插值公式是递推型的,不便于进行理论分析。为此,可以把n次插值多项式改写成升幂的形式:
N n ( x ) = c 0 + c 1 ( x − x 0 ) + c 2 ( x − x ) ( x − x 1 ) + ⋯ + c n ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) (10) N_n(x)=c_0+c_1(x-x_0)+c_2(x-x)(x-x_1)+\cdots+ c_n(x-x_0)(x-x_1)\cdots(x-x_{n-1}) \tag{10} Nn(x)=c0+c1(xx0)+c2(xx)(xx1)++cn(xx0)(xx1)(xxn1)(10)
其中, c 0 , c 1 , c 2 , ⋯   , c n c_0,c_1,c_2,\cdots,c_n c0,c1,c2,,cn为待定系数。根据定理1,该多项式是惟一存在的。将插值条件
N n ( x i ) = f ( x i ) ( i = 0 , 1 , 2 , ⋯   , n ) N_n(x_i)=f(x_i) \quad (i=0,1,2,\cdots,n) Nn(xi)=f(xi)(i=0,1,2,,n)
代入(10)式中,即可以惟一确定出系数 c 0 , c 1 , c 2 , ⋯   , c n c_0,c_1,c_2,\cdots,c_n c0,c1,c2,,cn,从而得到 N n ( x ) N_n(x) Nn(x)的升幂形式。为了方便计算,在具体计算这些系数之前,先引入差商的概念。

1. 差商的定义与性质

定义3:已知顺序排列的节点 x 0 , x 1 , x 2 , ⋯   , x k − 1 , x k , ⋯   , x n x_0,x_1,x_2,\cdots,x_{k-1},x_k,\cdots,x_n x0,x1,x2,,xk1,xk,,xn所对应的函数值为 f ( x 0 ) , f ( x 2 ) , ⋯ f(x_0),f(x_2),\cdots f(x0),f(x2),

定义
f [ x 0 , x k ] = f ( x 0 ) − f ( x k ) x 0 − x k ( 1 ≤ k ≤ n ) f[x_0,x_k]=\frac{f(x_0)-f(x_k)}{x_0-x_k} \quad (1\leq k \leq n) f[x0,xk]=x0xkf(x0)f(xk)(1kn)
函数 f ( x ) f(x) f(x)在点 x 0 , x k x_0,x_k x0,xk处的一阶差商;

定义
f [ x 0 ; x 1 , x k ] = f [ x 0 , x 1 ] − f [ x 0 , x k ] x 1 − x k ( 2 ≤ k ≤ n ) f[x_0;x_1,x_k]=\frac{f[x_0,x_1]-f[x_0,x_k]}{x_1-x_k} \quad (2\leq k\leq n) f[x0;x1,xk]=x1xkf[x0,x1]f[x0,xk](2kn)
为函数 f ( x ) f(x) f(x)在点 x 0 , x 1 , x k x_0,x_1,x_k x0,x1,xk处的二阶差商;

定义
f [ x 0 , x 1 ; x 2 , x k ] = f [ x 0 ; x 1 , x 2 ] − f [ x 0 ; x 1 , x k ] x 2 − x k ( 3 ≤ k ≤ n ) f[x_0,x_1;x_2,x_k]=\frac{f[x_0;x_1,x_2]-f[x_0;x_1,x_k]}{x_2-x_k} \quad(3\leq k\leq n) f[x0,x1;x2,xk]=x2xkf[x0;x1,x2]f[x0;x1,xk](3kn)
为函数 f ( x ) f(x) f(x)在点 x 0 , x 1 , x 2 , x k x_0,x_1,x_2,x_k x0,x1,x2,xk处的三阶差商;

依此类推,定义
f [ x 0 , x 1 , ⋯   , x k − 2 ; x k − 1 , x k ] = f [ x 0 , x 1 , ⋯   ; x k − 2 , x k − 1 ] − f [ x 0 , x 1 , ⋯   ; x k − 2 , x k ] x k − 1 − x k (11) f[x_0,x_1,\cdots,x_{k-2};x_{k-1},x_k]=\frac{f[x_0,x_1,\cdots;x_{k-2},x_{k-1}]-f[x_0,x_1,\cdots;x_{k-2},x_k]}{x_{k-1}-x_k} \tag{11} f[x0,x1,,xk2;xk1,xk]=xk1xkf[x0,x1,;xk2,xk1]f[x0,x1,;xk2,xk](11)
为函数 f ( x ) f(x) f(x)在点 x 0 , x 1 , x 2 , ⋯   , x k − 1 , x k x_0,x_1,x_2,\cdots,x_{k-1},x_k x0,x1,x2,,xk1,xk处的k阶差商。

k阶差商还有另外一种定义方法,即
f [ x 0 , x 1 , ⋯   , x k − 1 , x k ] = f [ x 0 , x 1 , ⋯   , x k − 1 ] − f [ x 1 , ⋯   , x k − 1 , x k ] x 0 − x k (12) f[x_0,x_1,\cdots,x_{k-1},x_k]=\frac{f[x_0,x_1,\cdots,x_{k-1}]-f[x_1,\cdots,x_{k-1},x_k]}{x_0-x_k} \tag{12} f[x0,x1,,xk1,xk]=x0xkf[x0,x1,,xk1]f[x1,,xk1,xk](12)
(11)式为第一种格式的差商,(12)式为第二种格式的差商。两者具有完全相同的性质。

差商有如下性质:

(1)k阶差商 f [ x 0 , x 1 , ⋯   , x k ] f[x_0,x_1,\cdots,x_k] f[x0,x1,,xk]是函数值 f ( x 0 ) , f ( x 1 ) , ⋯   , f ( x n ) f(x_0),f(x_1),\cdots,f(x_n) f(x0),f(x1),,f(xn)的线性组合。即
f [ x 0 , x 1 , ⋯   , x k ] = ∑ i = 0 k f ( x i ) ( x i − x 0 ) ( x i − x 1 ) ⋯ ( x i − x i − 1 ) ⋅ ( x i − x i + 1 ) ⋯ ( x i − x k ) f[x_0,x_1,\cdots,x_k]=\sum_{i=0}^k\frac{f(x_i)}{(x_i-x_0)(x_i-x_1)\cdots (x_i-x_{i-1})·(x_i-x_{i+1})\cdots(x_i-x_k)} f[x0,x1,,xk]=i=0k(xix0)(xix1)(xixi1)(xixi+1)(xixk)f(xi)
(2)差商的值与节点的排列顺序无关。即
f [ x 0 , x 1 , ⋯   , x k ] = f [ x 1 , x 0 , ⋯   , x k ] = ⋯ = f [ x k , ⋯   , x 1 , x 0 ] f[x_0,x_1,\cdots,x_k]=f[x_1,x_0,\cdots,x_k]=\cdots=f[x_k,\cdots,x_1,x_0] f[x0,x1,,xk]=f[x1,x0,,xk]==f[xk,,x1,x0]
(3)若 f [ x , x 0 , x 1 , ⋯   , x k ] f[x,x_0,x_1,\cdots,x_k] f[x,x0,x1,,xk]是x的m次多项式,则 f [ x , x 0 , x 1 , ⋯   , x k , x k + 1 ] f[x,x_0,x_1,\cdots,x_k,x_{k+1}] f[x,x0,x1,,xk,xk+1]是x的m-1次多项式。

2.Newton插值公式

为了求出Newton插值多项式
N n ( x ) = c 0 + c 1 ( x − x 0 ) + c 2 ( x − x 0 ) ( x − x 1 ) + ⋯ + c n ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) N_n(x)=c_0+c_1(x-x_0)+c_2(x-x_0)(x-x_1)+\cdots + c_n(x-x_0)(x-x_1)\cdots(x-x_{n-1}) Nn(x)=c0+c1(xx0)+c2(xx0)(xx1)++cn(xx0)(xx1)(xxn1)
的系数,将 N n ( x i ) = f ( x i ) ( i = 0 , 1 , 2 , ⋯   , n ) N_n(xi)=f(x_i)(i=0,1,2,\cdots,n) Nn(xi)=f(xi)(i=0,1,2,,n)按插值节点的顺序逐个代入上式,即:

N n ( x 0 ) = c 0 = f ( x 0 ) N_n(x_0)=c_0=f(x_0) Nn(x0)=c0=f(x0),得: c 0 = f ( x 0 ) c_0=f(x_0) c0=f(x0)

N n ( x 1 ) = f ( x 0 ) + c 1 ( x 1 − x 0 ) = f ( x 1 ) N_n(x_1)=f(x_0)+c_1(x_1-x_0)=f(x_1) Nn(x1)=f(x0)+c1(x1x0)=f(x1),得:
c 1 = f ( x 1 ) − f ( x 0 ) ( x 1 − x 0 ) = f ( x 0 ) − f ( x 1 ) ( x 0 − x 1 ) = f [ x 0 , x 1 ] c_1=\frac{f(x_1)-f(x_0)}{(x_1-x_0)}=\frac{f(x_0)-f(x_1)}{(x_0-x_1)}=f[x_0,x_1] c1=(x1x0)f(x1)f(x0)=(x0x1)f(x0)f(x1)=f[x0,x1]
N n ( x 2 ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x 2 − x 0 ) + c 2 ( x 2 − x 0 ) ( x 2 − x 1 ) = f ( x 2 ) N_n(x_2)=f(x_0)+f[x_0,x_1](x_2-x_0)+c_2(x_2-x_0)(x_2-x_1)=f(x_2) Nn(x2)=f(x0)+f[x0,x1](x2x0)+c2(x2x0)(x2x1)=f(x2),得:
c 2 = f ( x 2 ) − f ( x 0 ) − f [ x 0 , x 1 ] ( x 2 − x 0 ) ( x 2 − x 0 ) ( x 2 − x 1 ) = f ( x 2 ) − f ( x 0 ) ( x 2 − x 0 ) − f [ x 0 , x 1 ] ( x 2 − x 1 ) = f [ x 0 , x 1 ] − f [ x 0 , x 2 ] ( x 1 − x 2 ) = f [ x 0 , x 1 , x 2 ] c_2=\frac{f(x_2)-f(x_0)-f[x_0,x_1](x_2-x_0)}{(x_2-x_0)(x_2-x_1)}=\frac{\frac{f(x_2)-f(x_0)}{(x_2-x_0)}-f[x_0,x_1]}{(x_2-x_1)}=\frac{f[x_0,x_1]-f[x_0,x_2]}{(x_1-x_2)}=f[x_0,x_1,x_2] c2=(x2x0)(x2x1)f(x2)f(x0)f[x0,x1](x2x0)=(x2x1)(x2x0)f(x2)f(x0)f[x0,x1]=(x1x2)f[x0,x1]f[x0,x2]=f[x0,x1,x2]
依次类推,可由差商的定义和数学归纳法得出全部系数,即:
c k = f [ x 0 , x 1 , ⋯   , x k ] , ( k = 0 , 1 , 2 , ⋯   , n ) c_k=f[x_0,x_1,\cdots,x_k], \quad(k=0,1,2,\cdots,n) ck=f[x0,x1,,xk],(k=0,1,2,,n)
这样就得到了Newton插值公式:
N n ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + f [ x 0 ; x 1 , x 2 ] ( x − x 0 ) ( x − x 1 ) + ⋯ + f [ x 0 , x 1 , ⋯   , x n ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) N_n(x)=f(x_0)+f[x_0,x_1](x-x_0)+f[x_0;x_1,x_2](x-x_0)(x-x_1)+\cdots+f[x_0,x_1,\cdots,x_n](x-x_0)(x-x_1)\cdots(x-x_{n-1}) Nn(x)=f(x0)+f[x0,x1](xx0)+f[x0;x1,x2](xx0)(xx1)++f[x0,x1,,xn](xx0)(xx1)(xxn1)
用Newton插值法构造插值多项式,只需计算各个节点间的各阶差商即可。由于各阶差商的计算具有递推规律。因此,将各阶差商排列在一起,组成差商表。第一种、第二种格式的差商表分别见下表:

在这里插入图片描述

3. 插值余项

如果把插值点x看成是 [ a , b ] [a,b] [a,b]上的一固定点,由一阶差商定义,有:
f ( x ) = f ( x 0 ) + f [ x 0 , x ] ( x − x 0 ) f(x)=f(x_0)+f[x_0,x](x-x_0) f(x)=f(x0)+f[x0,x](xx0)
由二阶差商定义,有:
f [ x 0 , x ] = f [ x 0 , x 1 ] + f [ x 0 ; x 1 , x ] ( x − x 1 ) f[x_0,x]=f[x_0,x_1]+f[x_0;x_1,x](x-x_1) f[x0,x]=f[x0,x1]+f[x0;x1,x](xx1)
由三阶差商定义,有:
f [ x 0 ; x 1 , x ] = f [ x 0 ; x 1 , x 2 ] + f [ x 0 , x 1 ; x 2 , x ] ( x − x 2 ) f[x_0;x_1,x]=f[x_0;x_1,x_2]+f[x_0,x_1;x_2,x](x-x_2) f[x0;x1,x]=f[x0;x1,x2]+f[x0,x1;x2,x](xx2)
依次类推,有:
f [ x 0 , x 1 , ⋯   , x n − 1 , x ] = f [ x 0 , x 1 , ⋯   , x n ] + f [ x 0 , x 1 , ⋯   ; x n , x ] ( x − x n ) f[x_0,x1,\cdots,x_{n-1},x]=f[x_0,x_1,\cdots,x_n]+f[x_0,x_1,\cdots;x_n,x](x-x_n) f[x0,x1,,xn1,x]=f[x0,x1,,xn]+f[x0,x1,;xn,x](xxn)
将后一等式逐项代入前一等式,得:
f ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + ⋯ + f [ x 0 , x 1 , ⋯   , x n ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) + f [ x 0 , x 1 , ⋯   ; x n , x ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) = N n ( x ) + R n ( x ) f(x)=f(x_0)+f[x_0,x_1](x-x_0)+\cdots+f[x_0,x_1,\cdots,x_n](x-x_0)(x-x_1)\cdots(x-x_{n-1}) + f[x_0,x_1,\cdots;x_n,x](x-x_0)(x-x_1)\cdots(x-x_n) \\ =N_n(x)+R_n(x) f(x)=f(x0)+f[x0,x1](xx0)++f[x0,x1,,xn](xx0)(xx1)(xxn1)+f[x0,x1,;xn,x](xx0)(xx1)(xxn)=Nn(x)+Rn(x)
其中,
R n ( x ) = f [ x 0 , x 1 , ⋯   , x n , x ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) R_n(x)=f[x_0,x_1,\cdots,x_n,x](x-x_0)(x-x_1)\cdots(x-x_n) Rn(x)=f[x0,x1,,xn,x](xx0)(xx1)(xxn)
称为Newton插值的余项。

由于对相同插值节点,插值多项式是惟一的,所以,Newton插值多项式与Lagrange插值多项式是等价的。同样,两者的余项也是等价的。因此,当 f ( n + 1 ) ( x ) f^{(n+1)}(x) f(n+1)(x)存在时,有:

f [ x 0 , x 1 , ⋯   , x n , x ] = f ( n + 1 ) ( ξ ) ( n + 1 ) ! f[x_0,x_1,\cdots,x_n,x]=\frac{f^{(n+1)}(\xi)}{(n+1)!} f[x0,x1,,xn,x]=(n+1)!f(n+1)(ξ)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐