您的当前位置:首页三次样条插值的MATLAB实现

三次样条插值的MATLAB实现

2021-08-31 来源:乌哈旅游
MATLAB程序设计期中考查

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

对插值区间a,b进行划分:ax0x1xnb,函数yfx在节点

xi上的值yifxii0,1,2,n,并且如果函数Sx在每个小区间xi,xi1上

是三次多项式,于a,b上有二阶连续导数,则称Sx是a,b上的三次样条函数,如果Sx在节点xi上还满足条件

i0,1,n Sxiyi 则称Sx为三次样条插值函数。

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

x x0 x1 …… xn y y0 y1 …… yn i0,1,n式,求一个分段三次多项式函数Sx满足插值条件Sxiyi 并在

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

记fx在节点xi处的值为fximi(i0,1,n)(这不是给定插值问题数表中的已知值)。在每个小区间xi,xi1利用三次Hermite插值公式,得三次插值公式:

Sxixyii1xyi1iximii1mi1,xxi,xi1。为了得到这个公式需要4n个条件:

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

1Sxm Sxm 连续有n1个条件,其中边界条件:○00nn2Sx Sx ○00n3SxSx SxSx ○304005n6n14yy Sx0Sx0 Sx0Sx0 ○0n0n0n0 , ij 其中:ixj ixj0 ixj0 且(i,j0,1)。

1, ij ixj0, ij ,mi为对应变量的一阶导数。其推导过程如下:

1, ij 为了确定mi的值,把Sx展开为:

Sxxxi12hi2xxihi3yixxi2hi2xi1xhi23yi1

+

xxi12xxihi2mixxi2xxi1himi1,

这里hixi1xi,对Sx连续求两次导,得:

Sx6x2xi4xi1hi2mi6x4xi2xi1hi2mi16xixi12xhi3yi1yi。于是

考虑Sx在节点xi处的右极限值,得: Sxi0426mimi12yi1yi。 hihihi 同理,在相邻小区间xi1,xi上可得Sx的表达式为:

Sx6x2xi14xihi12mi16x4xi12xihi12mi6xi1xi2xhi12yiyi1

及Sx在节点xi处的左极限值为:

Sxi0246yiyi1。mi1mi利用Sx二阶导数于节点xi处2hi1hi1hi1的连续性条件Sxi0Sxi0,这里i1,2,n1,有下式成立:

yi1yiyiyi1111111,用除等式两mi12mm3ii122hi1hihi1hihi1hi1hihi,边,并注意yifi yi1yifxi,xi1,上式可简记为: hi imi12miimi1gi i1,2,n1, 且ihihi1 i1i gi3ifxi1,xiifxi,xi1

hi1hihi1hi最后求得m1mn的线性方程组为:

2 1 0  0 0 1m1g1  mg2   0 0 02222   (**)   0 0 0   2 mgn1n1n1n1n 0 0  0 n 2mngn通过以上复杂的求解和迭代,就可以求解出插值函数的近似表达式。得出来的表达式就可以用MATLAB软件来求解。具体求解过程如下:

已知n对数据点x1,y1,x2,y2,x3,y3,xn,yn,,假设函数关系为

yfx,但解析式不确定,数据插值就是构造函数关系式ygx,使xii1,2,3,,n,满足关系gxifxi。

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

x 1 2 4 5 yfx 1 3 4 2

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

MATLAB软件来求区间1,5上间隔为0.5的各点的值。

求解过程如下:

因自然样条插值函数的边界条件为 Sx0Sxn0,

,i这里n3,故确定m0,m1,m2,m3的方程组形式形如上面的(**)式,其中系数i 和gi可按如下步骤进行:

hi: h0211, h142 h2541;

i: 1 h1h221, 2;

h0h13h1h23i: 111 , 212gi: g131fx1,x21fx0,x19;2132 ;37 g232fx2,x32fx1,x2;2h6; g03fx0,x10y02h6. g33fx2,x32y32将上述参数带入(**)式,得到以下方程组:

2 1 0 0 62m091 2 033m12  12m72 20 3m3230 1 260 

解得:

m0由公式

17759, m1, m2, m3. 8448Sxxxi12hi2xxihi3yixxi2hi2xi1xhi3yi1

+可知,

xxi12xxihi2mixxi2xxi1hi2mi1,

13227xxx1, x1,4884 Sx

3x345x2103x33, x4,5848由所求出的表达式可知区间1,5可分为1,44,5,对两个区间分别用MATLAB命令即可: 针对第一个区间:

127yx3x2x1; 其图像如下

8843.532.52y1.510.511.522.5x33.54

命令如下:

x=1:4;y=(-1/8)*x.^3+(2/8)*x.^2+(7/4)*x-1;xi=1:0.5:4; y1=interp1(x,y,xi,'spline') 其运行结果如下: y1 =

Columns 1 through 6

0.8750 1.7656 2.5000 2.9844 3.1250 2.8281

Column 7

2.0000 针对第二个区间: y

334521032xxx33 884

(资料素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

因篇幅问题不能全部显示,请点此查看更多更全内容