插值与拟合-2012资料

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

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

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

资源描述

实验内容:1.插值的基本原理;三种插值方法:拉格朗日插值,分段线性插值,三次样条插值。2.插值的MATLAB实现及插值的应用。3.拟合的基本原理;4.拟合的MATLAB实现及拟合的应用。实验目的:掌握插值与拟合的方法以及如何用MATLAB实现。实验六插值与拟合插值的含义:导言分析:由于所给的这几个值范围很小,故我们可以考虑用线性函数逼近正弦函数(即用线性函数近似的代替正弦函数),于是容易得到:sin3516'sin3510'(sin3520'sin3510')106=+-复=0.5760+(0.5783-0.5760)×0.6=0.5774这就用到一种插值方法:分段线性插值。插值可以理解为:根据实验获得的数据,计算出表中没有的函数值。例1:已知sin3510'0.5760,sin3520'0.5783==,求sin3516'的值。拟合的含义:例2:有一只对温度敏感的电阻,已经测得了一组温度t和电阻R的数据如下:()tC20.532.751.073.095.7()RW7658268739421032请问在60C时电阻有多大?分析:若仍用上题的解法,数据的跨度较大,这样产生的误差必然很大。现在,用我们所学的MATLAB将这五个点在坐标轴中描绘出来,看看R与t之间有什么样的关系键入的程序为:t=[20.532.5517395.7];r=[7658268739421032];plot(t,r,’k+’)xlabel(‘t’),ylabel(‘r’)从所生成的图形中可以看出,R与t近似的成线性,因而我们可以写出R与t的关系式:R=at+b(其中a,b为待定的参数)由于测量误差的存在,此直线不可能通过所有的节点,这与插值曲线要通过全部的节点不同。故曲线拟合可以理解为根据一组(二维)数据,即平面上的若干点,确定一个一元函数,即曲线,使曲线总体与这些点尽量靠近。2040608010070080090010001100函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。问题:给定一批数据点,需确定满足特定要求的曲线或曲面解决方案:•若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。•若要求所求曲线(面)通过所给所有数据点,就是插值问题;拟合与插值的关系拉格朗日插值分段线性插值三次样条插值一、插值的的提法与思路二、插值的方法三、Matlab在插值中的应用插值已知n+1个节点其中互不相同,不妨设求任一插值点处的插值0x1xnx0y1y节点可视为由产生,表达式复杂,或无表达形式。*x*y插值问题的提法构造一个(相对简单的)函数通过全部节点,即再用计算插值,即0x1xnx0y1y*x*y返回求解的基本思路拉格朗日(Lagrange)插值分析如下:结论:满足(1)的次数不超过n的多项式是存在且唯一的。1.1线性插值公式我们称(3)式为拉格朗日线性插值函数或一次拉格朗日插值公式。若引进记号:1001(),xxlxxx-=-0110()xxlxxx-=-则(3)式可以写成:10011()()()Lxylxylx=+(4)显然00()1,lx=01()0lx=,10()0,lx=11()1lx=,称0(),lx1()lx为基函数。Ln(x)=00110()()()()nnniiiylxylxylxylx=+++=å(5)这是不超过n次的多项式,其中基函数()klx=0111)0111)()()...()(...()()()...()(...()kknkkkkkkknxxxxxxxxxxxxxxxxxxxx-+-+----------显然()kilx满足()kilx=1()0()ikikì=ïïíï¹ïî,当n=1时(5)式就是我们的(3)式。1.2.1一般情形与构造线性插值多项式类似,构造n次多项式称(5)式为拉格朗日插值多项式,用Ln(x)计算插值称为拉格朗日插值。注:当n=2时,(5)为三点二次(抛物)插值多项式1.2.2误差分析利用泰勒展开可以推出,误差Rn(x)=g(x)-Ln(x)=(1)1()(x)(1)!nngnxw+++其中x∈(a,b)且依赖于x,1(x)nw+=(x-x0)(x-x1)…(x-xn)若可以估计:(1)1()nngMx++£,则:10()||(1)!nnnjjMRxxxn+=U-+如何使误差|)(|xRn减小:x接近jx;g平缓;n增加;M1n+减小。拉格朗日多项式插值的这种振荡现象叫Runge现象21(),551gxxx=-#+采用拉格朗日多项式插值:选取插值节点个数n+1,其中n为插值多项式的次数,当n分别取10时,绘出插值结果图形和真实的函数图形,从图形上体会龙格现象。例返回Runge现象Runge在本世纪初发现:在[-5,5]上用n+1个等距结点作插值多项式Ln(x),使其在每个结点的值与函数y(x)=1/(1+x2)在结点的值相等。但在n→∞时,插值多项式Ln(x)在区间中部趋于y(x)。但对于3.63≤∣x∣≤5的x,Ln(x)严重发散。拉格朗日插值多项式的振荡-#+21,551xx例:g(x)=取n=2,4,6,8,10,计算Ln(x),画出图形:Runge现象=-#lim()(),3.633.63nnLxgxx•高次插值多项式的缺陷,使得人们转而寻求简单的低次多项式插值.2.1分段线性插值若对y(x)=1/(1+x2)在每个子段上用线性插值,即用连接相邻节点的折线逼近所考察的曲线,就能保证一定的逼近效果,避免龙格振荡现象的发生。这种增加节点,用分段低次多项式插值的化整为零的处理方法称为分段插值法。在分段插值中,用得较多的是分段线性插值。简单地说,将每两个相邻地节点用直线连起来,如此形成的一条折线就是分段线性插值函数。xjxj-1xj+1x0xnxoy从数学的角度,分段线性插值的提法如下:问题是设函数f(x)在n+1个节点x0,x1,…,xn处的函数值已知,为y0,y1,…,yn。要求一个分段(共n段)线性函数q(x),使其满足:q(xi)=yi,i=0,1,…,n.q(x)在第i段[xi-1,xi]上的表达式为:iiiiiiiiyxxxxyxxxxxq1111)(,iixxx1,i=1,2,…,n。可以证明,分段线性插值具有良好的收敛性。即)()(limxfxqn,f(x)为被插值函数。•(分段)线性插值是最简单的插值方法,但其适用范围很小;如果原来数据的函数f有极大的变化,那么假设其数据点之间为线性变化则并不合理。•所以我们可以用二次、三次多项式或是另一种称为spline函数来近似逼近原来数据的函数。2.2分段三次埃尔米特插值若在以上插值问题中,除了要求在插值节点的函数值给定外,还要求在节点处的导数值为给定值,即插值问题变为:问题:设函数f(x)在节点x0,x1,…,xn处的函数值为y0,y1,…,yn,导数值为nyyy,,,10。要求:求一个分段(共n段)多项式函数q(x),使其满足:q(xi)=yi,iiyxq)(,i=0,1,…,n.相当于在每一小段上应满足四个条件(方程),可以确定四个待定参数。三次多项式正好有四个系数,所以可以考虑用用三次多项式函数作为插值函数,这就是所谓的分段三次埃尔米特插值,与分段线性插值一起都称为分段多项式插值。上面介绍的分段线性插值,其总体光滑程度不够。xyxi-1xiab在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性。光滑性的阶次越高,则越光滑。是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子,具有二阶光滑性。3三次样条插值对于给定n+1个不同节点x0,x1,…,xn及函数值y0,y1,…,yn,其中a=x0x1…xn=b。构造三次样条插值函数S(x)。S(x)称为三次样条函数时需满足:(1)S(x)在[a,b]上二阶导数连续(2)S(xk)=yk(k=0,1,…,n)(3)每个子区间[xk,xk+1]上S(x)是三次多项式(k=0,1,…,n)lim()()nSxgx=计算过程1(){(),[,],1,}iiiSxsxxxxin-=?32201)()(1,)2)()(0,1,)3)()[,]iiiiiiinsxaxbxcxdinSxyinSxCxx=+++===Î111()(),()(),()()(1,,1)iiiiiiiiiiiisxsxsxsxsxsxin+++ⅱⅱⅱ?===-04)()()0(nSxSxⅱⅱ==自然边界条件)2)3)4),,,()iiiiabcdSx揶g(x)为被插值函数。记且样条插值具有良好的收敛性即:牛顿插值00100120101n01()()[,]()[,,]()()[,,]()()()nnNxfxfxxxxfxxxxxxxfxxxxxxxxx=+-+--++---,k阶均差或差商,其中n次牛顿插值公式0(),[,,](1,2,,)kknfxyfxxkn==()fx这里表示的011011()[,,,]()()()()kjkjjjjjjjkfxfxxxxxxxxxxx=-+=----å返回小结:拉格朗日插值(高次多项式插值):曲线光滑;误差估计有表达式;收敛性不能保证(振荡现象)。用于理论分析,实际意义不大。分段线性和三次样条插值(低次多项式插值):曲线不光滑(三次样条插值已大有改进);误差估计较难(对三次样条插值);收敛性有保证。简单实用,应用广泛。Matlab在插值中的应用1.拉格朗日插值:需要自编程序,如名为lagr.m的M文件,第一行为functiony=lagr(x0,y0,x)输入:节点x0,y0,插值点x(均为数组,长度自定义));输出:插值y(与x同长度数组))。应用时输入x0,y0,x后,运行y=lagr(x0,y0,x)Matlab实现函数Lagr.m见书P96例:x=[1234];y=[0–5–63];lagr(x,y,2.5)Matlab在插值中的应用2.牛顿插值:需要自编程序,如名为newton.m的M文件,第一行为functiony=newton(x0,y0,x)输入:节点x0,y0,插值点x(均为数组,长度自定义));输出:插值y(与x同长度数组))。应用时输入x0,y0,x后,运行y=newton(x0,y0,x)Matlab实现函数newton.m见书P97例X=[0.400.550.650.800.90];Y=[0.410750.578150.696750.888111.02652];x=0.596;y=newton(X,Y,x)Matlab在插值中的应用3.埃尔米特插值:需要自编程序,如名为hermite.m的M文件,第一行为functiony=hermite(X,Y,M,x)输入:节点X,Y,一阶导数值M,插值点x(均为数组,长度自定义));输出:插值y(与x同长度数组))。应用时输入X,Y,M后,运行y=hermite(X,Y,M,x)Matlab实现函数hermite.m见书P992.一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’:最邻近插值‘linear’:线性插值;‘spline’:三次样条插值;‘cubic’:立方插值。缺省时:分段线性插值。注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。例:对y(x)=1/(1+x2)在[-5,5]上作上述三种插值,用m=21个插值点等分作图,并比较结果。解:运行如下程序(注意和书上的程序比较)n=11;m=21;x=-5:10/(m-1):5;y=1./(1+x.^2);z=0*x;plot(x,z,x,y),gtext('y=1/(1+x^2)','FontSize',16),pausex0=-5:10/(n-1):5;y0=1./(1+

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

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

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

×
保存成功