You are on page 1of 8

§6 三次样条 /* Cubic Spline */

定义 设 a  x0  x1  ...  xn  b S ( x ) 。三次样条
 C 2 [a , b ]

函数 [ x i , x i 1 ] ,
且在每个S ( x i )  f ( x i ), ( i 上为三次多项式
 0, ... , n) /* cubic polynomial */ 。

若它同时还满足 ,
则称为 f 的三次样条插值函数
注:三次样条与分段 cubic spline interpolant */.
Hermite /*插值的根本区别在于 S(x)
自身光滑,不需要知道 f 的导数值(除了在 2 个端点可
能需要);而 Hermite 插值依赖于 f 在所有插值点的导数
值。
f(x) H(x)
S(x)
§6 Cubic Spline

 构造三次样条插值函数的三弯矩法
/* method of bending moment */

在 [ x j 1 , x j ] h j  x j  x j 对应力学中的梁弯矩,故名
1 , S( x)  S
[ j]
( x ) for x  [ x j 1 , x j ]
上,记
则 S[j]”(x) 为1 次多项式,需
2 个点的值确定之。
设 S[j]”(xj1) = Mj1 , S[j]”(xj) = Mj 对于 x [xj1, xj ] 可得到
对每个 j, 此为x 3次多项式 x x  x j 1
j
S ”(x) = M j 1 h
[j]  Mj
h j j

积分 2 次,可得 S[j]’(x) 和 S[j](x) :

( x  x ) 2
( x  x  ) 2

S[j]’(x) =  M j 1 j  M j 1 j 1
 Aj
利用已知 S
2h j 2h j
(xj1) = yj1 S
[j]

(xj) = yj
[j]
( x j  x) ( x  x j 1 )
3 3

S[j](x) = M j 1  Mj  Aj x  B j 可解
6hj 6hj
§6 Cubic Spline

yj  yj1 Mj  Mj1 M j 1 2 x j  x M j 2 x  x j 1
Aj   hj Aj x  Bj  ( y j 1  hj )  ( yj  hj )
hj 6 6 hj 6 hj
下面解决 Mj :利用 S’ 在 xj 的连续
性 ( x  x)
2
( x  x  )
2
Mj  Mj1
[xj1, xj ]: S ’(x) =  Mj1  Mj  f [x j1 , x j ] 
j j 1
[j] hj
2hj 2hj 6
( x  x)
2
( x  x )
2
Mj1  Mj
[xj , xj+1]: S ’(x) =  Mj

[j+1] j 1
 Mj1 j
 f [ x j , x j1 ]  hj1
2hj1 2hj1 6

利用 S[j]’(xj) = S[j+1]’(xj) ,合并关于 Mj1 、 Mj 、 Mj+1 的同类项,


6 f [ x j 1 , x j , x j  1 ]
h j 1 6
j    
并记 h j  h j 1 j  1  j g j ,h  h ( f [ x,j , x j1 ]  f [ x j 1 , x j ])
j j 1

, 整理后得到:
j M j  1  2 M j   j M j  1  g j
 M0 
 
 1 2 1    g 
1  j  n1     1 
   
 
即:有n+1 个未知数, 个      
n1     
 2  n 1     g n 1 
方程。  n 1
 
还需 2 个边界条件 /* boundary conditions */ M 
 n
§6 Cubic Spline
 第 1 类边条件 /* clamped boundary */ : S’(a) = y0’ , S’(b) =
yn ’ ( x  x)
2
( x  a)
2
M1  M0
[1] 
[a , x1 ]: S ’(x) = M0 1
 M1  f [ x0 , x1 ]  h1
2h1 2h1 6
类似地利用 [ xn1, b ] 2 M 0  M 1  6 ( f [ x 0 , x 1 ]  y0 ’ )  g 0
h1
上的 S ’(x) [n]
M n 1  2 M n  6 ( yn’  f [ x n 1 , x n ])  g n
hn
注 : P.42 、 P43 : hn-1—>
hn 第 2 类边条件: S”(a) = y ” = M , S”(b) = y ” =
0 0 n
Mn 这时:0  0 , g0  2 y0 ;  n  0 , gn  2 yn
特别地, M0 = Mn = 0 称为自由边界 /* free boundary */ ,对应
的样条函数称为自然样条 /* Natural Spline */ 。
 第 3 类边条件 /* periodic boundary */ :
2    M  g 
当 f 为周期函数时,
1 1 1 1
 2     
 2 2    
yn = y0 , S’(a+) = S’(b) 



  
 
    
M0 = Mn   n 1 2  n 1     
    
 n n 2   M n   g n 
§6 Cubic Spline

注:另有三转角法得到样条函数,即设 S[j]’(xj) = mj ,则
易知 [xj1, xj ] 上的 S[j](x) 就是 Hermite 函数。再利用
S” 的连续性,可导出关于 mj 的方程组,加上边界条
件即可解。
Cubic Spline 由 boundary conditions 唯一确定。
max hi
 收敛性:若f  C[a , b] min hi ,且
C 
一致 ,则
S(x)  f(x) as max hi  0
即 : 提高精度只须增加节点 , 而无须提高样条阶数。

 稳定性:只要边条件保证 | 0 |, | 0 |, | n |, |  n | < 2 ,
则方程组系数阵为 SDD 阵,保证数值稳定。
§6 Cubic Spline
例 . 已知数据表

xi 1 2 4 5
yi 1 3 4 2
求满足自然边界条件 S " (1)  S " ( 5)  0的三次样条函数
S ( x ), f ( 3并计算
) 的近似值。
解:作差商表

i xi yi f [ x i , x i 1 ] f [ x i , x i 1 , x i  2 ]
0 1 1
1 2 3 2
2 4 4 0 .5  0.5
3 5 2 2  0.83333
§6 Cubic Spline
由自然边界条件得,M 0  M 3  0, 故有
2 1   M 1  3
u    [ ]
 2 2   M 2   4.99998
其中
h2 2 h2 2
1    0.66666 u2    0.66666
h1  h2 1  2 h2  h3 2  1
解此方程组得
M 1  0.750001 M 2  0.249999
可以求得 3
(4  x ) ( x  2) 3
S ( x )  0.750001   2.249999 
12 12
4 x x2
 3.500001   5.499999 
2 2
在上式中,令 x  3 , 得
f ( 3)  S ( 3)  4.25000
HW: p.50 #15, #16
§6 Cubic Spline

Sketch of the Algorithm: Cubic Spline



计算  j ,  j , gj ; ②
计算 Mj ( 追赶法等 ) ;

找到 x 所在区间 ( 即找到相应的 j ) ;

由该区间上的 S[j](x) 算出 f(x) 的近似值。

插值法小结
 Lagrange : 给出 y0 … yn ,选基函数 li(x) ,其次数为
节点数 – 1 。
 Newton  Ln(x) ,只是形式不同;节点等距或渐增节点
时方便处理。
 Hermite : 带导数插值条件。
 Spline :分段低次 , 自身光滑 , f 的导数只在边界给出。

You might also like