几种常用的插值方法 下载本文

内容发布更新时间 : 2024/5/5 11:37:06星期一 下面是文章的全部内容请认真阅读。

几种常用的插值方法

数学系 信息与计算科学1班 李平

指导老师:唐振先

摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite和spine插值和分段线性插值。

一.任意阶多项式插值:

1.用单项式基本插值公式进行多项式插值:

多项式插值是求通过几个已知数据点的那个n-1阶多项式,即Pn-1(X)=A1+A2X+…AnXn-1,它是一个单项式基本函数X0,X1…Xn-1的集合来定义多项式,由已知n个点(X,Y)构成的集合,可以使多项式通过没数据点,并为n个未知系数Ai写出n个方程,这n个方程组成的方程组的系数矩阵为Vandermonde矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L(=ix)

(x?x0)?(x?xi?1)(x?xi?1)?(x?xn),其中i=0,…

(xi?x0)?(xi?xi?1)(xi?xi?1)?(xi?xn)n.容易看出n次多项式Li(x)满足Li(x)=1,(i=j);Li(x)=0,(i≠j),其中i=0,1…n,令Li(x)=?yili(x)这就是拉格朗日插值多项式。与单项式基本

i?0n函数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构紧凑,在理论分析中很方便,但是,当插值节点增加、减少或其位置变化时全部插值函数均要随之变化,从而整个插值公式的结构也将发生变化,这在实际计算是非常不利的。

3.使用牛顿均差插值公式进行多项式进行插值:

首先,定义均差,f在xi,xj上的一阶均差f[xi,xj]?f(xj)?f(xi)xj?xi,其中(i≠j)。f在

xi,xj,xk的二阶均差f[xi,xj,xk]=

f[x0?xk?1]?f[xi?xk]。

x0?xkf[xi,xj]?f[xj,xk]xj?xk,k阶均

f[xi…xk]=

由此得出牛顿均值插值多项式的公式为Pn(x)=f[x0]+f[x0-x1](x-x0)+…+f[x0,

?xn](x-x0)…(x-xn-1)。实际计算中经常利用下表给出的均差表直接构造牛顿插值公式

, ,

xk x0 x1 x2 x3 … F(xi) F(x0) F(x1) F(x2) F(x3) … 一阶均差 F[x0,x1] F[x1,x2] F[x2,x3] … 二阶均差 F[x0,x1,x2] F[x1,x2,x3] … 三阶均差 F[x0,x1,x2,x3] … … …

凡是拉格朗日插值解决的问题牛顿插值多项式都可以解决,不仅如此,更重要的是牛顿均值克服了拉格朗日插值多项式的缺点,当需要提高近似值的精确度而增加结点时,它不必重新计算,只要在后面再计算一项均插即可,减少了计算量,不用计算全部系数,节约了大量人力,物力,财力。

增加插值多项式的阶数并不一定能增加插值的精度,据定义,插值式,F(x)可以与

结点(xi,yi),i=1,…,n处的实际函数匹配,但却不能保证支点之间求F(x),还能很好的逼近产生(xi,yi)数据的实际函数F(x)。例如,如果F(x)为一个已知的解析函数,而且定义F(x)的节点集合中数据点的数目可以增加(多项式F(x)的阶数也增加),但是,由于F(x)的起伏增加,那么插值式就可能在节点见振带,基于当实际函数F(x)平滑时,这种多项式摆动也可能发生,这种振荡不是由多项式摆动引起的,而是由多项式的项相加来求插值多项式时发生舍入误差造成的。有时多项式摆动可通过谨慎选择基础函数的取样来成为,但如果数据是由不容易重复实验取得的,就不能这么做了,这会司会用下面介绍分段插值法。

二、分段插值多项式

1、分段线性插值:

分段线性插值最简单的插值方案,只要将每个相邻的节点用直线接起来,如此形成的一条新的折线就是分段线性插值函数,记作In(xj)=yi而且In(x)在每个区间[xj

xj+1]上是线性函数(j=0,1…n-1) In(X)可以定义为In(xj)= 其他,l0(x)=0 lj(x)=

?yili(x)其中l0(x)=

i?0nx?x1,x?[x0,x1]

x0?x1x?xj?1xj?xj?1,x?[xj?1,xj];ln(x)=

x?xj?1xj?xj?1,x?[xj,xj?1];其他,lj(x)=0

ln(x)=

x?xn?1,x?[xn?1,xn];其他,ln(x)=0

xn?xn?1In(x j)具有很好的收敛性,即对于x∈[a,b]有:当n趋向于无穷大时,In(x)=g(x)成立。

用In(x)计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关,但n越大分段越多,插值误差就越小,但是,该方法折线在节点处显然不光滑,即In(X)在节点处导数不存在着影响它在需要光滑插值曲线的(如机械插值等领域中的应用)。

2分段三次Hermite插值

为清楚起见,先用三次Hermite插值的构造方法加以解释,三次Hermite插值的做