样条(Spline)函数

  • 格式:doc
  • 大小:437.65 KB
  • 文档页数:6

I、三次Spline插值函数的定义

给定区间],[ba上的一个分划,且

10xxa…bxn

和一组函数值0y,1y,2y,…,ny,如果)(x具有下列性质:

1 ],[)(2baCx;

2 在每个子区间)1](,[1nkxxkk上,)(x是一个三次多项式;

3 iiyx)(,i=0,1,…,n。(称为插值条件)

则称)(x是关于分划的分段三次样条函数,简称为Spline函数。

将)(x表示成如下分段形式:

],[),(],[),(],[),(],[),()(11212101nnnkkkxxxxsxxxxsxxxxsxxxxsx

其中)1)((nkxsk是一个三次多项式,且满足插值条件:

11)(kkkyxs,kkkyxs)(

为了得到)(xsk的具体表达式,根据],[)(2baCx可知,对每个内部结点)11(nkxk有:

)0()()()0(''''kkkkkkxxsxsx

)0()()()0(""""kkkkkkxxsxsx

下面利用上述条件导出)(xsk的表达式。

II、三次Spline插值函数的表示 设)10()('nkmxkk,,,,则kkkkkmxsxs)()('1'。利用分段Hermite插值公式得

)()()()()(1111xmxmxyxyxskkkkkkkkk (*)

其中)(xk和)(xk称为Hermite插值的基函数(在下面附录中将详细介绍),这里的kx一阶导数km是未知待定的。由上式不难看出,只要确定了各插值点的一阶导数,Spline插值函数)(x就相应确定了。对(*)两边同时求二阶导得:

)()()()()(""1""1"11xmxmxyxyxskkkkkkkkk

同理:

)()()()()("1""1""111xmxmxyxyxskkkkkkkkk

利用上面两式再结合二阶导连续的条件可得:

)()()()(""1""111kkkkkkkkxmxmxyxykkkk

)()()()("1""1"11kkkkkkkkxmxmxyxykkkk

利用)(xk和)(xk的性质(在附录中介绍)上式等价于:

)(3)(31)11(21121211111kkkkkkkkkkkyyhyyhmhmhhmhkk (**)

其中1kkkxxh,若令1kkkkhhh,111kkkkkhhh,则(**)可划为:

kkkkkkdmmm112, 121nk,,, (***)

其中kkkkkkkkkhyyhyyd11133, 121nk,,,

这里的(***)构成了关于1n个未知数nmmm,,10的方程组,但是此处只有1n个方程,要确定这些未知数的值,还需要再加两个条件,一般在],[ba的端点上各附加一个条件,称为边界条件,不同的边界条件对应着不同的边值问题,下面是常见的三种边界条件:

第一类边界条件:

'00')(yx, '')(nnyx

即是'00ym,'nnym。记00,'002yd,0n,'2nnyd。 第二类边界条件:

"00")(yx, "")(nnyx

如果0""0nyy,称对应的Spline函数为自然Spline函数。

即有:"00"10"00"10"00")()()()()(10101yxmxmxyxyxs

"""1""1")()()()()(11nnnnnnnnnnnnyxmxmxyxyxsnnn

化简之后为:

)6(32"0110110yhhyymm

)6(32"11nnnnnnnyhhyymm

记10,)6(3"011010yhhyyd,1n,)6(3"1nnnnnnyhhyyd。

第三类边界条件:

)()('0'nxx,)()("0"nxx

这类函数一般要求nyy0,它对应的Spline函数称为周期Spline函数。

针对第一类边界条件和第二类边界条件,他们构成的方程组有如下统一形式:

222212110nnnnmmmm110nndddd110

因为该系数矩阵为三对角阵,且严格对角占优,因此该方程组有唯一解,由此可见,第一、二类型的边值问题的Spline插值函数是存在唯一的,利用追赶法可求得km,这样就得到了)(xsk,从而确定了Spline插值函数)(x。

附录:

前面学过分段三次Hermite插值多项式)(x的表达式为:

],[),(],[),(],[),(],[),()(11212101nnnkkkxxxxsxxxxsxxxxsxxxxsx

其中211121111))(21())(21()(kkkkkkkkkkkkkkkxxxxxxxxyxxxxxxxxyxs

211'211'))(())((1kkkkkkkkxxxxxxyxxxxxxykk

3121321)(2)(3)(2)(3kkkkkkkkkkhxxhxxyhxxhxxy

kkkkkkkkkkhhxxhxxyhhxxhxxykk3121'32')()()()(1

其中1kkkxxh。

分段三次Hermite插值多项式)(x也可表示成以结点的函数值和导数值为系数、关于基函数)(xk和)(xk的线性组合:nkknkkkxyxyxk0'0)()()(

其中

][,0][)(2)(3)(10103112110xxxxxxhxxhxxx,,,

][,0][)(2)(3][)(2)(3)(11131121113121kkkkkkkkkkkkkkkxxxxxxhxxhxxxxxhxxhxxx,,,,,

1,21nk,,

][,0][)(2)(3)(113121nnnnnnnnnxxxxxxhxxhxxx,,,

][0][)()()(101013112110xxxxxxhhxxhxxx,,,,

],[0],[)()(],[)()()(111131121113121kkkkkkkkkkkkkkkkkxxxxxxhhxxhxxxxxhhxxhxxx,,,

1,21nk,,

],[0],[)()()(113121nnnnnnnnnnxxxxxxhhxxhxxx,

基函数)(xk和)(xk有如下性质:

1 ①、1)(1)(0kkkxx,

②、][0)(23][23)(01'11'kkkkkkxxxxhxxxhxkk,,,,

③、2"21"6)0(6)0(kkkkkkhxhx

211"21"6)0(6)0(kkkkkkhxhx

2 ①、][274)(0][0)(274111kkkkkkkkxxxhxxxxxh,,,,且0)()()(11kkkkkkxxx

②、0)()(1)(1)(311'1'''kkkkkkkxxxx;; ③、kkkkkkhxhx4)0(2)0("1"

11"1"2)0(4)0(kkkkkkhxhx

3 当][1kkxxx,时,1)()(1xxkk,1)()()(''1'xxhxkkkk

这些性质的证明只需要对相应的函数求导即可得出,我就不那个了……!

引入上述基函数以后,此时有:

)()()()()(1111xmxmxyxyxskkkkkkkkk,1,,21nk,

这正是上面定义样条函数是用到的式子。