分段线性插值与三次样条插值法

合集下载

几种常用的插值方法

几种常用的插值方法

几种常用的插值方法数学系 信息与计算科学1班 李平指导老师:唐振先摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。

本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。

关键词:任意阶多项式插值,分段多项式插值。

引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。

用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。

一.任意阶多项式插值:1.用单项式基本插值公式进行多项式插值:多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。

虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。

另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。

2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x )=011011()()()()()()()()i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------L L L L ,其中i=0,…n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中i=0,1…n ,令L i (x )=0()ni i i y l x =∑这就是拉格朗日插值多项式。

Matlab实验报告六(三次样条与分段线性插值)范文

Matlab实验报告六(三次样条与分段线性插值)范文
1.分析问题
本题是给出粗略等分点让你插入更多点用双线性插值法来作出更清晰的山区地貌图。
2.问题求解
x=0:400:2800;
y=0:400:2400;
z=[1430 1450 1470 1320 1280 1200 1080 940;
1450 1480 1500 1550 1510 1430 1300 1200;
2.分段线性插值与计算量与n无关;n越大,误差越小.
3.三次样条插值比分段线性插值更光滑。
4.‘linear’:分段线性插值;‘spline’:三次样条值。
【实验环境】
MatlabR2010b
二、实验内容
问题1对函数 ,x[-5,5],分别用分段线性插值和三次样条插值作插值(其中插值节点不少于20),并分别作出每种插值方法的误差曲线.
本次实验因为是我们课本没有的内容,心理上给了我很大的压力,幸好我们还能根据老师的课件以及例题去掌握这次实验所需要的各种插值法,但结果还好,两道题都做出来了。
plot(x,y,'*',x1,yl,'r',x1,y2,'b')
y0=1./(1+x1.^2);
y3=yl-y0;
y4=ys-y0;
holdon
plot(x1,y3,'y',x1,y4,'g')
3.结果
4误。
问题2山区地貌图在某山区(平面区域(0,2800)(0,2400)内,单位:米)测得一些地点的高程(单位:米)如表1,试作出该山区的地貌图.
1.分析问题
本题先取出少量的插值节点并作出图形,再用分段线性插值法和三次样条插值法做出更精确的图形,最后在作出误差曲线。

三次样条插值

三次样条插值

0)
s(xn 0) s(xn 0)
三弯矩插值法
x xi,
x i+1
s”(x) M i , M i+1
记Mi = s″(xi), f(xi)= yi ,考虑它在任一区间[xi, xi+1]上的形式. 根据三次样条的定义可知 , s(x)的二阶导数 s ″(x)在每一个子区
间[xi, xi+1] ( i=0,1,2,,n-1)上都是线性函数.
2 6
M
i
)(xi1
xi
)
(1)
同理在[xi1, xi ]上讨论得
s(xi )
yi xi
yi1 xi1
(
2 6
M
i
1 6 M i1)(xi
xi1)
(2)
因为s( x)连续,所以(1)(2)即
yi1 yi xi1 xi
1 ( 6 M i1
2 6
M i )(xi1
xi )
yi xi
yi1 xi1
(2) (n 1)内节点处连续及光滑性条件:
s(x s( x
j j
0) 0)
s(x j 0) s(x j 0)
j
1,2,...,n
1
s(x j 0) s(x j 0)
对于待定系数a j ,bj , c j .d j j 1,2,...n,即4n个未知系数,
而插值条件为4n 2个,还缺两个,因此须给出两个 条件称为边界条件,有以下三类:
——分段三次插值多项式
分段插值存在着一个缺点,就是会导致插值函数在子区间的端点 (衔接处)不光滑,即导数不连续。
实际应用中,如机翼设计、船体放样等往往要求有二阶光滑度, 即二阶连续导数。早期工程师制图时,把富有弹性的细长木条 (所谓样条SPLINE )用压铁固定在样点上,其它地方让其自 由弯曲,然后画下曲线(称为样条曲线),它实际上是由分段 多项式光滑连接而成,在样点上要求二阶连续可导。

计算方法大作业1 克服Runge现象

计算方法大作业1  克服Runge现象

