第五节 样条插值
问题的背景 高次插值函数的计算量大, 有剧烈振荡, 数值稳定性差;而分段线性插值在分段点上仅连续而不光滑(导数不连续)。样条函数可以同时解决这两个问题, 使插值函数既是低阶分段函数,又是光滑的函数。
1. 样条函数
在[a,b]上取n+1个插值结点a=x0(3) 在区间[xk ,xk+1 ](k=0,1,…,n-1)上,S(x)是m次多项式。2. 三次样条函数
在[a,b]上函数y=f(x)的三次样条插值函数S(x)满足: (1) 在(a,b)上0、1、2阶导数连续; 即:
s'(xk-0)=s'(xk+0),s″(xk-0)=s″(xk+0) ,(k=0,1,…,n-1)
(2) S(xk)=yk ,(k=0,1,…,n) ;
(3) 在区间[xk ,xk+1 ](k=0,1,…,n-1)上,S(x)是三次多项式。
3. 三次样条函数的计算 由二阶导数连续, 设
是未知待定的数。因S(x)是分段三次多
项式, 则在每个区间[xk ,xk+1 ]内,S″(x)是分段一次多项式, 记hk=xk+1 -xk , 则:
将上式在区间[xk ,xk+1 ]上积分两次,并且由S(xk )=yk ,S(xk+1 )=yk+1 来确定两个积分常数。当x∈[xk ,xk+1 ]
时,
利用S(x)一阶导数连续的性质,对上式求导,得:
在上式中,令x=xk ,得:
'
将上式中的k换成k-1,得: s(x)在[xk-1 ,xk]上的表达式, 将x=xk 代入,
而s'(xk +0)=s'(xk-0), 联立上述两式, 得到关于m 的方程:
两边乘以 , 得:
上式中,等式左边含未知量mk-1 ,mk ,mk+1 ,等式右边yk-1 ,yk ,yk+1 是已知的,令
则得:
λkmk-1 +2mk +μk mk+1 = Ck ,(k=1,2,…,n-1).
这是含有n+1个未知量m0 ,m1 ,…,mn ,共有n-1个方程组成的线性方程组。欲确定方程的解,尚缺2个方程,因此求三次样条函数还要2个附加条件。
常用的问题有下面两种提法:
第一类问题:附加条件为s″(x0)=m0 ,s″(xn)=mn 。
则方程组为:
其系数矩阵为:
这是一个三对角矩阵,由于λk +μk =1<2 ,因而它是严格对角占优的。原方程组是个三对角方程组,可以用追赶法求解。
第二类问题:给出边界端点的一阶导数值: 利用前面已推导的公式:当x∈[xk ,xk+1 ]时,
取k=0,x=x0 ,得:
取k=n-1,x=xn ,得:
移项,得:
于是, 我们可以建立如下方程组:
其系数矩阵是严格对角占优的三对角矩阵:
从而可以解出m0 ,m1 ,…,mn , 解出后可以得到三次样条函数的分段表达式, 即当x∈[xk ,xk+1 ]时,
例 已知y=f(x)的函数值为:
m0=0,mn=0,求函数的三次样条插值。
解: h0=1,h1 =2,h2 =1
建立方程组:
解得:
当x∈[x0 ,x1 ]=[1,2]时,
从而得到函数的三次样条插值:
当x∈[x1,x2]=[2,4]时,
当x∈[x2,x3]=[4,5]时,
所以