三次样条插值算法详解
1
样条函数的定义 定义4.1 设区间[a,b]上给定一个节点划分 a=x0<x1<……<xn-1<xn=b 如果存在正整数k使得[a,b]上的分段函数s(x)满足 如下两条: (1)在[a,b]上有直到k-1阶连续导数。 (2)在每个小区间[xi,xi+1]上是次数不大于k的多项式。 则称分段函数s(x)是以(2.6)为节点集的k次样条函数。
S ( xn )
6 4 2 ( yn yn1 ) mn 1 mn M n 2 hn 1 hn 1 hn1
19
稍加整理得
y1 y0 h0 2m0 m1 3 M 0 g0 h0 2 yn yn 1 hn1 mn1 2mn 3 M n gn hn 1 2
x xi
lim S ( x) S ( xi 0)
6 4 2 ( yi 1 yi ) mi mi 1 2 hi hi hi
6 2 4 lim S ( x) S ( xi 0) 2 ( yi yi 1 ) mi 1 mi x xi hi 1 hi 1 hi 1
联合基本方程组得一个n+1阶三对角方程组, 化成矩阵形式为:仍然是严格对角占优
2 1
2
1 2
1 3
2
2
2Байду номын сангаас
n 1
2 n 1 1 2
m0 g 0 m1 g 1 m2 g 2 mn 1 g n 1 m g n n
立即可得下式:
21
n m1 n mn1 2mn gn
其中:
h0 hn1 n , n 1 n h0 hn1 h0 hn1
y1 y0 yn yn1 g n 3 n n h h 0 n 1
联合基本方程得一个广义三对角或周期三对角方程组:
所谓的边界条件:
第一边界条件:由区间端点处的一阶导数给出即
( x0 ) m0 f ( x0 ), s3 ( xn ) mn f ( xn ), s3
6
第二边界条件:由区间端点处的二阶导数给出即
( x0 ) M 0 f ( x0 ), s3 ( xn ) M n f ( xn ), s3
2
三次样条插值函数的定义
如果函数 f ( x)在节点x0 , x1 ,, xn处的函数值为
f ( x j ) y j , j 0,1,, n
并且关于这个节点集的三次样条函数s(x)满足插值条 件:
S( x j ) y j , j 0,1,, n
则称这个三次样条函数s(x)为三次样条插值函数。
14
由于在内部节点处二阶导数连续条件:
S ( xi 0) S ( xi 0), i 1, 2,
,n 1
yi 1 yi yi yi 1 1 1 1 1 mi 1 2( )mi mi 1 3( ) 2 2 hi 1 hi 1 hi hi hi hi 1
三次样条插值
鉴于高次插值不收敛又不稳定的特点,低次插值既具有收敛 性又具有稳定性,因此低次值更具有实用价值,但是低次插 值的光滑性较差,比如分段线性插值多项式在插值区间中仅 具有连续性,在插值节点处有棱角,一阶导数不存在;分段 三次Hermite插值多项式在插值区间中仅具有一阶导数即一 阶光滑性但不具备二阶光滑性,不能满足某些实际应用比如 汽车、轮船、飞机等的外形中流线形设计。样条是在二十世 纪初期经常用于图样设计的一种富有弹性的细长条,多个样 条互相弯曲连接后沿其边缘画出的曲线就是三次样条曲线。 后来数学上对其进行了抽象,定义了m次样条函数,并成为 数值逼近的重要研究分枝,进一步扩大了样条函数的应用范 围。
为了确定三次样条插值函数的表达式 S(x), 我们采用待定系数法来求解,我们待定什么系数呢?
考虑到带一阶导数的分段三次Hermite插值多项式
xi xi 1 x x xi xi 1 x (i ) H3 ( x) yi 0 ( x ) y ( ) m h ( ) m h ( i 1 0 i i 1 i 1 i 1 hi hi hi hi )
16
第一类三次样条插值问题方程组 由于已知:
S ( x0 ) m0 S ( xn ) mn
基本方程组化为n-1阶方程组
2m1 1m2 g1 1 f0 m 2m m g k 2 , 3 , , n 2 k k k 1 k k k 1 n 1mn 2 2mn 1 gn 1 n 1 f n
S ( x j ) m j , j 0,1,, n
因为分段三次Hermite插值多项式已经至少是一阶连续 可导了,为了让它成为三次样条函数只需确定节点处 的一阶导数使这些节点处的二阶导数连续即可!
S ( xi 0) S ( xi 0),i 1,, n 1
xi xi 1 x x xi xi 1 x S ( x) yi 0 ( x ) y ( ) m h ( ) m h ( i 1 0 i i 1 i 1 i 1 hi hi hi hi )
特殊情况为自然边界条件: 由区间端点处的二阶导数恒为0给出即
( x0 ) M 0 0 s3 ( xn ) M n 0 s3
7
第三类又称周期边界条件: 由区间端点处的函数值或导数值满足周期条件给出
s3 ( x0 0) s3 ( xn 0) ( x0 0) s3 ( xn 0) s3 s( x 0) s( x 0) 3 n 3 0
3
三次样条插值函数的边界条件
如果S( x)是f ( x)的三次样条插值函数 , 则其必满足
插值条件: 连续性条件: 一阶导数连续条件: 二阶导数连续条件:
S( x j ) y j , j 0,1,, n
x x j
lim S ( x ) S ( x j ) y j , j 1, , n 1 lim S ( x ) S ( x j ) m j , j 1, , n 1 lim S ( x ) S ( x j ), j 1, , n 1
整理化简后得:
hi hi 1 mi 1 2mi mi 1 hi 1 hi hi 1 hi
i 1,, n 1
hi yi yi 1 hi 1 yi 1 yi 3( ) hi 1 hi hi 1 hi 1 hi hi
15
i mi 1 2mi i mi 1 gi , i 1, , n 1
4
x x j
x x j
(1)因为s(x)在每个小区间上是一个次小于三次的多 项式,故有四个未知系数; (2)因为s(x)有n分段,从而共有4n个未知系数! (3)但插值条件与样条条件仅给出4n-2个条件,无法 定出4n个未知系数,还差2个条件!这2个条件我们用 边界条件给出!
5
通常我们对插值多项式在两端点的状态加以要求也就是
这是一个严格对角占优的三对角方程组, 用追赶法可以求解!
18
第二类三次样条插值问题的方程组
由于已知:
S ( x0 ) M 0 S ( xn ) M n
M 0 M n 0时,称为自然边界条件
故得:
S ( x0 ) 6 4 2 ( y1 y m0 m1 M 0 0) 2 h0 h0 h0
x [ xi , xi 1 ], hi xi 1 xi , i 0,1,, n 1
( x) (2x 1)(x 1)2 ,1 ( x) x( x 1)2
13
对Si ( x)求二阶导数 , 并整理后得
6( xi xi 1 2 x) Si( x) ( yi 1 yi ) 3 hi 6 x 2 xi 4 xi 1 6 x 4 xi 2 xi 1 mi mi 1 2 2 hi hi
hi xi 1 xi , i 0,1,, n 1
(0) H 3 ( x) x0 x x1 (1) H 3 ( x) x1 x x2 H 3 ( x) H ( n1) ( x) x x x n 1 n 3
12
我们采用待定一阶导数的方法即设
化为矩阵形式
17
2 2
1
2
2
2
3
3
2
4
n 2
2
n 1
m1 g1 1m0 m g 2 2 m3 g3 n 2 mn 2 g n 2 g m 2 m n 1 n n1 n1
20
第三类样条插值问题的方程组
由于:
S ( x0 0) S ( xn 0) m0 mn S ( x0 0) S ( xn 0)
6 2 S ( x0 0) 2 ( y1 y0 ) (m1 2m0 ) h0 h0 6 2 S ( xn 0) 2 ( yn yn1 ) (mn1 2mn ) hn1 hn1
是满足如下数据的第一类边界样条插值问题解:
x y y’
0 0 1
1 0
2 0
3 0 0
9
样条函数的例子
(11x 3 26x 2 15x) 15 0 x 1 S ( x) (3x 3 16x 2 27x 14) 15 1 x 2 ( x 3 8 x 2 21x 18) 15 2 x3
2 1 n