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(x−x0)+c2(x−x)(x−x1)+⋯+cn(x−x0)(x−x1)⋯(x−xn−1)(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,⋯,xk−1,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]=x0−xkf(x0)−f(xk)(1≤k≤n)
函数
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]=x1−xkf[x0,x1]−f[x0,xk](2≤k≤n)
为函数
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]=x2−xkf[x0;x1,x2]−f[x0;x1,xk](3≤k≤n)
为函数
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,⋯,xk−2;xk−1,xk]=xk−1−xkf[x0,x1,⋯;xk−2,xk−1]−f[x0,x1,⋯;xk−2,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,⋯,xk−1,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,⋯,xk−1,xk]=x0−xkf[x0,x1,⋯,xk−1]−f[x1,⋯,xk−1,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=0∑k(xi−x0)(xi−x1)⋯(xi−xi−1)⋅(xi−xi+1)⋯(xi−xk)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(x−x0)+c2(x−x0)(x−x1)+⋯+cn(x−x0)(x−x1)⋯(x−xn−1)
的系数,将
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(x1−x0)=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=(x1−x0)f(x1)−f(x0)=(x0−x1)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](x2−x0)+c2(x2−x0)(x2−x1)=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=(x2−x0)(x2−x1)f(x2)−f(x0)−f[x0,x1](x2−x0)=(x2−x1)(x2−x0)f(x2)−f(x0)−f[x0,x1]=(x1−x2)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](x−x0)+f[x0;x1,x2](x−x0)(x−x1)+⋯+f[x0,x1,⋯,xn](x−x0)(x−x1)⋯(x−xn−1)
用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](x−x0)
由二阶差商定义,有:
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](x−x1)
由三阶差商定义,有:
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](x−x2)
依次类推,有:
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,⋯,xn−1,x]=f[x0,x1,⋯,xn]+f[x0,x1,⋯;xn,x](x−xn)
将后一等式逐项代入前一等式,得:
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](x−x0)+⋯+f[x0,x1,⋯,xn](x−x0)(x−x1)⋯(x−xn−1)+f[x0,x1,⋯;xn,x](x−x0)(x−x1)⋯(x−xn)=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](x−x0)(x−x1)⋯(x−xn)
称为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)(ξ)