拉格朗日插值法每当节点增加或者减少时,其对应的插值基函数都是需要重新构造,所以在实际计算时非常不方便,因此出现了一种新的插值法:Newton插值法。
均差
在学习Newton插值法之前时,先了解一个概念:均差
均差定义
设函数 f f f在 n + 1 n+1 n+1个不同节点 x 0 , x 1 . . . x n \large x_0,x_1...x_n x0,x1...xn上的值为 f ( x 0 ) , f ( x 1 ) . . . f ( x n ) \large f(x_0),f(x_1)...f(x_n) f(x0),f(x1)...f(xn)分别称:
f [ x k ] = f ( x k ) \large f[x_k]=f(x_k) f[xk]=f(xk)为 f f f在 x k \Large \large x_k xk上的零阶均差
f [ x k , x k + 1 ] = f [ x k + 1 ] − f [ x k ] x k + 1 − x k \large f[x_k,x_{k+1}]=\Large \frac{f[x_{k+1}]-f[x_k]}{x_{k+1}-x_k} f[xk,xk+1]=xk+1−xkf[xk+1]−f[xk]为 x k , x k + 1 \large x_k,x_{k+1} xk,xk+1上的一阶均差
f [ x k , x k + 1 , x k + 2 ] = f [ x k + 1 , x k + 2 ] − f [ x k , x k + 1 ] x k + 2 − x k \large f[x_k,x_{k+1},x_{k+2}]=\Large \frac{f[x_{k+1},x_{k+2}]-f[x_k,x_{k+1}]}{x_{k+2}-x_k} f[xk,xk+1,xk+2]=xk+2−xkf[xk+1,xk+2]−f[xk,xk+1]为 x k , x k + 1 , x k + 2 \large x_k,x_{k+1},x_{k+2} xk,xk+1,xk+2上的二阶均差
因此对于一般形式为:
f [ x k , x k + 1 . . . x k + j ] = f [ x k + 1 . . . x k + j ] − f [ x k . . . x k + j − 1 ] x k + j − x k \large f[x_k,x_{k+1}...x_{k+j}]=\Large\frac{f[x_{k+1}...x_{k+j}]-f[x_k...x_{k+j-1}]}{x_{k+j}-x_k} f[xk,xk+1...xk+j]=xk+j−xkf[xk+1...xk+j]−f[xk...xk+j−1]为 x k , x k + 1 . . . x k + j \large x_k,x_{k+1}...x_{k+j} xk,xk+1...xk+j上的 j 阶 均 差 \large j阶均差 j阶均差
均差性质
(1) k k k阶均差 f [ x k , x k + 1 . . . x k + j ] \large f[x_k,x_{k+1}...x_{k+j}] f[xk,xk+1...xk+j]是函数值 f ( x 0 ) , f ( x 1 ) , f ( x 2 ) . . . f ( x k ) \large f(x_0),f(x_1),f(x_2)...f(x_k) f(x0),f(x1),f(x2)...f(xk)的线性组合也就是:
f
[
x
k
,
x
k
+
1
.
.
.
x
k
+
j
]
=
∑
j
=
0
n
f
(
x
i
)
(
x
j
−
x
0
)
(
x
j
−
x
1
)
.
.
.
(
x
j
−
x
j
−
1
)
(
x
j
−
x
j
+
1
)
.
.
.
(
x
j
−
x
k
)
f[x_k,x_{k+1}...x_{k+j}]=\large\sum\limits_{j=0}^n\Large \frac{f(x_i)}{(x_j-x_0)(x_j-x_1)...(x_j-x_{j-1})(x_j-x_{j+1})...(x_j-x_k)}
f[xk,xk+1...xk+j]=j=0∑n(xj−x0)(xj−x1)...(xj−xj−1)(xj−xj+1)...(xj−xk)f(xi)
(2)对称性:均差对于定义的节点是对称的,即任意改变均差中节点的次序,
f
[
x
0
,
x
1
.
.
.
x
k
]
f[x_0,x_1...x_k]
f[x0,x1...xk]的值不变。
(3)如果
f
[
x
0
,
x
1
.
.
.
x
k
]
f[x_0,x_1...x_k]
f[x0,x1...xk]是
x
x
x的m次多项式,那么
f
[
x
0
,
x
1
.
.
.
x
k
,
x
k
+
1
]
f[x_0,x_1...x_k,x_{k+1}]
f[x0,x1...xk,xk+1]是
x
x
x的
m
−
1
m-1
m−1次多项式,所以如果
f
∈
℘
n
f\in\wp_n
f∈℘n,那么
f
[
x
0
,
x
1
.
.
.
x
k
]
f[x_0,x_1...x_k]
f[x0,x1...xk]恒等于零。
(4)设
f
∈
C
n
[
a
,
b
]
,
x
j
∈
[
a
,
b
]
,
j
=
0
,
1...
n
f\in C^n[a,b],x_j\in[a,b],j=0,1...n
f∈Cn[a,b],xj∈[a,b],j=0,1...n为相异节点,则有
f
[
x
0
,
x
1
.
.
.
x
k
]
=
1
n
!
f
(
n
)
(
ξ
)
\large f[x_0,x_1...x_k]=\large\frac {1}{n!}f^{(n)}(\xi)
f[x0,x1...xk]=n!1f(n)(ξ),其中
ξ
∈
(
a
,
b
)
\xi \in(a,b)
ξ∈(a,b).
Newton插值公式
f
(
x
)
\large f(x)
f(x)关于节点
x
0
,
x
1
,
.
.
.
,
x
n
x_0,x_1,...,x_n
x0,x1,...,xn的
n
n
n次插值多项式为:
N
n
(
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
)
\large N_n(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)
Nn(x)=f(x0)+f[x0,x1](x−x0)+...f[x0,x1,...,xn](x−x0)(x−x1)...(x−xn)
均差余项
R
n
(
x
)
=
f
(
x
)
−
N
n
(
x
)
=
f
[
x
,
x
0
,
x
1
,
.
.
.
,
x
n
]
(
x
−
x
0
)
(
x
−
x
1
)
.
.
.
(
x
−
x
n
)
R_n(x)=f(x)-N_n(x)=f[x,x_0,x_1,...,x_n](x-x_0)(x-x_1)...(x-x_n)
Rn(x)=f(x)−Nn(x)=f[x,x0,x1,...,xn](x−x0)(x−x1)...(x−xn)将其改写为微分形式:
R
n
(
x
)
=
1
(
n
+
1
)
!
f
(
n
+
1
)
(
ξ
(
x
)
)
ω
n
+
1
(
x
)
R_n(x)=\Large \frac{1}{(n+1)!}\large f^{(n+1)}(\xi(x))\omega_{n+1}(x)
Rn(x)=(n+1)!1f(n+1)(ξ(x))ωn+1(x)
等距节点下的Newton插值公式
前向插值公式
假设
f
(
x
k
)
=
f
(
x
0
+
k
h
)
(
k
=
0
,
1
,
.
.
.
,
n
)
f(x_k)=f(x_0+kh)(k=0,1,...,n)
f(xk)=f(x0+kh)(k=0,1,...,n)已知,需求在
x
=
x
0
+
t
h
,
0
<
t
<
1
x=x_0+th, 0<t<1
x=x0+th,0<t<1处的近似值,插值节点取为
x
0
,
x
1
,
.
.
.
,
x
n
x_0,x_1,...,x_n
x0,x1,...,xn对于等距节点且顺序排列得到的插值公式为:
N
x
(
x
0
+
t
h
)
=
f
(
x
0
)
+
t
Δ
f
(
x
0
)
+
1
2
!
t
(
t
−
1
)
Δ
2
f
(
x
0
)
+
.
.
.
1
n
!
t
(
t
−
1
)
(
t
−
2
)
.
.
.
(
t
−
n
+
1
)
Δ
n
f
(
x
0
)
N_x(x_0+th)=f(x_0)+t\Delta f(x_0)+\frac{1}{2!}t(t-1)\Delta^2f(x_0)+...\frac{1}{n!}t(t-1)(t-2)...(t-n+1)\Delta^nf(x_0)
Nx(x0+th)=f(x0)+tΔf(x0)+2!1t(t−1)Δ2f(x0)+...n!1t(t−1)(t−2)...(t−n+1)Δnf(x0)也就是所谓的
N e w t o n Newton Newton前向插值公式。此时对应的插值余项为: R n ( x ) = t ( t − 1 ) . . . ( t − n ) ( n + 1 ) ! h n + 1 f n + 1 ( ξ ) , ξ ∈ ( x 0 , x h ) R_n(x)=\Large \frac{t(t-1)...(t-n)}{(n+1)!}h^{n+1}f^{n+1}(\xi),\xi\in(x_0,x_h) Rn(x)=(n+1)!t(t−1)...(t−n)hn+1fn+1(ξ),ξ∈(x0,xh)
解释以下其中 Δ \Delta Δ的含义: Δ n f ( x k ) = f [ x k , x k − 1 , . . . , x k − n ] n ! h n \Delta^{n}f(x_k)=\LARGE\frac{f[x_k,x_{k-1},...,x_{k-n}]}{n!h^n} Δnf(xk)=n!hnf[xk,xk−1,...,xk−n]
后向插值公式
如果将顺序的节点倒序排列后推导对应的等距插值公式就是所谓的后向插值公式:
首先补充一个符号的含义
(
n
j
)
=
n
(
n
−
1
)
.
.
.
(
n
−
j
+
1
)
j
!
(3)
\begin{pmatrix}n\\j\\\end{pmatrix}\tag{3}=\frac{n(n-1)...(n-j+1)}{j!}
(nj)=j!n(n−1)...(n−j+1)(3)
对应的后向插值公式为:
N
n
(
x
)
=
f
[
x
n
]
+
(
−
1
)
−
t
(
−
t
−
1
)
.
.
.
(
−
t
−
k
+
1
)
1
!
∇
f
(
x
n
)
+
(
−
1
)
2
−
t
(
−
t
−
1
)
.
.
.
(
−
t
−
k
+
1
)
2
!
∇
2
f
(
x
n
)
+
.
.
.
(
−
1
)
n
−
t
(
−
t
−
1
)
.
.
.
(
−
t
−
k
+
1
)
n
!
∇
n
f
(
x
n
)
N_n(x)=f[x_n]+(-1)\Large \frac{-t(-t-1)...(-t-k+1)}{1!}\large \nabla f(x_n)+(-1)^2\Large \frac{-t(-t-1)...(-t- k+1)}{2!}\large \nabla^2f(x_n)+...(-1)^n\Large \frac{-t(-t-1)...(-t-k+1)}{n!}\large \nabla^nf(x_n)
Nn(x)=f[xn]+(−1)1!−t(−t−1)...(−t−k+1)∇f(xn)+(−1)22!−t(−t−1)...(−t−k+1)∇2f(xn)+...(−1)nn!−t(−t−1)...(−t−k+1)∇nf(xn),
对应的微分余项为:
R n ( x ) = t ( t + 1 ) . . . ( t + n ) ( n + 1 ! ) h n + 1 f n + 1 ( ξ ( x ) ) , ξ ( x ) ∈ ( x 0 , x n ) ; R_n(x)=\Large \frac{t(t+1)...(t+n)}{(n+1!)}h^{n+1}f^{n+1}(\xi(x)),\xi(x)\in(x_0,x_n); Rn(x)=(n+1!)t(t+1)...(t+n)hn+1fn+1(ξ(x)),ξ(x)∈(x0,xn);
用一波百度百科上的公式图:
实战
全是公式确实太过于无聊,感叹一句我太菜了呀,fw石锤了。不然上题目实战以下,看看直接会不会用,经典白嫖,拿来主义。
书上有个数据我感觉有问题,3到4过程中使用后向插值计算:1.09544-1.07238应该是0.02306,而不是书上所写的0.02307,后面的计算结果应该也需要对应的修正,我不确定是不是因为在前面计算开根号的时候,本身1.09544和1.07238就是近似处理过的数据,然后计算全程是直接使用
1.15
−
1.20
\sqrt{1.15}-\sqrt{1.20}
1.15−1.20得到的0.02307这个结果,不过这些都不重要,无伤大雅,方法我们已经掌握了,狂笑哈哈哈。
兄弟们,你学会了吗?什么?不会?
那就再来一道练练手?