《数值分析》14
主要内容:
样条插值的算例 三次样条的概念
用一阶导数表示的样条 三次样条的极性
例1. 飞机机翼剖面图 1.数据采集
2. 数据样条插值
X 0 -0.4552 -0.6913 -0.8640 -0.9689 -0.9996 Y 0 0.3285 0.3467 0.2716 0.1408 -0.0160
S=sqrt(diff(x).^2+diff(y).^2);
S=[0,S];Sk=cumsum(S);
sk=linspace(0,Sk(end),24);
xt=spline(Sk,x,sk);
yt=spline(Sk,y,sk);
样条插值的算例
1
样条插值的算例
例2:龙格函数的插值逼近
-5 0 5
-0.5 0 0.5 1
1
2) 1
( x x
f
-5 0 5
-0.5 0 0.5 1
7结点等距插值 7结点切比雪夫插值
7结点样条插值
7结点埃尔米特插值 -5 0 5
0 0.5 1
-5 0 5
0 0.5 1
2
三次样条的概念
定义 5.4: 给定区间[a , b]上的一个分划:
a = x
0 < x1 < … < xn= b
已知
f(x
j) = yj (j = 0,1,···,n), 如果
, ] [
), (
] ,
[ ),
(
] , [ ),
( )
(
1 2 1 2
1 0 1
n n
n x x x x
S
x x x
x S
x x x
x S x
S
满足: (1) S(x)在
[x
j, x
j+ 1]
上为三次多项式;(2)
S” (x)
在区间[a,b]
上连续; (3) S(xj) = y
j( j = 0,1,···,n).
则称
S(x)
为三次样条插值函数. 3用一阶导数表示的样条
当
x∈[x
j , xj+ 1] ( j= 0,1,…n-1 )时 Sj(x)= aj+ b
jx + c
jx
2 + djx
3插值条件
: S(x
j) = yj ( j = 0,1,···,n)连续性条件: S(xj
+0) =S(x
j-0)
( j = 1,···,n-1)S’(x
j+0) =S’(x
j-0)
( j = 1,···,n-1)S”(x
j+0) =S”(x
j-0)
( j = 1,···,n-1) 由样条定义,可建立方程(4n-2)个!!Why?
n个三次多项式(每个三次多项式是4个待定系数), 待定系数
共4n个!!
4
用一阶导数表示的样条
(1)自然边界条件
: S”(x
0)=0, S”(xn)=0例
5.7:
已知f(–1) = 1, f(0) = 0, f(1) = 1.验证下
面分段三次多项式是自然样条函数.(2)周期边界条件
: S’(x
0)=S’(xn), S”(x0)=S”(xn) (3)固定边界条件: S’(x
0)=f ’(x0), S’(xn)=f ’(xn)
] , [ ,
] , [ ) ,
(
1 2 0
3 2
1
0 2 1
3 2
1
2 3
2 3
x x
x
x x
x x S
证:显然
S ( 1 ) 1 S ( 1 ) 1 S ( 0 ) S ( 0 ) 0
5用一阶导数表示的样条
求导数得
] 1 , 0 [ ,
2 3 3
] 0 , 1 [ ,
2 3 3 )
(
2 2
x x x
x x x x
S
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
0 0.2 0.4 0.6 0.8 1
y= x2 y= S (x)
3 3, [0, 1] ] 0 , 1 [ ,
3 ) 3
( x x
x x x
S
显然
2
) 3 1
( S
2 ) 3
1
(
S S ( 0 ) S ( 0 ) 0 0
) 1 (
S S ( 1 ) 0 S ( 0 ) S ( 0 ) 3
所以,S(x)是满足插值条件且二
阶导函数连续的分段三次多项 式
6
用一阶导数表示的样条
分段Hermite插值公式导出的三次样条方法
已知函数表 x x0 x1 ··· xn f(x) y0 y1 ··· yn
设
f(x)
在各插值节点x
j 处的一阶导数为m
j(未知)
取
x
j+1 – xj = h,( j = 0,1,2,···,n).当x
∈[xj, xj+ 1]时,分段Hermite插值
2 1 2 1
1
2 1 2 1
1 1 2
2 1
j j j
j j j
j j j j
j j
h m x x x
x h m
x x x
x
h y x x
h x y x
h x x
h x x x
S
) )(
( )
)(
(
) )(
( )
)(
( )
(
7
用一阶导数表示的样条
由
S”(x)连续
:有等式: S”(xj+ 0)=S”(x
j– 0)
1 2
1( ) ( )( )
h x x x
x
x j j
j
1 2
2
1 )( )
( )
( h
x x
h x
x x j j
j
1 2
1( ) (1 2 )( )
h x x
h
x
x xj j
j
1 )2
)(
( )
( h
x x x
x
x j j
j
考虑
S”(x)
在区间[xj , xj+1]和[xj-1 , xj]上表达式.当
x∈[x
j , xj+1]时, S(x) 由基函数组合而成8
用一阶导数表示的样条
2 2
1 1 3
2 1 2
3
6 2 2
8 1
2 2 8 1
h h
h x x x
h x x
h h
h x x x
h x x
j j
x j x
j j
j
x j x
j j
j
] )
( ) (
[ ) (
] )
( ) (
[ ) (
h x h
x x
h x x
h x h
x x
h x x
j j
x x j
j j
j
x x j
j j
j
2 2
4
4 2
4
1 2 1 2
1 2 2
] )
( ) (
[ ) (
] )
( ) (
[ ) (
1 1
1 1
) (
) (
) (
) (
) 0 (
j j
j j
j j
j j
j j
j j
j
m x
m x
y x
y x
x S
9
用一阶导数表示的样条
1 2 1
2
2 4
6
0 6
j
j j jm
jm h y h
y h x h
S ( )
j j
j j
j
m
m h y h
y h x h
S ( 0 ) 6
2 1 6
2 2
1 4
同理,有
联立得:
) 3 (
4
1 1 11
j
j
j
jj
y y
m h m
m
( j=1, 2, ···, n-1 )
j j
j
j
m
m h y h
y h h
4 2
6
6
2 1
2
1
1 2 1
2
6 4 2
6
j j jm
jm h y h
y h h
10
用一阶导数表示的样条
自然样条的导数值满足:
] [ 1 0
1
0 3
2 y y
m h
m n1 2 n 3 [ yn yn1] m h
m
2 0 4
6 ) 6
0
(
0
2 0
2 1
0
1
m
m h y h
y h x h
S
4 0 2
6 ) 6
0
(
2 1
2
1
n n n nm
nm h y h
y h x h
S
设自然边界条件成立,即
) 3 (
4
1 1 11
j
j
j
jj
y y
m h m
m
( j=1, 2, ···, n-1 ) 11
用一阶导数表示的样条
MATLAB
样条命令:yi = spline(x, y, xi)
x=-5:5;y=1./(1+x.^2);
xi=-5:0.1:5;f=1./(1+xi.^2);
yi=spline(x,y,xi); error=max(abs(yi-f)) plot(x,y,'o',xi,f,xi,yi,'r')
error = 0.0220
-5 0 5
0 0.5 1
曲率比较:计算公式 2 3/2 ) ) (
1 (
|
|
y
K
y
12
三次样条的极性
样条插值函数的极性
设f(x)∈C2[a, b], 对于a = x0 < x1 < … < xn = b,有 f(xj)=yj(j=0,1,···,n).S(x)是满足S(xj)=yj(j=0,1,···,n) 的三次自然样条.则有
||S”(x)||≤||f”(x)||
ba
f x S x dx
x S
x
f ( ) ( ) ||
2[ ( ) ( )]
2 证明:||
ba b
a b
a
[ f ( x )]
2dx 2 f ( x ) S ( x ) dx [ S ( x )]
2dx
2
2
2 [ ( ) ( )] ( ) || ||
||
|| f
bf x S x S x dx S
a
13
ab[ f (x) S (x)]S (x)dx ab[ f ( x) S(x)]S (x)dx
n
j
x x
j f x S x jj
S
1 [ ( ) ( )] 1 0
所以 0 ||
f
S
||2 ||f
||2 ||S
||22
2
|| ||
||
|| S f
即
ab[ S ( x )]
2dx ab[ f ( x )]
2dx
样条函数S(x)在[a, b]上的总曲率最小
.
14
学到了什么?
样条插值的算例 三次样条的概念
用一阶导数表示的样条 三次样条的极性