购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 样条插值

2.5.1 高阶插值的Runge现象

根据区间[a,b]上给出的节点可以得到函数f(x)的插值多项式,作为f(x)的近似函数,在插值节点处精确相等。增加节点,代数插值多项式次数增高,相应的点(节点)数增多,然而插值多项式逼近f(x)的精度并不随之增加。

例如函数 ,在[-5,5]上任意阶导数存在,但在[-5,5]上取n+1个等距节点 ,则其拉格朗日插值多项式

n→∞时,拉格朗日插值多项式是发散的,在某些点误差非常大,此现象称为龙格(Runge)现象,如图2.2所示(n=10)。

图 2.2 龙格现象

可见,次数太高的插值多项式并不能很好地逼近一个一般的函数。

2.5.2 分段低次插值

为了避免龙格现象的发生,人们常常采用分段函数进行分段插值。即将插值区间分成若干小区间,在每个小区间上运用插值法构造低次插值多项式。例如线性插值多项式和抛物线插值多项式等,前者称为分段线性插值,后者称为分段抛物线插值。

给定函数f(x)在[a,b]上n+1个互异节点a≤x 0 <x 1 <…<x n ≤b的函数值y i (i=0,1,…,n)。

若在每一小区间[x i -1 ,x i ]上作线性插值,即取

作为f(x)在[x i -1 ,x i ]上的近似表达式,则称φ 1 (x)为f(x)的分段线性插值函数。

可以证明,对于取值f(x i )=y i (i=0,1,…,n)的被插函数f(x),令h i =x i -=…x i -1 (i1,2,,n),并记 ,则有误差估计式

同样地,若在每一小区间[x i -1,x i +1 ](中间节点x i )上作抛物线插值,即取

作为f(x)在[x i -1 ,x i +1 ]上的近似表达式,则称φ 2 (x)为f(x)的分段抛物线插值函数。相应地有误差估计式

注: 分段插值不能保证各小段间的光滑性。

例2.9 设函数 ,x∈[-5,5],讨论由10等分时分段线性插值的误差限。

将区间[-5,5]分为10等分此时,h=1,又 ,所以 。于是

2.5.3 三次样条插值

代数插值多项式有很好的光滑性,但随节点增加反而精度降低,因为高阶差分误差传播大。分段低次插值算法简单,近似程度好,然而光滑性差。由于航空、造船等高精端工程设计的需要而发展起来的样条插值方法,既保留了分段低次插值的各种优点,又提高了插值函数的光滑性,在许多领域都有广泛的应用。

样条插值是用样条函数去逼近函数。

定义2.4 对区间[a,b]的一个划分Δ:a=x 0 <x 1 <…<x n -1<x n =b,函数S(x)满足:

1)S(x)在[x i ,x i +1 ],(i=0,1,…,n-1)上为k次多项式;

2)S(x)及其1,2,…,k-1阶导数在区间[a,b]连续。

则称S(x)为区间[a,b]上对应于划分Δ的k次多项式样条函数,x 0 ,x 1 ,…,x n 为样条节点。且若对于节点x i 上给定的函数值f(x i )=y i (i=0,1,…,n),有

则称S(x)为k次样条插值函数。

k=1时的样条插值函数就是分段线性插值,k=3时是使用较多的三次样条插值函数。

例2.10 已知函数

是以0,1,2为节点的三次样条函数,求系数b,c的值。

取x 0 =0,x 1 =1,x 2 =2,由定义知S(x)∈C 2 [0,2],即

S(x 1 -0)=S(x 1 +0),S′(x 1 -0)=S′(x 1 +0),S″(x 1 -0)=S″(x 1 +0)

于是由S(x)和S′(x)分别在x 1 =1处连续得

解得

b=-2,c=3

为求解三次样条插值函数,先介绍三次样条插值问题。设

其中S i (x)(i=1,…,n)为不超过三次的多项式。