x3
x2
x
1
S1 ( x)
-0.34685
0.2086
0.073964
0.038462
S2 (x)
S (xi 0 ) S x(i 0 )

S
'
(xi

0) S
xi' (
0 )i

S
'
'
x(i

0)S
xi' ' (
0)
1 ,n2, . . . , 1
(1)
这里共有了 3n-3 个条件,再加上条件(2)中的 n+1 个插值条件,共有 4n-2 个条件,
因此还需要 2 个方程才能确定 S (x) .通常可在区间[a, b]的端点 a x0,b xn 上各加一个边

dn1

1
2


Mn


dn

(6)
2 1


2
2
2
1 M1 d1

M2


d2




n 1
2
n
1


M
n
1

dn1
n
n 2 M n dn
由式(1)内点拼接条件,可得
i M i1 2M i i M i1 d j i 1, 2,..., n 1
(3) (4)
其中
i

hi 1 hi1
, hi

i

hi hi 1

数值计算方法( 三次样条插值)

数值计算方法( 三次样条插值)

u xj hj
分段三次Hermite插值算法
则 v A1 y j 1 A2 y j B1 f j1 B2 f j
算法: 1.输入x j , f j , f j (j 0,1,...,n); 2.计算插值 (1)输入插值点u; (2)对于j 1,2,...,n做 如果u x j 则计算A1 , A2 , B1 , B2 ; v A1 f j 1 A2 f j B1 f j1 B2 f j; 3.输出u , v。
三次样条插值
于是由Taylor展示有 s( x) s( xi ) s( xi )(x xi ) s( xi ) s( xi ) 2 ( x xi ) ( x xi )3 2! 3! M M Mi yi s( xi )(x x j ) i ( x xi ) 2 i 1 ( x xi )3 2! 3!( xi 1 xi )
2M 0 M 1 6 f [ x0 , x0 , x1 ]
三次样条插值
同理(2)式中令i n得 M n 1 2M n 6 f [ xn 1 , xn , xn ] 即有 2M 0 M 1 6 f [ x0 , x0 , x1 ] ) i M i 1 2M i i M i 1 6 f [ xi 1 , xi , xi 1 ] (i 1,2,...,n 1 M 2M 6 f [ x , x , x ] n n 1 n n n 1
三次样条插值
对于待定系数a j , b j , c j .d j j 1,2,...n,即4n个未知系数,
而插值条件为 n 2个,还缺两个,因此须 4 给出两个 条件称为边界条件,有 以下三类: 第一类 已知两端点的一阶导数 s( x0 ) f ( x0 ) m0 s( xn ) f ( xn ) mn

三次样条插值

三次样条插值

三次样条插值分段线性插值的优点:计算简单、稳定性好、收敛性有保证且易在计算机上实现缺点:它只能保证各小段曲线在连接点的连续性,却无法保证整条曲线的光滑性,这就不能满足某些工程技术的要求。

三次Hermit 插值优点:有较好的光滑性,缺点:要求节点的一阶导数已知。

从20世纪60年代开始,首先由于航空、造船等工程设计的需要而发展起来所谓样条(Spline)插值方法,既保留了分段低次插值多项式的各种优点,又提高了插值函数的光滑性。

今天,样条插值方法已成为数值逼近的一个极其重要的分支,在许多领域里得到越来越多广泛应用。

我们介绍应用最广的具二阶连续导数的三次样条插值函数。

一、三次样条插值函数的定义:给定区间],[b a 上的个节点b x x x a n =<<<= 10和这些点上的函数值),,1,0()(n i y x f i i == 若)(x S 满足: (1)),,2,1,0()(n i y x S i i ==;(2)在每个小区间],[b a 上至多是一个三次多项式; (3))(),(),(x S x S x S '''在],[b a 上连续。

则称)(x S 为函数)(x f 关于节点的n x x x ,,,10 三次样条插值函数。

二、边界问题的提出与类型单靠一个函数表是不能完全构造出一个三次样条插值函数。

我们分析一下其条件个数,条件(2)三次样条插值函数)(x S 是一个分段三次多项式,若用)(x S i 表示它在第i 个子区间],[1i i x x -上的表达式,则)(x S i 形如],[,)(1332210i i i i i i i x x x x a x a x a a x S -∈+++=其中有四个待定系数)3,2,1,0(=j a ij ,子区间共有n 个,所以)(x S 共有n 4个待定系数。

由条件(3))(),(),(x S x S x S '''在],[b a 上连续,即它们在各个子区间上的连接点110,,,-n x x x 上连续即可,共有)1(4-n 个条件,即⎪⎪⎩⎪⎪⎨⎧==-=+''=-''-=+'=-'-=+=-),2,1,0()()1,,2,1)(0()0()1,,2,1)(0()0()1,,2,1)(0()0(n i y x S n i x S x S n i x S x S n i x S x S i i i i i i i i 共有241)1(3-=++-n n n 个条件,未知量的个数是n 4个。

各种插值法的对比研究

各种插值法的对比研究

各种插值法的对比研究目录1.引言 (1)2.插值法的历史背景 (1)3.五种插值法的基本思想 (2)3.1拉格朗日插值 (2)3.2牛顿插值 (3)3.3埃尔米特插值 (3)3.4分段线性插值 (4)3.5三次样条插值 (5)4.五种插值法的对比研究 (5)4.1拉格朗日插值与牛顿插值的比较 (5)4.2多项式插值法与埃尔米特插值的比较 (6)4.3多项式插值法与分段线性插值的比较 (6)4.4 分段线性插值与样条插值的比较 (6)5.插值法在实际生活中的应用 (6)6.结束语 (6)致谢 (7)参考文献 (7)各种插值法的对比研究摘要:插值法是一种古老的数学方法,也是数值计算中的一个算法.插值法不仅是微分方程、数值积分、数值微分等计算方法的基础,而且在医学、通讯、精密机械加工等领域都涉及到了它.本文首先介绍了插值的背景以及常用的五种插值法的基本思想,然后通过拉格朗日插值与牛顿插值、多项式插值与埃尔米特插值、多项式插值与分段线性插值、分段线性插值和样条函数插值给出相应的算法与MATLAB 程序,根据已学的知识对五种插值方法与被插函数的逼近程度进行对比研究,找出不同方法间的联系与区别,分析出它们的优缺点,最后在此基础上进一步研究插值法的实际应用,以提高插值法的实用性,从而能让我们在以后的应用中看到一个问题,就知道哪种方法更适合于它,然后大大地快速的提高效率.关键词:多项式插值;样条函数插值;MATLAB 程序;应用1.引言在很多解题以及应用生活中,常常需要用数量关系来反映问题,但是有时没有办法通过数学语言准确地表达出来.已知有些变量之间存在一种函数关系,但没法用函数的表达式表示出来.比如,)(x f 在某个区间上[]b a ,是存在某种数量关系的,但是根据观察和测量或者实验只能得到有限个函数值,我们可以利用这几点来确定函数表达式.或者有一些函数表达式是已经知道的,但是它们的计算是十分繁琐复杂的,不容易发现它的本质,而且它的使用方法也比较局限.函数是表达数与数之间的联系,为了能很好地用数学语言表达出函数的关系,一般通过给定的数据构造一个函数)(x P ,这样既能反映函数)(x f 的特点,又方便计算,用)(x P 近似)(x f .通常选一个简单的函数)(x P ,而且=)(i x P )(i x f ()n i ,...,2,1,0=成立,这个时候的)(x P ,从要表达的函数规律来看,就是我们需要的插值函数[1].所用方法就是插值法,由于所选用的)(x P 的多样化,得到不同的插值法.2.插值法的历史背景插值法的历史源远流长,在很早的时候就涉及到了它.它是数值计算中一个古老的分支,它来源于生产实践.因为牛顿力学的物理理论知识在一千年前没有出现,所以我们的祖先没有办法用很准确的数学解析式来表达日月五星的运行规律.后来,古代的人们有着聪慧的头脑,想出了插值方法,然后发现了日月五星的运行规律.例如唐朝数学家张遂提出了插值法的概念以及不等距节点的插值,并将其应用在天文历法观测中.现代工业革命以后欧洲著名的数学家拉格朗日给出了拉格朗日插值法的概念以及应用.微积分产生后,插值法的基本理论和结果进一步得到改善.3.五种插值法的基本思想如果一个函数)(x f y =在区间[]b a ,上有定义,且已知在点b x x x a n ≤<<<≤...10上的值0y ,1y ,2y , ,n y ,若存在一简单函数)(x P ,使得成立,)(x P 为插值函数,点0x ,1x ,2x , ,n x 称为插值节点,插值节点的区间[]b a ,称为插值区间,求插值函数)(x P 的方法称为插值法.若)(x P 的多项式次数不超过n ,即有)(x P n n x a x a x a a ++++= (2210)3.1拉格朗日插值拉格朗日插值是n 次多项式插值,它是用构造插值基函数的办法来解决n 次多项式插值的问题.拉格朗日插值多项式可以表示为=)(x L n ∑=n k k k x ly 0)(,)(x l k 为插值基函数,表达式为=)(x l k ))...()()...(())...()()...((110110n k k k k k k n k k x x x x x x x x x x x x x x x x --------+-+-,n k ,,1,0 = 截断误差为)()()(x L x f x R n n -=,也是插值余项.关于插值余项,估计有以下定理[2]:设)(x f n 在[]b a ,上连续,)(1x f n +在()b a ,内存在,节点b x x x x a n≤<<<<≤ 210,)(x L n 是满足条件(1.4)的插值多项式,则对任何[]b a x ,∈,插值余项)()!1()()()()(1)1(x n f x L x f x R n n n n +++=-=ωξ 余项表达式的应用有它的局限性,一般只适合于)(x f 高阶导数存在的情况下.若设1)1()(max ++≤≤=n n b x a M x f ,则误差为)()!1()(11x w n M x R n n n +++≤.3.2牛顿插值牛顿插值的基本思想是对n 次插值多项式)(x P n 进行逐次生成,然后用插值条件求出)(x P n 系数[3].因此,提出了均差(即差商)的概念.设 称有函数)(x f ,1x ,2x ,3x , ,n x 是一系列不相等的点,则[]=k x x f ,000)()(x x x f x f k k --为函数)(x f 关于点0x ,2x 的一阶均差; []=k x x x f ,,10[]1100],[,x x x x f x x f k k -- 称为)(x f 的二阶均差; []=k x x x f ,...,,10[][]1110210,...,,,,...,,-----k k k k k x x x x x f x x x x f 为)(x f )的k 阶均差. 我们先求出1次多项式,2次多项式,然后类推出n 次多项式,构造出n 次代数插值多项式的另外一种表达形式—牛顿插值多项式=)(x P n +)(0x f []10,x x f +-)(0x x []210,,x x x f )(0x x -+-)(1x x … []n x x x x f ,...,,,210+)(0x x -))...((11---n x x x x ,=)(x R n []n x x x x x f ,...,,,,210)(0x x -))...((1n x x x x --, =)(x f +)(x P n )(x R n . )(x P n 为牛顿插值多项式,)(x R n 为余项.3.3埃尔米特插值有的时候解决函数)(x f 的问题,不仅要在某些点上知道函数值,而且已知在一些点上的导数值.那么这时插值函数)(x P ,它在某些点处的导数值和函数值与原表达式的值相等的.那么我们从几何这个方面来思考这个问题,求出插值多项式的曲线,不但通过已知点组,而且在这些点处与原曲线"相切"[4].(一)、泰勒插值定义 [][])(,lim ,0'0000x f x x f x x f x x ==→为一阶重节点均差;[][])(21,,lim ,,0''2100000201x f x x x f x x x f x x x x ==→→为二阶重节点均差; 则n 阶重节点均差为[][])(!1,,,lim ,,,0100000x f n x x x f x x x f n n x x i ==→ . 当0x x i →时,牛顿插值公式的极限为=)(x P n +)(0x f )(0'x f +-)(0x x ...!n x f n )(0)(nx x )(0-. 称为泰勒插值多项式.它满足条件=)(0)(x P k n )(0)(x f k ,),...,2,1,0(n k =(二)、两点三次埃尔米特插值若)(x f 在k x ,1+k x 的函数值为k y ,1+k y ,k k m x f =)(',11')(++=k k m x f ,我们可以构造出一个次数不超过3的多项式,)(3x H 为插值函数.设=)(3x H +k k y x a )(+++11)(k k y x a +k k m x )(β11)(++k k m x β,k a ,1+k a ,k β,1+k β为插值基函数.可得结果 =)(3x H 2111))(21(+++----+k k k k k k x x x x x x x x k y 2111))(21(kk k k k k x x x x x x x x ----+++++++1k y )(k x x -+--++k k k k m x x x x 211)(121)(++--k k k k m x x x x , =)(3x R 2124)())((41+--k k x x x x f ξ!,),(1+∈k k x x ξ. 3.4分段线性插值分段线性插值:一般描述,如给定[]上b a ,1+n 个节点b x x x x a n =<<<<= 210和相应的函数值)(i f f i =),...,2,1,0(n i =,记k k k x x h -=+1,k kh h max =. 构造)(x I h 满足:(1)[]b a C x I h ,)(∈;(2)k k h f x I =)(),,2,1,0(n k =;(3))(x I h 在每个小区间[]1,+k k x x 上是线性函数.由以上条件直接可得)(x I h 在小区间[]1,+k k x x 上的表达式为=)(x I h +--++k k k k f x x x x 1111++--k kk k f x x x x , )1,,2,1,0(-=n k 误差估计 -)(x f =)(x I h ))((!2)(1)(''+--k k k x x x x x f ξ))((max 2121+≤≤--≤+k k x x x x x x x M k k . 当∞→h 时,0)()()(→-=x I x f x R h ,)(x I h 在[]b a ,上一致收敛到)(x f .3.5三次样条插值三次样条插值(Spline 插值)的具体要求是:函数[]b a C x S ,)(2∈,并在每个小区间[]1,+j j x x 上是一个三次多项式,其中b x x x x a n =<<<<=...210是给定节点,如果对给定的节点函数值有j y )(j x f =),...,2,1,0(n j =,并且=)(j x S j y ,),...,2,1,0(n j =成立,这时我们就把)(x S 称为三次样条插值函数.4.五种插值法的对比研究通过讨论插值法的相关内容,可以让我们更好的了解插值法.现在我们先从插值多项式的形式上、用途上、计算方法上、精确度上等进行对比研究,比较各自优缺点,然后再通过实例验证之.4.1拉格朗日插值与牛顿插值的比较(一)拉格朗日插值多项式步骤衔接紧密,条理清晰,在理论中十分重要.但是计算比较复杂,因为每添加一个点,所以的公式都要重新计算,这样计算步骤较多会导致计算量变大,反而会导致出现误差与原来的目的背道而驰.(二)牛顿插值多项式的计算量小,步骤简洁.当添加一个节点时,它仍然可以使用,即具有“承袭性”也叫“继承”,所以此类方法应用灵活.但是我们根据正常的想象和观察插值余项,我们一般局部地总是认为当原函数给出的点是越来越多时,我们借助的辅助函数的次数越高,它就和原函数越来越近,误差越来越小.然而事实并非如此,当遇到插值节点等距分布的情况时,只要求函数点值相等不能够充分反映插值函数的性质[5].4.2多项式插值法与埃尔米特插值的比较多项式插值要求在插值节点上函数值相等,计算简单,条件不怎么苛刻.但是如果有的时候一方面要在节点处函数值相等,另一方面要导数值相等,这时多项式插值否则不满足此类情况.埃尔米特插值不仅算法简单而且它具有强烈收敛性.但是它的光滑度不高,而且它的使用条件,也有局限性.在一些特定的限制条件下,有时函数的导数值在这点是完全没有必要知道的.因此,知道节点处的导数的插值函数成为能否运用Hermite插值的一个重要因素[6].4.3多项式插值法与分段线性插值的比较多项式插计算简单,比较方便,但是节点增加的同时就会出现龙格现象,图形波动较大[7].分段线性插值能够克服龙格现象,有收敛性,但是在区间内有转折点,光滑性不好.4.4 分段线性插值与样条插值的比较样条插值的插值函数算法稳定,而且插值函数光滑,收敛性强,误差小.但是它不能局部确定,常常需要解线性方程组.5.插值法在实际生活中的应用插值法是数值逼近中一个非常重要的部分,其次它在实际生活中起着不容小觑的作用,比如天文学以及数学.6.结束语插值法在解决实际问题中有很大的应用.插值方法是各种各样的,它包含拉格朗日插值法、牛顿插值法、Hermite插值法、分段线性插值法以及三次样条插值法等.我们不论使用哪个插值法,它的原理都是一样的.本课题首先介绍了插值的背景以及各类方法的基本思想;然后通过解题、画图、一道题用几种不同方法来解答,让我们哪种方法适合解答哪种类型的题,再然后进行对比,探讨出它们的优缺点,最后文章举个例子来说明插值法有很大的作用,它和我们是相连的,同时利用MATLAB给出了模拟图,通过这种数与形的结合,更好地了解各类插值法的应用于特征.致谢本论文在苏晓琴老师的悉心指导下完成的,同样也是我第一次写这样的文章。

差值与数值积分

差值与数值积分
数学实验报告
无 95
苏航
2009011122
实验日期 2011/3/11
数学实验报告
实验一 差值与数值积分
班级 姓名 交报告日期
无 95 苏航
2011/3/19
学号 2009011122
1
数学实验报告
无 95
苏航
2009011122
一、差值
㈠问题描述
选择一些函数,在 n 个节点上用拉格朗日、分段线性、三次样条三种差值方法,计算 m 个插值点的函数值,通过函数和图形输出,将三种插值结果与精确值进行比较,适当增加 n 再作比较,由此作初步分析。
3
数学实验报告
无 95
苏航
2009011122
可以发现,通过增加节点,每一种插值法的结果都比原来更加接近真实值。 dif1 = 0.0015; dif2 = 0.0082; dif3 = 0.0027; (3)10 节点,100 插值点
结果进一步逼近真实值。 dif1 = 0.00062; dif2 = 0.0035; dif3 = 0.0012; (4)简要小结 a.增加节点可以有效地提高插值结果的准确度。 b.在本函数下,拉人格朗日插值法的效果与三次样条插值法的效果相近,两 者都好于分段线性插值法。 (5)对比
从结果可以看出,各种积分法的精度都有所提高,其中自适应积分法的精度 提高得最多。 步长为 0.05,精度要求10−8
11
数学实验报告
无 95
苏航
2009011122
前两种与直接步长相关的积分公式得到的结果的精度进一步提升。 由此思考, 可以自己编写“以精度为参量”的梯形积分法和 Simpson 积分法,即多次调用现 有积分程序, 判断精度是否符合要求, 若不符则进一步缩小步长, 知道满足要求。 (4)对比 步长取 0.2,比较自己编写的梯形积分公式以及 Matlab 自带的梯形积分公式。 S[1]为自己所编公式的结果,S[2]为 Matlab 自带公式的结果。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验内容: 编写分段线性插值法及三次样条插值法通用子程序,依据数据表
xi
xi
2.0
2.1
2.2
2.3
2.4
1.414214 1.449138 1.483340 1.516575 1.549193
构造相应的插值多项式,并计算函数 f ( x) x 在 x 2.15 的近似值。
1
实验步骤及程序: 1、分段线性插值法流程图
实验报告
实验项目 理论内容 实验室名称 插值法 分段线性插值与三次样条插值 文理管 203 实验日期 授课日期 微机编号 2016/9/30 2016/9/0 E1
实目的及要求:
1、学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、明确插值多项式和分段插值多项式各自的优缺点; 3、熟悉插值方法的程序编制;如果绘出插值函数的曲线,观察其光滑性。
2
2、分段线性插值法源程序:
function [f] = fenduan(~,~,~,~) x=[2.0 2.1 2.2 2.3 2.4]; y=[1.414214 1.449138 1.483340 1.516575 1.549193]; y_1=0.5*y.^(-0.5); x0=2.15; f = 0.0; if(length(x) == length(y)) if(length(y) == length(y_1)) n = length(x); else disp('y 和 y 的导数的维数不相等!'); return; end else disp('x 和 y 的维数不相等!'); return; end for i=1:n if(x(i)<=x0)&& (x(i+1)>=x0) index = i; break; end end h = x(index+1) - x(index); fl = y(index)*(1+2*(x0-x(index))/h)*(x0-x(index+1))^2/h/h + ... y(index+1)*(1-2*(x0-x(index+1))/h)*(x0-x(index))^2/h/h; f = fl;
6
end yy(i)=a(j)+b(j)*(xx(i)-x(j))+c(j)*(xx(i)-x(j))^2+d(j)*(xx(i)-x(j))^3; end end
7
结果分析与讨论:
运用 MATLAB 分别对分段线性插值和三次样条插值进行编程的到数值均为 1.4664 说明实验结果准确无误,通过实验可以得出,在低阶方程的求解中,两种方法均能精确的 得到近似解,但是在高阶方程的求解中三次样条插值方法更加精确,误差较小,由于运用 追赶法求解,速度要比分段线性插值更加的快,这就说明在应对不同阶数的方程时,我们 应该选用最优方法。
实验报告评分标准
评分项目 实验步骤及程序 结果分析与讨论 合计 满分 10 5 20 得分 评分项目 运行结果 满分 5 得分
8
输入xi , yi , i = 1, ⋯ , n 及 x
ia ⟵ 1, ib ⟵ n
否 ib − ia > 1? 是 im ⟵ ia + ib 的整数部分 2 执行求拉格朗日插值的 程序,计算以ia, ib为节 点的线性插值函数在插 值点的函数值P1 x
否 ib ⟵ im xm < ������? 是 ia ⟵ im 输出p1 (������)
5
%自然样条端点条件(端点二阶导数为零)% if flag==0; A(1,1)=1; A(n,n)=1; end %---------------------------------% %端点一阶导数条件% if flag==1 A(1,1)=2*dx(1); A(1,2)=dx(1); A(n,n-1)=dx(n-1); A(n,n)=2*dx(n-1); B(1,1)=3*(dy(1)/dx(1)-vl); B(n,1)=3*(vr-dy(n-1)/dx(n-1)); end %---------------% %端点二阶导数条件% if flag==2 A(1,1)=2; A(n,n)=2; B(1,1)=vl; B(n,1)=vr; end %---------------% c=A\B; for i=1:n-1 d(i)=(c(i+1)-c(i))/(3*dx(i)); b(i)=dy(i)/dx(i)-dx(i)*(2*c(i)+c(i+1))/3; end [mm,nn]=size(xx); yy=zeros(mm,nn); for i=1:mm*nn for ii=1:n-1 if xx(i)>=x(ii) && xx(i)<x(ii+1) j=ii; break; elseif xx(i)==x(n) j=n-1; end
3
3、三次样条插值法流程图
输入数据flag
flag = 1? 否
是 执行子程序“第一类边界下的样条三次插 值”
是 flag = 2? 执行子程序“第二类边界下的样条三次插 值”
否 是
flag = 3? 否 输出失败信息
执行子程序“第三类边界下的样条三次插 值”
4
4、三次样条插值法源程序
function[yy, b, c, d]=spline3(~,~,~,~,~,~) %三次样条插值函数 %(x,y)为插值节点,xx 为插值点; %flag 表端点边界条件类型: %flag=0:自然样条(端点二阶导数为 0); %flag=1:第一类边界条件(端点一阶导数给定); %flag=2:第二类边界条件(端点二阶导数给定); %vl,vr 表左右端点处的在边界条件值。 %样条函数为:Si(x)=yi+bi*(x-xi)+ci*(x-xi)^2+di*(x-xi)^3 %b,c,d 分别为各子区间上的系数值 %yy 表插值点处的函数值. x=[2.0 2.1 2.2 2.3 2.4]; y=[1.414214 1.449138 1.483340 1.516575 1.549193]; xx=2.15; flag=0; vl=2.0; vr=2.4; if length(x)==length(y) n=length(x); a=zeros(n-1,1); b=a; d=a; dx=a; dy=a; A=zeros(n); B=zeros(n,1); end for i=1:n-1 a(i)=y(i); dx(i)=x(i+1)-x(i); dy(i)=y(i+1)-y(i); end for i=2:n-1 A(i,i-1)=dx(i-1); A(i,i)=2*(dx(i-1)+dx(i)); A(i,i+1)=dx(i); B(i,1)=3*(dy(i)/dx(i)-dy(i-1)/dx(i-1)); end
相关文档
最新文档