自编的三次样条插值matlab程序(含多种边界条件)
自编的三次样条插值matlab程序(含多种边界条件)
数值计算第二次大作业
——验证三次样条函数插值是否有几何不变性
(1)给定的插值条件如下:
i 0 1 2 3 4 5 6 7
Xi 8.125 8.4 9.0 9.485 9.6 9.959 10.17 10.2
Yi 0.0774 0.099 0.28 0.60 0.708 1.200 1.800 2.177
端点边界条件为第一类边界条件(给定一阶导数):
.Y' .
0.01087
.0.
'
Y .100
.7
.
三次样条函数的构造过程如下:
设
x1 .
x2 .
x3 .
xn.1 .xn 共
n个插值节点,则经过数据点
.
x1, y1 .
,.
x2, y2 .
,.,.xn , yn .
的三次样条
S .
x.
是一组三次多项式:
.S .........231111111112,,xabxxcxxdxxxxx.........,
.
.
23
.
.
.
a ..
x .
x .
c ..
x .
d .x .
x , x ..x , x ,
.S2 x 2 b22 .
2 x 2 .
22 .
23 .
.
(1.1)
.
.
.
S .x .
x .3, x ..x , x .
.
n.
.....nnnnnxabxxcxxd.............
n .
n.1 n.1
.
由节点处的连续性可知:
S .
x ..
y , S .
x ..
y ,i .1, 2, .n .1.
ii iii.1 i.1
.a .
yi , .1, 2, .n .1.
ii
.
.y y ......2321121121121bxxcxxdxx......., (1.2)
..
.
.
.y .
y .
b .
x .
x ..
c .x .
x .2 .
d .x .
x .3
.
nn.1 n.1 nn.1 n.1 nn.1 n.1 nn.1
由节点处的一阶与二阶光滑性可知:
Si
''""
11,iiiiiixSxSxS.....
..
.
.
..xi .
,i .1, 2, ., n.
.
2
''
0 .
S .x ..
S .x ..
b .
2c .x .
x ..
3d .x .
x ..
b
12 221121 121 2
.
..
.
2
''
(1.3)
.0 .
Sn.2 .
xn.1 ..
Sn.1 .
xn.1 ..
bn.2 .
2cn.2 .xn.1 .
xn.2 ..
3dn.2 .xn.1 .
xn.2 ..
bn.1
..
""
.0 .
S .
x ..
S .
x ..
2c .
6d .x .
x ..
2c
1222 1121 2
.
.
.
.
.0 .
Sn
""
211122nnnnxSxc........
..
..
6dn.2 .
xn.1 .
xn.2 ..
2cn.1
又设
cn .Sn
"
1..
xn .
2 ,记
..
x .
x , ..
y .
yi , .1, 2, ., n .1 ,则由(1.3)可得:
ii.1 ii i.1 i
c .
c
i.1 i
di .
, i .
1, 2, ., n .1. (1.4)
3.i
从(1.2)解得:
bi .
.i .
ci.i .
di.i
212iiiicc....
.
.
.
., i .1, 2, ., n .1. (1.5)
.i .i 3
将(1.4)与(1.5)代入(1.3)得:
.
..2 .1 .
..c .
2..1 ..
.
2 ..2c3 .
3
11 2 c ...,
...2 .1 .
.
..
(1.6)
.
..n.1 .n.2 .
..n.2cn.2 .
2..n.2 ..n.1 .cn.1 ..n.1cn .
3...
.
.
..n.1 .n.2 .
增加两个端点边界条件,因为
2c ""
1111,2nnSxcS....
.
.
xn .
,故有:
1.第零类边界条件:自然样条,
c1 .
0, cn .
0.
2.第一类边界条件:给定端点一阶导数,设
S ''
1111,nxvS...
..
xn ..vn ,则有:
.2.c ..c .
3..
..
v .
.
.
..
.
.n .
11121111111123nnnnnn