Lagrange插值法通过选定一组形式对称的插值基函数来线性组合出插值多项式,但问题在于计算量比较大,且容易重复计算,这个问题可以通过逐次线性插值的方法予以解决,由递推关系逐步得到更高次的插值。Newton插值法的显著优势在于:既能得到递推式,又有明确的插值多项式——真是皆大欢喜!
首先我们知道n+1个节点的插值多项式次数不超过n,Newton插值多项式的构造形式如下:
Nn(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+⋯+an(x−x0)⋯(x−xn−1)
我们自然要问,这样构造的道理在哪?(我不会问“为啥我就想不出来这样构造呢?”) ^_^ 其实,上面的n+1个多项式是线性无关的,故而任何一个n次多项式都可以由之线性组合得到,也即可以作为插值基函数。另外,插值条件Nn(xi)=yi,i=0,1,2,⋯,n 可以求得系数ai,有
a0=f(x0),a1=f(x1)−f(x0)x1−x0,a2=⋯
再往下待定系数ai的形式就比较复杂了,所以先引入差商的概念。
差商
对于互异节点,f(x)在点xi,xj的一阶差商
f[xi,xj]=f(xi)−f(xj)xi−xj
f(x)在点xi,xj,xk的二阶差商(也就是差商的差商)f[xi,xj,xk]=f[xi,xj]−f[xj,xk]xi−xk
以此类推,f(x)在点x0,x1,⋯,xk的k阶差商(即k-1阶差商的差商)
f[x0,x1,⋯,xk]=f[x0,x1,⋯,xk−1]−f[x1,x2,⋯,xk]x0−xk
差商的定义非常简单,其具有如下性质:
- k阶差商可由函数值f(x0),f(x1),⋯,f(xk)线性组合表示,且
f[x0,x1,⋯,xk]=k∑i=0f(xi)(xi−x0)⋯(xi−xi−1)(xi−xi+1)⋯(xi−xk)
- 差商具有轮换对称性,即任意调换节点的次序,差商值不变,例如f[x0,x1,x2]=f[x1,x0,x2]=f[x2,x1,x0].
- 如果$f(x)是x的n次多项式,则k阶差商是n-k次多项式,k>n时差商为零.
显而易见,差商也是用递推关系来定义的,我们可以用表格(差商表)来展示其计算过程:

现在我们再继续讨论Newton插值公式,有了差商概念之后,我们将待定系数写成 ak=f[x0,x1,⋯,xk], 也就是说Newton插值多项式的组合系数为差商形式。由此,f(x)关于节点xi的n次Newton插值多项式写为
Nn(x)=f(x0)+n∑k=1f[x0,x1,⋯,xk]k−1∏j=0(x−xj)=f(x0)+n∑k=1f[x0,x1,⋯,xk]Pk(x)
由于插值多项式的唯一性,Newton法与Lagrange法插值多项式的余项(截断误差)相同,即
Rn(x)=f(x)−Nn(x)=f(n+1)(ξ)(n+1)!Pn+1(x)
实际上,我们可以直接由差商定义得到f(x),只需将x视为一个节点(x≠xi),则
f(x)=f(x0)+f[x,x0](x−x0)=f(x0)+(f[x0,x1]+f[x,x0,x1](x−x1))(x−x0)⋯=Nn(x)+f[x,x0,x1,⋯,xn]Pn+1(x)=Nn(x)+Rn(x)
故,又有Rn(x)=f(n+1)(ξ)(n+1)!Pn+1(x)=f[x,x0,x1,⋯,xn]Pn+1(x)
另外,我们可以直接写出递推式
Nn+1(x)=Nn(x)+f[x0,x1,⋯,xn+1]Pn+1(x)
一般可以将得到如下估计误差的使用公式 Rn(x)≈f[x0,x1,⋯,xn+1]Pn+1(x).
实际上,Newton插值与逐次线性插值在节点逐步增加时,计算公式的每一步都是等价的。但是更一般地来说,Newton插值在计算多个x点时需要重新计算的相对较少。
差分
与差商密切相关的另一个概念是差分,它是指在等距节点上函数值的差,引进这一概念的目的是为了回答以下问题:“在某些特殊的情形是否可以简化Newton插值?”所谓等距节点,是指对给定的常数h(称为步长),节点xi=x0+ih, i=0,1,⋯,n,称Δfi≡f(xi+1)−f(xi) 为f(x)在xi处的一阶向前差分;∇fi≡f(xi)−f(xi−1) 为f(x)在xi处的一阶向后差分。Δ2fi≡Δf(xi+1)−Δf(xi) 为f(x)在xi处的二阶向前差分;∇2fi≡∇f(xi)−∇f(xi−1) 为f(x)在xi处的二阶向后差分。依此类推,
Δmfi≡Δm−1f(xi+1)−Δm−1f(xi)
为f(x)在xi处的m阶向前差分;∇mfi≡∇m−1f(xi)−∇m−1f(xi−1)
为f(x)在xi处的m阶向后差分。可以看出,m阶向前差分是从f(xi)开始,上溯m个函数值到f(xi+m);而m阶向后差分是从f(xi)开始,下溯m个函数值到f(xi−m)。我们得出(可以用数学归纳法证明,但从理解上比较直观)向前差分和向后差分有以下关系式:Δmfi=∇mfi+m,例如:Δfi=∇fi+1,Δ2fi=∇2fi+2。由此,我们给出如下差分表:

另一方面,我们已经指出“m阶向前差分是从f(xi)开始,上溯m个函数值到f(xi+m)”,也就是说Δmfi与fi,fi+1,⋯,fi+m这m+1个函数值相关,实际上通过归纳法可以得出差分与函数值有如下关系:
Δmfi=C0mfi+m+C1mfi+m−1+⋯+Cm−1mfi+1+Cmmfi,
系数为组合数,数值上与(a−b)m的展开系数相同。
为了导出等距节点时差分插值公式,我们先讨论差分与差商的关系,然后直接带入Newton插值公式即可。节点距离h,有
f[xi,xi+1]=fi+1−fixi+1−xi=Δfih=∇fi+1h
f[xi,xi+1]=f[xi,xi+1]−f[xi+1,xi+2]xi−xi+2=Δfi−Δfi+1−2h2=Δ2fi2h2=∇2fi+22h2
以此类推,
f[xi,xi+1,⋯,xi+m]=Δmfim!hm=∇mfi+mm!hm
f[x0,x1,⋯,xk]=Δ0fik!hk=∇kfkk!hk
如果节点x0,x1,⋯,xn是等距节点,即xi=x0+ih,h=b−an。Newton插值基本公式
Nn(x)=f(x0)+n∑k=1f[x0,x1,⋯,xk]Pk(x)
,如果再令x=x0+th,可以得出
Pk(x)=k−1∏j=0(x−xj)=k−1∏j=0(x0+th−x0−jh)=k−1∏j=0(t−j)h,
则
Nn(x0+th)=f(x0)+n∑k=1[Δkf0k!hkk−1∏j=0(t−j)h]=f(x0)+n∑k=1[Δkf0k!k−1∏j=0(t−j)]
余项化为Rn(x0+th)=f(n+1)(ξ)(n+1)!hn+1n∏j=0(t−j)
当然,我们由此Newton向前插值公式可以直接得到向后插值公式,只需要用∇kfn替换Δkf0,(t−j)换成(t+j)即可。