三次样条插值的MATLAB实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB程序设计期中考查在许多问题中,通常根据实验、观测或经验得到的函数表或离散点上的信息,去研究分析函数的有关特性。其中插值法是一种最基本的方法,以下给出最基本的插值问题——三次样条插值的基本提法:对插值区间ba,进行划分:bxxxan10,函数xfy在节点ix上的值nixfyii,2,1,0,并且如果函数xS在每个小区间1,iixx上是三次多项式,于ba,上有二阶连续导数,则称xS是ba,上的三次样条函数,如果xS在节点ix上还满足条件则称xS为三次样条插值函数。三次样条插值问题提法:对ba,上给定的数表如下.0x1x……nx0y1y……ny求一个分段三次多项式函数xS满足插值条件niyxSii,1,0式,并在插值区间ba,上有二阶连续导数。这就需要推导三次样条插值公式:记xf在节点ix处的值为iimxf(ni,1,0)(这不是给定插值问题数表中的已知值)。在每个小区间1,iixx利用三次Hermite插值公式,得三次插值公式:1111iiiiiiiiimmxyxyxxS,1,iixxx。为了得到这个公式需要n4个条件:(1).非端点处的界点有n2个;(2).一阶导数连续有1n个条件;(3).二阶导数连续有1n个条件,其中边界条件:○1nnmxSmxS00其中:jijixji,1,00jix0jix且(1,0,ji)。jijixji,1,0,im为对应变量的一阶导数。其推导过程如下:为了确定im的值,把xS展开为:+,1212221iiiiiiiimhxxxxmhxxxx这里iiixxh1,对xS连续求两次导,得:iiiiiiiiiiiiiyyhxxxmhxxxmhxxxxS1311212126246426。于是考虑xS在节点ix处的右极限值,得:iiiiiiiiyyhmhmhxS1216240。同理,在相邻小区间iixx,1上可得xS的表达式为:及xS在节点ix处的左极限值为:1211116420iiiiiiiiyyhmhmhxS。利用xS二阶导数于节点ix处的连续性条件00iixSxS,这里1,2,1ni,有下式成立:211211111311121iiiiiiiiiiiiihyyhyymhmhhmh,用iihh111除等式两边,并注意11,,iiiiiiixxfhyyfy,上式可简记为:且11111,,31iiiiiiiiiiiiiiiixxfxxfghhhhhh最后求得nmm1的线性方程组为:nnnnnnnnggggmmmm1211211122112000200000020002(**)通过以上复杂的求解和迭代,就可以求解出插值函数的近似表达式。得出来的表达式就可以用MATLAB软件来求解。具体求解过程如下:已知n对数据点,,,,,,,,332211nnyxyxyxyx,假设函数关系为xfy,但解析式不确定,数据插值就是构造函数关系式xgy,使nixi,,3,2,1,满足关系iixfxg。例题:求满足下面函数表所给出的插值条件的三次自然样条函数。12451342分析:表中所列出的是函数对点,首先要把对应的插值函数求出来,再用MATLAB软件来求区间5,1上间隔为的各点的值。求解过程如下:因自然样条插值函数的边界条件为这里3n,故确定3210,,,mmmm的方程组形式形如上面的(**)式,其中系数ii,和ig可按如下步骤进行:将上述参数带入(**)式,得到以下方程组:解得:由公式+,1212221iiiiiiiimhxxxxmhxxxx可知,由所求出的表达式可知区间5,1可分为5,44,1,对两个区间分别用MATLAB命令即可:针对第一个区间:147828123xxxy;其图像如下命令如下:x=1:4;y=(-1/8)*x.^3+(2/8)*x.^2+(7/4)*x-1;xi=1::4;y1=interp1(x,y,xi,'spline')其运行结果如下:y1=Columns1through6Column7针对第二个区间:

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功