牛顿插值:设 f ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) ( x − x 1 ) + ⋯ + a n ( x − x 0 ) … ( x − x n ) f(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+\dots+a_n(x-x_0)\dots(x-x_n) f(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+⋯+an(x−x0)…(x−xn)
有结论,令
f
[
x
0
,
…
,
x
k
]
=
f
[
x
1
,
…
,
x
k
]
−
f
[
x
0
,
…
,
x
k
−
1
]
x
k
−
x
0
f[x_0,\dots,x_k]=\frac{f[x_1,\dots,x_k]-f[x_0,\dots,x_{k-1}]}{x_k-x_0}
f[x0,…,xk]=xk−x0f[x1,…,xk]−f[x0,…,xk−1]
f
(
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)=f(x_0)+f[x_0,x_1](x-x_0)+f[x_0,x_1,x_2](x-x_0)(x-x_1)+\dots
f(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+…
证明:令
x
=
x
k
x=x_k
x=xk 要证
f
(
x
k
)
=
f
(
x
0
)
+
f
[
x
0
,
x
1
]
(
x
k
−
x
0
)
+
⋯
+
f
[
x
0
,
…
,
x
k
]
(
x
k
−
x
0
)
…
(
x
k
−
x
k
−
1
)
f(x_k)=f(x_0)+f[x_0,x_1](x_k-x_0)+\dots+f[x_0,\dots,x_k](x_k-x_0)\dots(x_k-x_{k-1})
f(xk)=f(x0)+f[x0,x1](xk−x0)+⋯+f[x0,…,xk](xk−x0)…(xk−xk−1)
拆最后一项
f
[
x
0
,
…
,
x
k
]
(
x
k
−
x
0
)
…
(
x
k
−
x
k
−
1
)
=
(
f
[
x
1
,
…
,
x
k
]
−
f
[
x
0
,
…
,
x
k
−
1
]
)
(
x
k
−
x
1
)
…
(
x
k
−
x
k
−
1
)
f[x_0,\dots,x_k](x_k-x_0)\dots(x_k-x_{k-1})\\=(f[x_1,\dots,x_k]-f[x_0,\dots,x_{k-1}])(x_k-x_1)\dots(x_k-x_{k-1})
f[x0,…,xk](xk−x0)…(xk−xk−1)=(f[x1,…,xk]−f[x0,…,xk−1])(xk−x1)…(xk−xk−1)
加上前面一项合并成
f
[
x
0
,
…
,
x
k
−
1
]
(
x
k
−
x
0
)
…
(
x
k
−
x
k
−
2
)
(
x
k
−
1
−
x
0
x
k
−
x
0
)
f[x_0,\dots,x_{k-1}](x_k-x_0)\dots(x_k-x_{k-2})(\frac{x_{k-1}-x_0}{x_k-x_{0}})
f[x0,…,xk−1](xk−x0)…(xk−xk−2)(xk−x0xk−1−x0)
然后再拆,发现可以变成
f
[
x
1
,
…
,
x
k
−
1
]
(
x
k
−
x
1
)
…
(
x
k
−
x
k
−
2
)
f[x_1,\dots,x_{k-1}](x_k-x_1)\dots(x_k-x_{k-2})
f[x1,…,xk−1](xk−x1)…(xk−xk−2) 以及合并后的
f
[
x
0
,
…
,
x
k
−
2
]
(
x
k
−
x
0
)
…
(
x
k
−
x
k
−
3
)
(
x
k
−
2
−
x
0
x
k
−
x
0
)
f[x_0,\dots,x_{k-2}](x_k-x_0)\dots(x_k-x_{k-3})(\frac{x_{k-2}-x_0}{x_k-x_0})
f[x0,…,xk−2](xk−x0)…(xk−xk−3)(xk−x0xk−2−x0)
然后又可以继续往前和,最后发现剩下的就是
f
(
x
1
)
+
f
[
x
1
,
x
2
]
(
x
k
−
x
1
)
+
⋯
+
f
[
x
1
,
…
,
x
k
−
1
]
(
x
k
−
x
1
)
…
(
x
k
−
x
k
−
1
)
=
f
(
x
k
)
f(x_1)+f[x_1,x_2](x_k-x_1)+\dots+f[x_1,\dots,x_{k-1}](x_k-x_1)\dots(x_k-x_{k-1})=f(x_k)
f(x1)+f[x1,x2](xk−x1)+⋯+f[x1,…,xk−1](xk−x1)…(xk−xk−1)=f(xk)
感觉是很好玩的东西,而且好像比拉格朗日插值有用,可以用来动态更新插值多项式(维护每个区间的均差
f
[
x
l
,
…
,
x
r
]
f[x_l,\dots,x_r]
f[xl,…,xr] )
但我只理解了均差的定义和它的巧妙,还没有完全 get 背后的原理 …