三次样条插值函数S(x)在每个子区间[x i ,x i +1 ]上可用三次多项式的4个系数唯一确定,因此S(x)在[a,b]上有4n个待定参数。

由于S(x)∈C 2 [a,b],有

该条件给出了3(n-1)个约束。另外,插值条件

S(x i )=y i ,i=0,1,2,…,n

给出了n+1个约束。从而总共给出了4n-2个约束,与待定参数相比还少2个约束。为了确定S(x),在区间[a,b]的端点处补充两个条件,称为边界条件。常用的边界条件有下列3种。

①给定端点的一阶导数值

②给定端点的二阶导数值 ;特别地,对于S″(x 0 )=S″(x n )=0的边界条件称为自然边界条件;

③周期边界条件S(x 0 )=S(x n ),S′(x 0 )=S′(x n ),S″(x 0 )=S″(x n )。

下面仅介绍三次样条插值函数的具体构造方法。

(1)用节点处一阶导数表示三次样条插值函数

记S′(x j )=m j (j=0,1,…,n),则在区间[x j ,x j +1 ](j=0,1,…,n-1)上满足:

S(x j )=y j ,S(x j+ 1 )=y j+ 1,S′(x j )=m j ,S′(x j+ 1 )=m j+ 1 (j=0,1,…,n-1)

设h j =x j +1 -x j ,当x∈[x j ,x j +1 ]时,有

(j=0,1,…,n-1),其中p,q为待定系数。

因为

所以

解之得

于是

由二阶导数在内节点处连续S j″ (x j +0)=S″ j -1(x j -0),j=1,2,…,n-1可导出关于参数m j 的方程组

其中

注: 方程组中参数 已知时,称式(2.28)为三转角方程。

(2)用节点处二阶导数表示三次样条插值函数

当x∈[x j ,x j +1 ]时,直线 过(x j ,M j )和(x j +1 ,M j +1 )两点,从而有

对上式连续积分两次

根据插值条件S j (x j )=y j ,S j (x j +1 )=y j +1 确定出任意常数c 1 j ,c 2 j

于是

由上式知,只要求出所有的参数M j ,就可确定S j (x)。

对上式求导,并利用一阶导数的连续性: ,j=1,…,n-1得

则可得方程组

其中

方程组(2.31)称为三弯矩方程。它含有n+1个参数M 0 ,M 1 ,…,M n ,还需要利用前面的任一组边界条件才能完全确定所有参数。例如,给定边界条件

由式(2.30)可分别得方程

注: 若是第二种边界条件,则M 0 ,M n 是已知的。

例2.11 已知函数在节点处函数值

求满足边界条件y′(0)=1,y′(3)=0的三次样条插值函数。

方法1用一阶导数为参数的三转角方程

由于h j =1(j=0,1,2),计算得

因为m 0 =1,m 3 =0,所以得三转角方程

解得 。则三次样条插值函数为

方法2用二阶导数为参数的三弯矩方程

因为h j =1(j=0,1,2), ,λ j =1-μ j ,所以

又由 计算得

由式(2.31)得

由边界条件得

2M 0 +M 1 =6,M 2 +2M 3 =-78

于是得三弯矩方程

或用矩阵形式表示为

解得

则三次样条插值函数为

注: 本题是第1种边界条件,用三弯矩方程求解要复杂一些。

例2.12 已知数据表

求y=f(x)在[0,3]上的三次样条插值函数,并作图。

由于已知函数在端点的二阶导数值,因此用三弯矩方程求解相对简单一些。已知h i =1(i=)0,1,2,则 ,g 1 =-3,g 2 =3;从而由式(2.31)有

将M 0 =1,M 3 =0代入得

解得 。则三次样条插值函数为

图形如图2.3所示:

图 2.3 三次样条插值函数 CV+ht0SIWzQgrj7YtfMo9IbPUc8nXUZ1P2VSo4bFQnQVJvGFOL6n3JHHS2zxe5G5

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开