数值分析笔记_3 埃尔米特插值

徘徊边缘 提交于 2020-01-08 20:38:11

埃尔米特插值

我们知道,线性插值思想在于利用n个零点解出唯一的n维多项式映射,这种方法保证了曲线的连续性但是不能保证其平滑性,例如拉格朗日插值多项式在高次情况下容易出现的抖动问题正反映了它的导数与原曲线差别是很大的。在一些情况下我们需要限定拟合曲线的导数值也尽量接近原曲线,这时可以采用Hermite插值的方法。

现假设有一函数fC[a,b]f\in C[a,b],给出一系列探测点{(x0,f(x0)),(x0,f(x0)),(x0,f(x0)),(x0,fm(x0)),}\{ (x_0,f(x_0)),(x_0,f\prime(x_0)),(x_0,f\prime\prime(x_0)),\cdots (x_0,f^{m}(x_0)), \},我们可以写出它在x0x_0处的密切多项式:
P(x)=f(x0)+f(x0)(xx0)++fm(x0)m!(xx0)P(x)=f(x_0)+f\prime(x_0)(x-x_0)+\cdots+\frac{f^{m}(x_0)}{m!}(x-x_0)

所谓密切多项式也就是说这一点处的n阶导数都是与原函数相同的。注意这只是在某一点处,如果有来自n个点的数据,能够得到的m值往往是不同的,我们用这一系列的点所构造的插值多项式必然要去满足最大m的插值多项式。

Hermite插值就是基于构造密切多项式的思想进行的,我们先看一下最常见的2阶密切多项式,它保证插值点处的导数和函数值都与原函数相同:

P(x)=f(x0)+f(x0)(xx0)+f(x0)(xx0)2P(x)=f(x_0)+f\prime(x_0)(x-x_0)+f\prime\prime(x_0)(x-x_0)^2

假设我们有n+1个插值点,2n+2组数据{(x0,f(x0)),(x1,f(x1)),(x2,f(x2)),(xn,f(xn)),}\{ (x_0,f(x_0)),(x_1,f(x_1)),(x_2,f(x_2)),\cdots (x_n,f(x_n)), \}{(x0,f(x0)),(x1,f(x1)),(x2,f(x2)),(xn,f(xn)),}\{ (x_0,f\prime(x_0)),(x_1,f\prime(x_1)),(x_2,f\prime(x_2)),\cdots (x_n,f\prime(x_n)), \},根据线性方程组理论,我们可以确定一个最高2n+2阶的插值多项式,又因为求导数实际上将次数降了一阶,可以确定一个2n+1阶的插值多项式。

设待构造的Hermite多项式为H2n+1(x)H_{2n+1}(x),那么它应该至少用2n+1个基表示,因为有2n+2组数据,我们不妨构造2n+2个正交基,为了简便我们希望这些基与2n+2函数值都是关联的,这些基可以表示成hi(x)f(xi),h^i(x)f(xi)0xnh_i(x)f(x_i),\hat h_i(x)f(x_i),0\leq x\leq n。那么就有:(使用Kroneck符号δij\delta _{ij})

hi(xj)=δij,hi(xj)=0,h^i(xi)=0,h^i(xj)=δijh_i(x_j)=\delta _{ij}, h_i\prime(x_j)=0,\hat h_i(x_i)= 0, \hat h_i\prime(x_j)=\delta _{ij}

H2n+1(x)=i=0nhi(x)f(xi)+i=0nh^i(x)f(xi)H_{2n+1}(x)=\sum_{i=0}^{n}h_i(x)f(x_i)+\sum_{i=0}^{n}\hat h_i(x)f\prime(x_i)

此时我们得到了一个2n+1阶的,而且形式非常一致的多项式。我猜想最初得出这个多项式可能并不是构造的,就像拉格朗日插值多项式可以用Vandermond行列式解出来一样,最初Hermite可能是在研究矩阵的时候解出了这个多项式。

接下来就是确定这些基,因为形式奇好,(写成H2n+1(x)=lk(x)yk,0k2n+1H_{2n+1}(x)=\sum l_k(x)y_k,0\le k\le 2n+1可能更明显,我们将导数一并作为构成函数的向量混进了插值多项式,将原来的n维展开到了2n+2维上)当然要用现成的拉格朗日插值,2n+1阶插值多项式有2n+1个根,我们知道n+1个根,必然都是二重根。由此得到的2n阶拉格朗日插值因子为Ln,i2(x)L_{n,i}^2(x),实际上只有n个不同的因子,再根据hi(xj)=δijh_i(x_j)=\delta _{ij},应该对每个因子再乘上一个一阶项使之满足关于基的那四条条件:

hi(x)=(Aix+Bi)Ln,i2(x)h^i(x)=Ci(xxi)Ln,i2(x)\quad\quad\quad\quad\quad\quad h_i(x)=(A_ix+B_i)L_{n,i}^2(x) \\\quad\quad\quad\quad\quad\quad \hat h_i(x)=C_i(x-x_i)L_{n,i}^2(x)

之所以这么构造也是有原因的:根据h^i(xi)=0\hat h_i(x_i)= 0,它们的一阶项只能是比(xxi)(x-x_i)多个常数CiC_i,而对于h_i(x)就会有两个变量。为了解出A,B,CA,B,C,我么根据剩下的限制条件hi(xj)=δij,hi(xj)=0,h^i(xj)=δijh_i(x_j)=\delta _{ij}, h_i\prime(x_j)=0, \hat h_i\prime(x_j)=\delta _{ij}列方程并求解,可以解出:

hi(x)=(12L(xi)(xxi))Ln,i2(x)h^i(x)=(xxi)Ln,i2(x)\quad\quad\quad\quad\quad\quad h_i(x)=(1-2L\prime(x_i)(x-x_i))L_{n,i}^2(x) \\\quad\quad\quad\quad\quad\quad \hat h_i(x)=(x-x_i)L_{n,i}^2(x)

这就是2阶的Hermite多项式,用相同的方法不难构造出m阶的Hermite插值多项式。值得一提的是,如果令z2i=z2i+1=xi,i=0,1,...,nz_{2i} = z_{2i+1} = x_i, i = 0, 1, . . . , n,Hermite多项式刚好可以使用Newton差商插值多项式表示。

Hermite插值的误差和2n+1阶的拉格朗日插值是一样的。

Rn=f2n+2(ξ)(2n+2)!i=0n(xxi)2R_n=\frac{f^{2n+2}(\xi)}{(2n+2)!}\prod_{i=0}^{n}(x-x_i)^2

实际上Hermite插值很少被直接用来进行插值,因为它对数据的要求太高而且计算繁琐。然而Hermite插值多项式的构造展现了一种处理数据的思想,也体现了线性方程组与的多项式的内在关联。以后有机会的话,我会尝试用解方程组的思路将m阶Hermite多项式的系数以行列式形式解出来。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!