《几种常用的插值方法.pdf》由会员分享,可在线阅读,更多相关《几种常用的插值方法.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、几几种种常常用用的的插插值值方方法法-CAL-FENGHAI.-(YICAI)-Company One1几种常用的插值方法几种常用的插值方法数学系 信息与计算科学 1 班 李平指导老师:唐振先摘要摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。关键词关键词:任意阶多项式插值,分段多项式插值。引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数
2、的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有 Hermite 和 spine 插值和分段线性插值。一任意阶多项式插值:一任意阶多项式插值:1.1.用单项式基本插值公式进行多项式插值:用单项式基本插值公式进行多项式插值:多项式插值是求通过几个已知数据点的那个 n1 阶多项式,即 Pn1(X)=A1+A2X+AnXn1,它是一个单项式基本函数 X0,X1Xn1的集合来定义多项式,由已知 n 个点(X,Y)构成的集合,可以使多项式通过没数据点,并为 n 个未知系数 Ai 写出 n 个方程,这 n 个方程组成的方程组的
3、系数矩阵为 Vandermonde 矩阵。虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。2.2.拉格朗日基本插值公式进行插值:拉格朗日基本插值公式进行插值:先构造一组插值函数 Li(x)=(x x0)(x xi1)(x xi1)(x xn),其中(xi x0)(xi xi1)(xi xi1)(xi xn)i=0,n.容易看出 n 次多项式 Li(x)满足 Li(x)=1,(i=j);Li(x)=0,(ij),其中 i=0,1n
4、,令 Li(x)=yili(x)这就是拉格朗日插值多项式。与单i0n2项式基本函数插值多项式相比,拉格朗日插值有 2 个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构紧凑,在理论分析中很方便,但是,当插值节点增加、减少或其位置变化时全部插值函数均要随之变化,从而整个插值公式的结构也将发生变化,这在实际计算是非常不利的。3.3.使用牛顿均差插值公式进行多项式进行插值:使用牛顿均差插值公式进行多项式进行插值:首先,定义均差,f 在 xi,xj 上的一阶均差fxi,xjf(xj)f(xi)xj xi,其中(ij)。f 在xi,xj,xk的二阶
5、均差 fxi,xj,xk=fx0 xk1 fxix0 xkxkfxi,xj fxj,xkxj xk,k 阶均fxixk=。xn(x-由此得出牛顿均值插值多项式的公式为 Pn(x)=fx0+fx0-x1(x-x0)+fx0,x0)(x-xn-1)。实际计算中经常利用下表给出的均差表直接构造牛顿插值公式,,xkx0 x1x2x3F(xi)F(x0)F(x1)F(x2)F(x3)一阶均差Fx0,x1Fx1,x2Fx2,x3二阶均差Fx0,x1,x2Fx1,x2,x3三阶均差Fx0,x1,x2,x3凡是拉格朗日插值解决的问题牛顿插值多项式都可以解决,不仅如此,更重要的是牛顿均值克服了拉格朗日插值多项式
6、的缺点,当需要提高近似值的精确度而增加结点时,它不必重新计算,只要在后面再计算一项均插即可,减少了计算量,不用计算全部系数,节约了大量人力,物力,财力。增加插值多项式的阶数并不一定能增加插值的精度,据定义,插值式,F(x)可以与结点(xi,yi),i=1,n 处的实际函数匹配,但却不能保证支点之间求 F(x),还能很好的逼近产生(xi,yi)数据的实际函数 F(x)。例如,如果 F(x)为一个已知的解析3函数,而且定义 F(x)的节点集合中数据点的数目可以增加(多项式 F(x)的阶数也增加),但是,由于 F(x)的起伏增加,那么插值式就可能在节点见振带,基于当实际函数 F(x)平滑时,这种多项
7、式摆动也可能发生,这种振荡不是由多项式摆动引起的,而是由多项式的项相加来求插值多项式时发生舍入误差造成的。有时多项式摆动可通过谨慎选择基础函数的取样来成为,但如果数据是由不容易重复实验取得的,就不能这么做了,这会司会用下面介绍分段插值法。二、分段插值多项式二、分段插值多项式1 1、分段线性插值:、分段线性插值:分段线性插值最简单的插值方案,只要将每个相邻的节点用直线接起来,如此形成的一条新的折线就是分段线性插值函数,记作 In(xj)=yi而且 In(x)在每个区间xjxj+1上是线性函数(j=0,1n-1)In(X)可以定义为 In(xj)=yili(x)其中 l0(x)=i0nx x1,x
8、x0,x1x0 x1其他,l0(x)=0lj(x)=x xj1xj xj1,xxj1,xj;ln(x)=x xj1xj xj1,xxj,xj1;其他,lj(x)=0ln(x)=x xn1,xxn1,xn;其他,ln(x)=0 xn xn1In(x j)具有很好的收敛性,即对于 xa,b有:当 n 趋向于无穷大时,In(x)=g(x)成立。用 In(x)计算 x 点的插值时,只用到 x 左右的两个节点,计算量与节点个数 n 无关,但 n 越大分段越多,插值误差就越小,但是,该方法折线在节点处显然不光滑,即In(X)在节点处导数不存在着影响它在需要光滑插值曲线的(如机械插值等领域中的应用)。2 2
9、分段三次分段三次 HermiteHermite 插值插值为清楚起见,先用三次 Hermite 插值的构造方法加以解释,三次 Hermite 插值的做法是,在xk xk+1上寻找一个次数不超过 3 的多项式 H3(x)它满足插值条件H3(xk)=f(xk),H3(xk+1)=f(xk+1)4H3(xk)=mk,H3(xk1)=mk+1相应的插值基函数为2x xk x xk1k(x)12,xk1 xkxk xk12x xk1x xk(x)12,k1x xx xkk1k1k2 x xk1k(x)(x xk),xk xk12 x xk(x)(x x).k1k1xk1 xk于是有 H3(x)=k(x)f
10、(xk)+k+1(x)f(xk+1)mkk(x)mk+1k+1(x)。如果函数满足条件:(1)C1a,b(2)满足插值条件:(xk)=f(xk),(xk)f(xk),k=0,1,2,n.(3)在每个小区间xk-1,xk,k=1,2,n 上是三次多项式。则称为 f 的分段三次 Hermite 插值多项式。根据分段线性插值和三次 Hermite 插值公式可得到的表达式(x)=f(xk)k(x)f(xk)k(x)k0n其中2x x0 x x112,xx0,x10(x)x1 x0 x0 x10,xx0,x12x xk x xk112,xxk1,xkxk1 xkxk xk12x xkx xk1k(x)1
11、2,xxk,xk1x xx xk1kkk10,xx,xk1k152x xk x xk1 12,xxn1,xnn(x)xk1 xkxk xk10,xxn1,xn2 x x1(x x0),xx0,x10(x)x x010,xx0,x12 x xk1(x xk),xxk,xk1xk xk12 x xk1k(x)(x xk),xxk,xk1xk xk10,xx,xk1k12 x xn1(x xn),xxn,xn1n(x)x xnn10,xxn1,xnk,k,k=0,1,2,n,称为以节点 x0,x1,xn的分段三次 Hermite 插值基函数,对于给定 n 个插值点 x1x2xn和其相应函数值 f(x
12、k)和一阶函数值f(xk),k=0,1,2,n.显然,分段三次 Hermite 插值可以产生平滑变化的插值式,但它有一个明显的缺点,就是在每个界点处的函数斜率必须已知,而从实验中获得的数据,这个斜率就不存在。下面要介绍的三次样条插值可以解决这个问题,同时能得到插值式所期望的光滑度。3、三次样条插值三次样条插值1.样条函数样条函数在a,b上取 n+1 个插值结点 a=x0 x1xn=b 已知函数 f(x)在这 n+1 个点的函数值为 yk=f(xk)则在a,b上函数 y=f(x)的 m 次样条插值函数 S(x)满足:(1)S(x)在(a,b)上直到 m-1 阶导数连续;(2)S(xk)=yk,(
13、k=0 1n);(3)在区间xk,xk+1(k=0 1 n-1)上,S(x)是 m 次多项式。2.三次样条函数三次样条函数6在a,b上函数 y=f(x)的三次样条插值函数 S(x)满足:(1)在(a,b)上 0、1、2 阶导数连续,即:s(xk-0)=s(xk+0),s(xk-0)=s(xk+0)(k=0 1n-1)(2)S(xk)=yk(k=0,1,n);(3)在区间xk xk+1(k=0,1n-1)上 S(x)是三次多项式。3.三次样条函数的计算三次样条函数的计算由二阶导数连续,设 s(xk)=mk,(k=0,1,n),mk是未知待定的数。因 S(x)是分段三次多项式,则在每个区间xk x
14、k+1内,S(x)是分段一次多项式,记 hk=xk+1-xk则:s(xk)=xk1 xx xkx xx xkmkmk1k1kmkmk1xk1 xkxk1 xkhkhk将上式在区间xk xk+1上积分两次,并且由 S(xk)=yk S(xk+1)=yk+1,来确定两个积分常数。当 xxk xk+1时,(x xk1)3(x xk)3h2kx xk1h2kx xk,s(x)mkmk1(ykmk)(yk1mk1)6hk6hk6hk6hk利用 S(x)一阶导数连续的性质,对上式求导,得:(x xk1)2(x xk)2h1s(x)mkmk1k(mk1mk)(yk1 yk)2hk2hk6hk在上式中,令 x
15、=xk得:s(xk0)hkhy ykmk1kmkk163hk将上式中的 k 换成 k-1,得:s(x)在xk-1,xk上的表达式,将 x=xk代入,s(xk0)hkhy ykmk1kmkk1,63hk而 s(xk+0)=s(xk-0)联立上述两式,得到关于 m 的方程:hk1h hk1hy ykyk yk1mk1kmkkmk1k1,636hkhk1两边乘以6得:hkhk1hk1hky yy yk16mk12mkmk1(k1kk),hkhk1hkhk1hkhk1hkhk17上式中,等式左边含未知量 mk-1,mk,mk+1等式右边 yk-1,yk,yk+1是已知的,令khk1hk1k,khkhk
16、1hkhk1y ykyk yk1fxk,xk1 fxk1,xk6(k1)6 6 fxk1,xk,xk1hkhk1hkhk1hk1hkck则得:kmk-1+2mk+kmk+1=Ck(k=1 2n-1)。三次样条插值的整体光滑性有提高,应用广泛,但其误差估计较困难,而且它的求解代价很大,起精确度受端点条件影响很大。总结总结:插值是数值分析领域的一个主要部分,选择插值策略的第一步是了解应用的需要:你要在表格中查些什么是否需要反复计算近似值在条件有限的情况下,构造固定的阶数的插值多项式可能会是一种更简单的方法有解决方案;当要反复计算逼近值时,推荐用牛顿多项式插值形式。对表格数据的常规插值,推荐使用分段线性插值;如果插值的总体平滑很重要,应该考虑三次样条插值或三次 Hermite 插值;同时当表格数据构成函数的导数不存在时,推荐使用三次样条插值。参考文参考文1.(美)Gerald Recktenwald,数值方法和 MATLAB 实现与应用2.关冶,陆金甫 数值分析基础M 高等教育出版社 1995 版3.杨顶辉,谢金星 大学数学实验M 清华大学出版社 2005 版8