回顾前面几节讲过的各种代数插值,它们有一个共同的弱点,那就是:它们都是相当刚性(stiff)的.也就是说,局部数据误差易向远处传播、放大.一、样条函数的背景§8样条函数插值/*SplineInterpolation*/njjjnxlxfxLxL0)()()()(以Lagrange插值为例,设数据真值被代之以含有误差的,令是基于精确数据的插值多项式,是基于近似数据的插值多项式,于是最终的插值误差是)(jxf)(jjxff)()(jjjxfxff)(xLn)(xLn)]()([)]()([)()(xLxLxLxfxLxfnnn这表明结点xj处的数据误差通过插值基函数放大和扩散.)(jxf)(xlj如果被插函数有奇点,甚至只要解析延拓到复平面有隐秘奇点出现,则当为高次多项式时,误差放大和扩散还将助长很可怕的强振荡!展示Runge现象的著名例子就清楚地描述了这种振荡(右图).)(xlj-4-2240.511.52n=10n=6n=2LagrangrInterpolation相同数据3次样条插值与Lagrangr插值效果比较CubicSplineInterpolation如果采用分段多项式插值,则由于插值基函数只是局部活跃,结点上的误差可以被控制在小的范围内,因而也带来了内在的高度稳定性.这是分段插值的一大优势!许多实际问题希望插值函数具有较高阶的整体光滑性.此时,高次Hermite插值或分段高次Hermite插值可以利用(注意:分段高次Lagrange插值和Newton插值等是做不到的,在插值结点上它们只能保证插值函数连续).于是高次插值不仅增添了数据准备和计算的困难,也将导致更大的误差.但高次Hermite插值在许多场合中看不中用!提高Hermite插值多项式的次数就要增加约束条件——给出插值结点处被插函数及其直到足够高阶导数之值.作为约束条件的所有数据都是通过观测得到的,而观测总难免有误差.数学里的样条(Spline)一词来源于它的直观几何背景:绘图员或板金工人常用弹性木条或金属条加压铁(构成样条!)来绘制或者放样成光顺曲线或者曲面.但它之所以成为数值分析的标志性成果之一并且在数学物理的广泛领域获得非常成功的应用,还在于它的明确的物理背景.还有许多应用不仅要求插值函数具有足够高阶的整体光滑性,还要求在某些结点处转折灵活.例如若干点处加载集中力的杆、梁或板弯曲.这就导致本节要讨论的样条函数(Spline)插值.(k次样条函数)设是区间[a,b]上的一个分划或分割,即称s(x)为定义在区间[a,b]上关于分划的一个k次样条函数,如果:节点xi处S的k阶导数间断,因而转折灵活bxxxxann110:二、一般K次样条(1)在每一区间[xi-1,xi]上是次数不超过k的多项式.(2)在区间[a,b]上是k-1次连续可微的.定义1为方便后面的讨论,将样条函数s(x)写成如下形式k次样条函数类记为]},[)(,1,,0],,[)(|)({),(11baCxsnixxPxsxskSkiikp],[)(),[)(),[)()(11211100nnnxxxxsxxxxsxxxxsxs一般二次多项式不是严格意义下的二次样条!00011112111,,,,,,,,.nnnnsxcxxxsxcxxxSxsxcxxx00001111121111,,,,,,,,.nnnnnsxaxbxxxsxaxbxxxSxsxaxbxxx根据上述定义,0次样条函数s(x)为分段常数,即阶梯函数,它可表为1次样条函数s(x)为分段线性函数,它可表为xfx0x1xnx0f1fnf••••••••••••问题的提法:给定数据表),,1,0(niiifxs)(构造三次样条函数满足插值条件)3,()(pSxs三、三次样条插值并且满足:构造方法:应具有如下形式)3,()(pSxs],[)(13iiixxCxs],[)(),[)(),[)()(11211100nnnxxxxsxxxxsxxxxsxs1,,2,1)()(1,,2,1)()(1,,2,1)()(111nixsxsnixsxsnixsxsiiiiiiiiiiii连续条件插值条件iifxs)(),,1,0(ni1,,2,1)()(1,,2,1)()(1,,2,1)()(111nixsxsnixsxsnixsxsiiiiiiiiiiii因s(x)是分段3次多项式,故在每个区间[xi,xi+1]上都是3次多项式,从而s(x)共须4n个独立条件确定.①s,s’和s’’在n-1个内结点连续,给出了3n-3个条件②插值条件给出了n+1个条件③还差2个条件,有多种给法.最常见的给法是:),,1,0(niiifxs)((ii)000)()(MxfxsnnnMxfxs)()((简支边界,导致三弯矩关系式,M关系式)特别地,M0=Mn=0(自然边界,三次自然样条)(i)000)()(mxfxsnnnmxfxs)()((固支边界,导致三转角关系式,m关系式).注意:上述①给出的3n-3个条件是问题本身隐含的,②和③共n+3个独立条件须提供,故n+1结点三次样插值问题只有n+3个自由度.(请与分段三次Hermite插值比较!)因为s(x)在[xi,xi+1]上是三次多项式,所以s’’(x)在[xi,xi+1]上是一次多项式,故有三次样条插值M关系式的构造令iiMxs)(),,1,0(niiiiixxMMxs11)(],[1iixxx于是由Taylor展示在32)(!3)()(!2)())(()()(iiiiiiixxxsxxxsxxxsxsxsxixi+1MiMi+1)(xs],[1iixxxs(x)在[xi,xi+1]上是三次多项式,展开式余项为03112)()(!3)(!2))((iiiiiiiiiixxxxMMxxMxxxsf一阶差商1ixx令因为s’(x)连续得2112111)(!3)(!2))((iiiiiiiiiiiixxMMxxMxxxsff解得))(6261()()()(1111iiiiiiiiixxMMxxffxs同理在[xi-1,xi]上讨论得))(6162()()()(1111iiiiiiiiixxMMxxffxs))(6261()()(1111iiiiiiiixxMMxxff))(6162()()(1111iiiiiiiixxMMxxff一阶差商1iiixxh记1iiiihhh11iiiihhh则111)2(61],[iiiiihMMxxfiiiiihMMxxf)2(61],[11即]),[],[(6)(2111111iiiiiiiiiiixxfxxfMhMhhMh两边同除以iiiiiiiihhxxxxxx11111得],,[621111iiiiiiiixxxfMMM)1,,1(ni1iiiihhh11iiiihhh第一类边界条件)()(00xfxs)()(nnxfxs令i=0得],,[6210010xxxfMM并令i=n得],,[6211nnnnnxxxfMM在))(6261()()()(1111iiiiiiiiixxMMxxffxs))(6261()(010101010xxMMxxffxs同理由))(6162()()()(1111iiiiiiiiixxMMxxffxs即有],,[6210010xxxfMM],,[6211nnnnnxxxfMM],,[621111iiiiiiiixxxfMMM)1,,1(ni解得Mi(i=0,1,…,n).000)()(MxfxsnnnMxfxs)()(01210211],,[62MxxxfMM],,[621111iiiiiiiixxxfMMMnnnnnnnnMxxxfMM11221],,[62)2,,2(ni第二类边界条件解得Mi(i=1,2,…,n-1).))(6261()()()(1111iiiiiiiiixxMMxxyyxs3112)()(!3)(!2))(()(iiiiiiiiiiixxxxMMxxMxxxsfxs)1,,1,0(ni],[1iixxx当],[)(),[)(),[)()(11211100nnnxxxxsxxxxsxxxxsxsx00.150.300.450.60f(x)10.978000.917430.831600.73529已知函数y=f(x)的数表如下表所示:已知求满足边界条件的三次样条函数s(x),并计算s(0.2)0)0(s64879.0)60.0(s例1计算差商表,由于是等距离节点4,3,2,115.01iiiixxh21,21111iiiiiiiihhhhhh由第二类边界条件得01234215.866670.520.55.142600.520.53.367980.520.51.3974010.26880nMMMMaM解解方程得将Mi代入下式08418.0,43716.0,13031.1,77757.1,04462.243210MMMMM))(6261()()()(1111iiiiiiiiixxMMxxyyxs3112)()(!3)(!2))(()(iiiiiiiiiiixxxxMMxxMxxxsfxs)1,,1,0(ni0.20[0.15,0.30]由于故得]60.0,45.0[,01461.107370.000059.157927.0]45.0,30.0[,99720.004228.025831.177017.0]30.0,15.0[,99858.002851.021242.171918.0]15.0,00.0[,00000.100000.002231.129672.0)(23232323xxxxxxxxxxxxxxxxxs99858.02.002851.02.021242.12.071918.0)20.0(23s96154.0小结(1)样条相对于其它分段多项式插值的主要优点是它保证了较高阶的整体光滑性.实践中,曲率间断就须仔细打量才能察觉,三次样条能保证二阶导数连续,三阶导数仅在结点间断,如此的光滑通常是足够的.三阶导数在结点间断还带来了转折灵活的特点.(2)样条插值计算是隐式的,需要形成并求解一个线性方程组,不如前面讲过的多项式插值计算简便.