三次样条插值的MATLAB实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB 程序设计期中考查

在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法:

对插值区间[]b a ,进行划分:b x x x a n ≤<⋯⋯<<≤10,函数()x f y =在节点

i x 上的值()()n i x f y i i ⋯⋯==,2,1,0,并且如果函数()x S 在每个小区间[]1,+i i x x 上

是三次多项式,于[]b a ,上有二阶连续导数,则称()x S 是[]b a ,上的三次样条函数,如果()x S 在节点i x 上还满足条件

()()n i y x S i i ⋯⋯==,1,0

则称()x S 为三次样条插值函数。

三次样条插值问题提法:对[]b a ,上给定的数表如下.

求一个分段三次多项式函数()x S 满足插值条件()()n i y x S i i ⋯⋯==,1,0 式,并在

插值区间[]b a ,上有二阶连续导数。这就需要推导三次样条插值公式:

记()x f '在节点i x 处的值为()i i m x f ='(n i ⋯⋯=,1,0)(这不是给定插值问题数表中的已知值)。在每个小区间[]1,+i i x x 利用三次Hermite 插值公式,得三次插值公式:

()()()()1111+++++++=i i i i i i i i i m m x y x y x x S ββαα,[]1,+∈i i x x x 。为了得到这个公式需要n 4个条件:

(1).非端点处的界点有n 2个;(2).一阶导数连续有1-n 个条件;(3).二阶导数

连续有1-n 个条件,其中边界条件:○1()()n

n m x S m x S ='=' 00

○2()()αα=''=''n

x S x S 00 ○3()()()()1

6500403βααβαα=''+'=''+'n n x S x S x S x S

○4n y y =0 ()()()()000000-''=+''-'=+'n

n x S x S x S x S 其中:()⎩⎨⎧=≠=j i j i x j i ,1,0α ()0='j i x α ()0=j i x β 且(1,0,=j i )。

()⎩⎨

⎧=≠='j i j i x j i

,1,0β ,i m 为对应变量的一阶导数。其推导过程如下: 为了确定i m 的值,把()x S 展开为:

()()()[]

()()[]

13

123

2122+++-+-+

-+-=

i i

i i i i i

i i i y h x x h x x y h x x h x x x S

+

()()

()()

,12

122

21+++--+

--i i

i i i i

i i m h x x x x m h x x x x

这里i i i x x h -=+1,对()x S 连续求两次导,得:

()()

()i i i

i i i i

i i i i

i i y y h x x x m h x x x m h x x x x S --++

--+

--=

''+++++13

112

1

2

1

26246426。于是

考虑()x S ''在节点i x 处的右极限值,得: ()()i i i

i i i i i y y h m h m h x S -+--

=+''++1216

240。 同理,在相邻小区间[]i i x x ,1-上可得()x S ''的表达式为:

()()

()12

1

12

1

112

1

126246426----------++

--+

--=

''i i i i i i i i

i i i i

i y y h x x x m h x x x m h x x x x S

及()x S ''在节点i x 处的左极限值为:

()()12

1

1116

420-------+=

-''i i i i i i i i y y h m h m h x S 。利用()x S 二阶导数于节点i x 处的连续性条件()()00-''=+''i i x S x S ,这里1,2,1-⋯⋯=n i ,有下式成立:

⎪⎪⎭⎫ ⎝⎛-+-=+⎪⎪⎭⎫ ⎝⎛++--++---211211111311121i i i i

i i i i i i i i i h y y h y y m h m h h m h ,用i i h h 111+-除等式两边,并注意

[]11,,

++=-=i i i

i

i i i x x f h y y f y ,上式可简记为: (),1,2,1211-⋯⋯==+++-n i g m m m i i i i i i μλ 且[][]()1111

1,,31+----+=+=-=+=

i i i i i i i i

i i i i i i i i x x f x x f g h h h h h h μλλμλ

最后求得n m m ⋯⋯1的线性方程组为:

⎥⎥⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎢⎢⎣⎡⋯=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⋯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯----n n n n n n n n g g g g m m m m 1211211122112000200000020002 λμμλμλλμ (**) 通过以上复杂的求解和迭代,就可以求解出插值函数的近似表达式。得出来的表达式就可以用MATLAB 软件来求解。具体求解过程如下:

已知n 对数据点()()()(),,,,,,,,332211n n y x y x y x y x ⋯⋯,假设函数关系为

()x f y =,但解析式不确定,数据插值就是构造函数关系式()x g y =,使()n i x i ,,3,2,1⋯⋯=,满足关系()()i i x f x g =。

例题:求满足下面函数表所给出的插值条件的三次自然样条函数。

分析:表中所列出的是函数对点,首先要把对应的插值函数求出来,再用

MATLAB 软件来求区间[]5,1上间隔为0.5的各点的值。 求解过程如下:

因自然样条插值函数的边界条件为

相关文档
最新文档