牛顿插值多项式

牛顿插值:设 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(xx0)+a2(xx0)(xx1)++an(xx0)(xxn)

有结论,令 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]=xkx0f[x1,,xk]f[x0,,xk1]
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](xx0)+f[x0,x1,x2](xx0)(xx1)+

证明:令 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](xkx0)++f[x0,,xk](xkx0)(xkxk1)
拆最后一项 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](xkx0)(xkxk1)=(f[x1,,xk]f[x0,,xk1])(xkx1)(xkxk1)
加上前面一项合并成
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,,xk1](xkx0)(xkxk2)(xkx0xk1x0)
然后再拆,发现可以变成
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,,xk1](xkx1)(xkxk2) 以及合并后的
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,,xk2](xkx0)(xkxk3)(xkx0xk2x0)
然后又可以继续往前和,最后发现剩下的就是 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](xkx1)++f[x1,,xk1](xkx1)(xkxk1)=f(xk)

感觉是很好玩的东西,而且好像比拉格朗日插值有用,可以用来动态更新插值多项式(维护每个区间的均差 f [ x l , … , x r ] f[x_l,\dots,x_r] f[xl,,xr]
但我只理解了均差的定义和它的巧妙,还没有完全 get 背后的原理 …

你可能感兴趣的:(数学,算法,人工智能)