1几种插值方法的比较与应用摘要:本文是对学过的插值方法进行了总结、比较,使我们在进行工程计算的过程中更清楚的知道哪一种方法适合哪一种类型,了解哪种方法在已知条件下可以得到更优的结果以满足计算要求。关键词:数值分析,插值,多项式1前言在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使给出了解析表达式,但却由于表达式过于复杂,不仅使用不方便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法是一种古老的数学方法,它来自生产实践。早在一千多年前,我国科学家在研究历法上就应用了线性插值与二次插值,但它的基本理论确实在微积分产生之后才逐渐完善的,其应用也日益增多,特别是在计算机软件中,许多库函数,如sin,cos,xxxe等的计算实际上归结于它的逼近函数的计算。逼近函数一般为只含有算术运算的简单函数,如多项式、有理分式(即多项式的商)。在工程实际问题当中,我们也经常会碰到诸如此类的函数值计算问题。被计算的函数有时不容易直接计算,如表达式过于复杂或者只能通过某种手段获得该函数在某些点处的函数值信息或者导数值信息等。因此,我们希望能用一个“简单函数”逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。这种方法就叫插值逼近或者插值法。插值法要求给出函数fx的一个函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定一个简单的函数x作为fx的近似,概括地说,就是用简单函数为离散数组建立连续模型。2插值法的基本概念2.1插值法的定义设函数yfx在区间,ab上有定义,且已知在点0naxxb上得值(0,1,,)iifxyin,若存在一个简单函数x,使得(0,1,,)iixyin成立,就称x为fx的插值函数,点(0,1,,)ixin为插值节点,包括插值节点的区间,ab成为插值区间,求插值函数x的方法成为插值法。若x为次数不超过n的代数多项式01nnnxaaxax其中的(0,1,,)iain为实数,就称nx为插值多项式,相应的插值法称为多项式插值。若nx为2分段的多项式,就称为分段插值。2.2截断误差截断误差(余项):若在,ab上用nx近似fx,则nnRxfxx称为插值多项式的截断误差,又称为插值多项式的余项。代数插值法有Lagrange插值法、逐次线性插值法、Newton插值法、Hermite插值法、分段插值法等。其基本思想都是用高次代数多项式或分段的低次代数多项式作为被插函数fx的近似表达式。3几种常见的代数插值法3.1Lagrange插值法设函数yfx在区间,ab上有定义,且在,ab上1n个不同点01,,,nxxx上得函数值(0,1,,)iiyfxin,若存在一个至少n次的插值多项式01nnnxaaxax其中(0,1,,)iain为实数。先构造函数(0,1,,)ilxin,它们的次数不超过n,且满足01ijjilxji然后以对应点处的函数值为系数作线性组合,即得所要求的多项式。由多项式ilx有n个根(0,1,,1,1,,)jxjiin,故它必有如下形式0110011()()()()()(0,1,,)()()()()njiinijiiiiiinijjixxxxxxxxxxlxinxxxxxxxxxx这些函数称为Lagrange插值基函数,而nx是至多n次多项式,且满足0()()(0,1,2,,)nnkiikkixylxykn称其为n次Lagrange插值多项式。3.2Newton插值法设有函数012(),,,,,fxxxx为一系列互不相等的点,称()()[,]()ijijijfxfxfxxijxx为fx关于点,ijxx的一阶差商。一般的称01101010[,,,][,,,][,,,]kkkkfxxxfxxxfxxxxx为fx关于01,,,kxxx的k阶差商。表1差商表3x()fx一阶差商二阶差商三阶差商0x1x2x3x0()fx1()fx2()fx3()fx01[,]fxx12[,]fxx23[,]fxx012[,,]fxxx123[,,]fxxx0123[,,,]fxxxx00001012011010101()()()[,]()()[,,]()()[,,,]()()()[,,,,]()()nnnnnnfxfxxxfxxxxxxfxxxxxxxxxfxxxxxxxxxfxxxxNxRx其中0000101201101()()()[,]()()[,,]()()[,,,]nnnNxfxxxfxxxxxxfxxxxxxxxxfxxx0101101()()()()[,,,,]()[,,,,]nnnnnRxxxxxxxfxxxxxfxxxx显然,()nNx是满足插值条件的至多n次多项式。可得()()(0,1,,)inifxNxin。3.3Hermite插值法设],[)(1baCxf,已知互异点0x,1x,…,],[baxn及所对应的函数值为0f,1f,…,nf,导数值为'0f,'1f,…,'nf,则满足条件nifxHfxHiiniin,,1,0,)(,)(''1212的12n次Hermite插值多项式为)()()(0'12xfxfxHjnjjjnjin其中)())((,)]()(21[)(22'xlxxxlxlxxxjjjjjjjj称为Hermite插值基函数,)(xlj是Lagrange插值基函数,若],[22baCfn,插值误差为220)22(12)()()!22()()()(nxnnxxxxnfxHxf,),()(baxx4插值法的应用拉格朗日插值法和牛顿插值法是两种常用的简便的插值法。但牛顿插值法则更为简便,与拉格朗日插值多项式相比较,它不仅克服了“增加一个节点时整个计算工作必须重新开始”的缺点,而且可以节省乘、除法运算次数。同时,在牛顿插值多项式中用到的差分与差商等概念,又与数值计算的其他方面有着密切的关系。例1已知函数表如下x0.10.20.30.40.50.6sinx0.099830.198670.295520.389420.479430.56464计算sin(0.12)的值。4解:方法一利用拉格朗日插值法计算。(1)因为0.10.120.2,取插值点010.1,0.2xx使用1n的拉格朗日插值法(线性插值),得1010.20.1()sin()sin()0.10.20.20.1xxpxxx1sin(0.12)(0.12)0.120.20.120.10.099830.198670.10.20.20.10.119598p因''()sinfxx所以0.10.2max''()sin(0.2)0.19867xfx故有:10.19867sin(0.12)(0.12)(0.120.1)(0.120.2)0.00015892!p可见,用1(0.12)0.119598p作为sin(0.12)的近似值,可保证有三位有效数字。(2)取插值点0120.1,0.2,0.3xxx使用2n的拉格朗日插值法(线性插值),得2012(0.2)(0.3)(0.1)(0.3)()sin()sin()(0.10.2)(0.10.3)(0.20.1)(0.20.3)(0.1)(0.2)sin()(0.30.1)(0.30.2)xxxxpxxxxxx2sin(0.12)(0.12)(0.120.2)(0.3)(0.120.1)(0.3)0.099830.19867(0.10.2)(0.10.3)(0.20.1)(0.20.3)(0.120.1)(0.2)0.29552(0.30.1)(0.30.2)0.119757pxxx因'''()cosfxx所以0.10.3max''()cos(0.1)0.995004xfx故有:20.995004sin(0.12)(0.12)(0.120.1)(0.120.2)(0.120.3)0.000047763!p可见,用2(0.12)0.119757p作为sin(0.12)的近似值,可保证有四位有效数字。方法二利用牛顿插值法计算5构造差商表xsinx一阶差商二阶差商三阶差商四阶差商五阶差商0.10.099830.20.198670.99840.30.295520.9685-0.14950.40.389420.9390-0.14750.006670.50.479430.9001-0.1945-0.15667-0.408350.60.564640.8521-0.2400-0.151670.01250.8417(1)由牛顿公式得一次插值多项式为1()0.099830.9984(0.1)pxx1sin(0.12)(0.12)0.099830.9984(0.120.1)0.099830.0199680.119798p(2)由牛顿公式得二次插值多项式为2()0.099830.9984(0.1)0.1495(0.1)(0.2)pxxxx2sin(0.12)(0.12)0.099830.9984(0.120.1)0.1495(0.120.1)(0.120.2)0.099830.0199680.00023920.120037p(3)由牛顿公式得五次插值多项式为5()0.099830.9984(0.1)0.1495(0.1)(0.2)0.00667(0.1)(0.2)(0.3)0.40835(0.1)(0.2)(0.3)(0.4)0.8417(0.1)(0.2)(0.3)(0.4)(0.5)pxxxxxxxxxxxxxxxx5sin(0.12)(0.12)0.099830.9984(0.120.1)0.1495(0.120.1)(0.120.2)0.00667(0.120.1)(0.120.2)(0.120.3)0.40835(0.120.1)(0.120.2)(0.120.3)(0.120.4)0.8417(0.120.1)(0.120.2)(0.120.3)(0.120p.4)(0.120.5)0.099830.0199680.00023920.000001920.00003290.00002580.120098从上面的计算过程可以看出,拉格朗日插值法的线性插值与抛物插值的计算过程没有继承性,即增加一个节点时整个计算工作必须重新开始,而牛顿插值则避免了这一问题,这样大量的节省了6乘、除法运算次数,减少了计算的时间。因此,对于一些结构相当复杂的函数()fx,牛顿插值法比拉格朗日插值法要占优势。但是,牛顿插值法也存在的问题,就是在高次插值时,误差可能会增大,如本题可看出,高次插值会不稳定。这说明高次牛顿插值不可取,因此在采用牛顿插值法时常使用分段低次插值的方法,以获得更精确的计算结果。例2根据函数xxfln)(的数据表x0.400.500.700.80)(xf-0.916291-0.693147-0.356675-0.223144)('xf2.5000002.0000001.4285711.250000运用Hermite插值计算60.0ln。解40.00x,50.01x,70