本文主要是介绍Newton插值法 | 差商 + Newton插值公式 + 插值余项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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)(ξ)
这篇关于Newton插值法 | 差商 + Newton插值公式 + 插值余项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!