样条插值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hj 6
M j
hj 3
M j 1
y j 1 y j hj
,
h j 1 6
M j 1 M j
j
h j 1 3 hj 6
M j
y j y j 1 h j 1 y j y j 1 h j 1
. y j 1 y j hj
h j 1 h j 3
j 1
M j 1
j 1
, j 1, , n 1,
jM
其中
j
2M
jM
d j, ,d
j
j 1, , n 1, 6 f [ x j 1 , x j , x j 1 ].
h j 1 h j 1 h j
, j
hj h j 1 h j
j1
s ( x )
( x j 1 x ) 2h j
3
2
M
j
(x x j) 2h j
3
2
M
j 1
c1 ,
s( x)
s(x j )
( x j 1 x ) 6h j
M
j
(x x j) 6h j
M
j 1
c1 x c 2 ,
1 2 1 2 h j M j c1 x j c 2 y j , s ( x j 1 ) h j M j 1 c1 x j 1 c 2 y j 1 , 6 6
(1)S(xj)=yj(j=0,1,…,n); (2)在每小区间[xj,xj+1](j=0,1,…,n-1)上S (x)是三次多项式,记 为Sj (x);
(3)S (x)在[a, b]上二阶连续可微。
则S (x)称为f (x)的三次样条插值函数,它通过上述给定点,为二 阶连续可导的分段三次多项式函数。
2.8
样条插值
分段插值具有良好的稳定性和收敛性,有效地避免了龙格现象 的发生,且算法简单,因此在实际应用中占有重要地位,但是,其 光滑性较差。前面所介绍的方法只保证函数连续或其一阶导数连续, 满足不了许多工程技术提出的对插值函数的光滑性有较高要求的计 算问题。 例如,船体、飞机的机翼外形,内燃机的进、排气门的凸轮 曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有 连续的曲率,即二阶导数连续。对于分段插值,要增加光滑度, 就要采用更高阶的导数值,而这一点实际应用中往往是很难提供 的。为解决这一类问题,导致产生了样条插值。 所谓样条(Spline)本来是工程设计中使用的一种绘图工具, 它是一种富有弹性的细长木条,在飞机或轮船制造过程中,被用于 描绘光滑的外形曲线。
二、三次样条插值函数的建立
求三次样条插值函数常 用三弯矩法和三转角法 .
三转角法:假定
s ( x j ) m j ( j 0 , , n ) , 根据分段三次
n
埃尔米特插值多项式,
s ( x ) [ f j j ( x ) m j j ( x ) ],
j0
由插值条件
在第一边界条件下: h0 h0 y1 y 0 s ( x 0 0 ) M 0 M1 f 0 3 6 h0
2M 0 M 1 6 h0 ( y1 y 0 h0 f 0 ) : d 0
M n 1 2 M n
6 h n 1
( f n
y n y n 1 h n 1
c1
y j 1 y j hj
1 6
h j ( M j 1 M j ), c 2
3
y j x j 1 y j 1 x j hj
j1
1 6
h j ( x j 1 M j x j M j 1 ).
s( x )
( x j1 x ) 6hj (yj
因此联立可解得:
从而得到问题的解为:
1 3 3 2 x [ 1, 0 ] x x , 2 2 S (x) 1 x 3 3 x 2 , x [ 0 ,1] 2 2
这种解法称为待定系数法,当n较大时,由于要解 4n阶的线性方程组,工作量太大,因此,一般不采用待 定系数法,而考虑另外的较简单的方法,即取节点上的 导数或二阶导数值为参数,来导出三次样条插值函数的 表达式。
1
2
2
2
n1
n
d1 M2 d2 , n1 M n1 d n1 2 M n dn
1 M 1
) : d n
2 1
1 2
1
2 1
n1
M 0 d0 M d 1 1 , d n1 M n1 n1 2 M n dn
, 连续性条件和边界条件
,可得关于 数.
m j的三
对角方程组,求出
三弯矩法:令
则 s ( x )
m j,得到三次样条插值函
s ( x j ) M j , j 0 , , n , h j x j 1 x j .
x j1 x hj Mj x xj hj M , x [ x j , x j 1 ].
显然,按此定义,折线是一次样条函数。而用“样条”绘出的 图形为三次样条函数曲线,也是最常用的样条函数。那么,确定一 个三次样条函数需要多少个条件呢?由上述样条函数定义(1)中 知,S(x)在每个小区间[xi,xi+1]上是一个三次多项式,因此需要确定4 个待定常数,一共有n个小区间,故应确定4n个参数。由定义中条 件(2),S (x)应在n1个内点上具有二阶连续导数,即应满足条件:
在第三边界条件下:注
意 x 0 x n,就有 M Байду номын сангаас n M 1 d n , h0 h n 1 h0
M n,并且
nM
其中 n
n 1
2M
n
h n 1 h n 1 h0
2 2 n
, n
, d n 6 f [ x n 1 , x n , x1 ].
在第二边界条件下:
2 2
M
0
f 0, M
n
f n.
1 f 0 d2 , d n2 n 1 f n
0
1
2
2
2
n2
n1
M 1 d1 M2 n2 M n2 2 M n1 d n1
M j
2
(x xj) 6hj
3
M
M jh j 6
2
)
x j1 x hj
( y j1
2
M
hj j1 6
2
)
x xj hj
,
s ( x )
( x j 1 x ) 2h j
M j
(x x j ) 2h j
M j 1
y j 1 y j hj
M j 1 M j 6
S ( xi 0) S ( xi 0) S ( x i 0 ) S ( x i 0 ) S ( x 0 ) S ( x 0 ) i i
i 1, 2 , , n 1
共有3(n1)个条件。因此,要确定一个三次样条函数,还需要另 增加4n3(n1) = n+3 个条件。 利用样条函数进行插值,即取插值函数为样条函数,称为样条 插值。例如 分段线性插值是一次样条插值。 已知函数y = f (x)在区间[a, b]上的n +1个节点a = x0<x1<… < xn = b上的值yj=f (xj)(j=0,1,…,n),求插值函数S (x)使其满足:
(3)如果f (x)是以b a为周期的周期函数,则S (x)也是应具有同样 周期 的周期函数,在端点处应满足S (a+0) = S (b0),S (a+0) = S (b 0) .
例 已知函数f (x)在三个点处的值为f (1)=1, f (0) = 0,f (1)=1,在区
间[1,1]上,求f (x)在自然边界条件下的三次样条插值多项式。
使用时,用压铁将其固定在一些给定的型值点上,在其它地 方任其自然弯曲,并稍作调整,使样条具有满意的形状(各段接 口处呈光滑状),然后沿样条画出曲线,称为样条曲线,它实际 上是由分段三次曲线拼接而成,在连接点即型值点上,不仅函数 自身是连续的,而且它的一阶和二阶导数也是连续的。由此抽象 出数学模型称为样条函数。 给定区间[a, b]的一个划分a = x0 < x1<…<xn = b,如果函数S (x)满足 (1)在每个小区[xi,xi+1](i=0,1,…,n-1) 上S (x)是m次多项式; (2)S (x)在[a, b]上具有m1阶连续导数。 则称S(x)为关于上述划分的m次样条函数。
解:这里 n 2,区间 [ 1,1]分为 [ 1,], ,]两个子区间 0 [0 1 S (x) a x 3 b x 2 c x d , x [ 1, 0 ] 0 0 0 0 0 并设: S ( x ) 3 2 S 1 ( x ) a 1 x b1 x c 1 x d 1 , x [ 0 ,1] S 0 ( 1 ) 1, S 0 ( 0 ) 0 : S 1 ( 0 ) 0 , S 1 (1) 1 a 0 b0 c 0 1 d 0 0 可得: d1 0 a b c 1 1 1 1
由插值和函数连续条件
再由内节点处一、二阶
导数的连续条件:
S 0 (0 ) S1 (0) c 0 c1 S 0 ( 0 ) S 1( 0 ) b 0 b1
而由自然边界条件:
S 0 ( 1) 0 6 a 0 2b0 0 S 1(1) 0 6 a 1 2 b1 0 a 0 , a 1 , b 0 , b1 : a 0 a 1 1 2 , b 0 b1 3 2 , C 0 C1 0
由定义,这里增加了n +1个插值条件,要确定S (x)还需要补 充两个条件。通常会根据问题的具体情况。在区间的两个端点处 给出条件,称为边界条件。常用的边界条件有以下三种: (1)给定两端点处的导数值S (a) = y 0,S (b) = y n, 特别地,当y 0 = y n = 0时,样条曲线在端点处呈水平状态。 (2)给定两端点处的二阶导数S (a) = y 0,S (b) = y n, 特别地,当y 0 = y n = 0时,称为自然边界条件。
hj
为了求 M 0 , , M n , 要用导数连续条件
s ( x j 0 ) hj 3 M j hj 6 M j 1 y j 1 y j hj
: s ( x j 0) s ( x j 0)
,
s ( x j 1 0 ) s ( x j 0 ) h j 1 6 M j 1