三次样条插值函数
高次插值函数的计算量大,有剧烈振荡,且数值稳定性差;在分段插值中,分段线性插值在分
段点上仅连续而不可导,分段三次埃尔米特插值有连续的一阶导数,如此光滑程度常不能满足物理问题的需要,样条函数可以同时解决这两个问题,使插值函数既是低阶分段函数,又
是光滑的函数,并且只需在区间端点提供某些导数信息。
5.6.1三次样条函数
定义 设在区间[a,b]上取 n+1
个节点
a= =b
函数y=f(x)在各个节点处的函数值为 =f(
)(i=0,1,…,n),若S(x)满足:
(1) S( )= ,i=0,1,…,n ;
(2) 在区间[a,b]上,S(x)具有连续的二阶导数;
(3) 在区间[ ](i=0,1,…,n-1)上,S(x)
是x的三次多项式;
称S(x) 是函数y=f(x)在上[a,b]上的三次样条插
S′( +0)=S′(
-0), (5)
S″( +0)=S″( -0)
此时 ,这样确定的样条函数S(x)称为周期样条函数。
5.6.2三次样条函数的计算
1用节点处的二阶导数表示的三次样条函数——三弯矩方程
由于S(x)的二阶导数连续,设S(x)在节点 的二阶导数为 ,即
S″( )= ,i=0,1,…,n,
是未知、待定的数。因S(x)是分段三次多项式,则S″(x)是分段一次多项式,且在每个 区间[ ]上,S″(x)可表示为
记 = - ,则
将上式在区间[ ]上积分两次,并且由S( )= ,S( ) =
来确定两个积分常数,可得当x∈[ ]时,
S(x)=
(5.6.6)
对上式求导得:
S′(x)= (7)
利用S(x)一阶导数连续的性质,在上式中令x= ,得:
将式(7)中的i换成i-1,得S′(x)在[ ]上的表达式
S′(x)=
用x= 代入,得:
利用S′( -0)=S′( +0)可得:
两边乘以 ,得:
i=1,2,…,n-1 (5.6.8)
其中
(9)
这是含有n+1个未知量 共有n-1个方程组成的线性方程组,欲确定该方
程组的解,尚缺2个方程。因此求三次样条函数还要2个附加条件。
常见的问题有下面两种提法:
①第一类问题 附加条件①,即给出边界端点的一阶导数值:S′( )= ,S′( 。
利用前面已推导的公式,当x∈[ ]时,
S′(x)=
取i=0,x= ,得:
=
取i=n-1,x= ,得:
移项,得:
其中 与式(8)联立得一n+1元线性方程组:
(10)
其系数矩阵是严格对角占优的三对角矩阵:
可以用追赶法解出
(i=0,1,…,n),将其代入式(6),即得到三次样条函数的分段表达式。
②第二类问题 附加条件②,即给出边界端点的二阶导数值:S″( ) = ,S″( )= ,代入式(8)得一n-1元线性方程组:
(11)
其系数矩阵为
这是一个三对角矩阵,由于 ,因而它是严格对角占优的。原方程组
是个三对角方程组,可以用追赶法解出 ,代入式(6),即得到三次样条函数的分段表达式。
2用节点处的一阶导数表示的三次样条函数——三转角方程
由于S(x)的一阶导数连续,设S(x)在节点 处的一阶导数值为 ,即
S′( )= ,i=0,1,…,n,
是未知、待定的数。因S(x)是分段三次多项式,则在每个区间[ ]
上是三次多项式,且满足
S( )= ,S( )= ,S′( )= ,S′( )= ,
故S(x)是[ , ]上的分段三次埃尔米特插值多项式,当x∈[ ]时
S(x)= ( ) + ( ) +
(x- ) + (x- ) (i=0,1,…,n-1)
(3)
或写为
S(x)= +
将上式在区间[ ]上求导两次,可得当x∈[ ]时,
S′(x)= +
和
S″(x) =
+
利用S(x)二阶导数连续的性质, 在上式 中令x= ,得:
S″( +0)=
将上式中的i换成i-1 ,得S″(x)在[ ]上的表达式
S″(x) == +
用x= 代入,得:
S″( -0)=
利用S″( -0)=S″( +0)可得:
两边乘以 ,得:
(13)
其中
(14)
这是含有n+1个未知 量
共有n-1个方程组成的线性方程组,欲确定该方程组的解,尚缺2个
方程。因此,求三次样条函数还要2个附加条件。有关情形与节点处的二阶导数表示的三次样条函数类似,叙述如下:
①第一类问题 附加条件①,即给出边界端点的一阶导数值:
时,则方程组为:
(15)
②第二类问题 附加条件②,即给出边界端点的二阶导数值:S″( ) =
,
S″( )= , 时,利用前面己推导的公式,当x∈[ ]时,
S″(x) = +
取i=0,x= ,得:
取i=n-1,x= ,得
移项,得:
其中g0=3f[x0,x1]-〖SX()h0〖〗2〖SX〗〗M0,gn=3f[x
n-1,xn]+〖SX()hn-1〖〗2〖SX〗〗Mn.与式(13)联立可以建立如下方程组 :
(16)
两种情形的系数矩阵均为严格对角占优的三 对角矩阵,可
以用追赶法求解,从而得到三次样条函数的分段表达式。
例1 已知f(x)的函数值为
0
1
2
3
0
0
0
0
试分别求函数f(x)满足下列边界条件的三次样条插值函数:
(1) S′(0)=1,S′(3)=0;
(2) S″(0)=1,S″(3)=0.
解, ,i=1,2.
(1)边界条件为 =0,用式(15)求解简单。由式(14)计算得
〖JZ〗f[0,1]=f[1,2]=f[2,3]=0, =0
代入式(15)得方程组
解得
利用公式
S(x)= +
i=0,1,2
并注意到边界条件 =0,求得三次样条函数如下:
s(x)=
(2)边界条件为 ,用式(11)计算简单。由
(i=1,2),
得
=6f[0,1,2]=6/(1+2)[(0-0)/0-(0-0)/1]=0
=6f[1,2,3]=6/(1+1)[(0-0)/1-(0-0)/0]=0
代入式(11)得方程组
解得
S(x)= +
i=0,1,2
并注意到 求得三次样条函数如下:
s(x)=