数学建模第十一讲插值和拟合与MATLAB_第1页
数学建模第十一讲插值和拟合与MATLAB_第2页
数学建模第十一讲插值和拟合与MATLAB_第3页
数学建模第十一讲插值和拟合与MATLAB_第4页
数学建模第十一讲插值和拟合与MATLAB_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十一讲第十一讲 插值和拟合插值和拟合 与与 MATLABMATLAB11.1 插值与插值与MATLAB 11.2 拟合与拟合与MATLAB 问题一问题一 气温测量气温测量:在:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次温度,测得的温度依次为:小时测量一次温度,测得的温度依次为:5 5,8 8,9 9,1515,2525,2929,3131,3030,2222,2525,2727,2424。试估计每。试估计每隔隔1/101/10小时的温度值。小时的温度值。 通过此例对最近邻点插值、双线性插值方法和通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行

2、比较。双三次插值方法的插值效果进行比较。一、一维插值一、一维插值已知已知 n+1个节点个节点, 1 , 0(),(njyxjj其中其中jx互不相同,不妨设互不相同,不妨设),10bxxxan求任一插值点求任一插值点)(*jxx处的插值处的插值*.y0 x1xnx0y1y节点可视为由节点可视为由()yfx产生,产生,f表达式复杂,表达式复杂,或未知。或未知。*x*y11.1 插值问题插值问题1.一维插值的定义一维插值的定义()(0,1,)jjxyjn再用再用( )x计算插值,即计算插值,即*().yx0 x1xnx0y1y*x*y( ),yx 构造一个构造一个( (相对简单的相对简单的) )函数

3、函数通过通过全部节点全部节点, , 即即(1) 现在的问题是怎样来找现在的问题是怎样来找 (x)?选什么类型选什么类型的函数作为的函数作为 (x)? 一种简单自然的方法就是将一种简单自然的方法就是将 (x)设为次设为次数不超过数不超过n的多项式:的多项式:nnnxaxaaxP10)(2)满足插值条件满足插值条件(1),可得,可得n+1个方程,而个方程,而(2)式式Pn(x)中恰有中恰有n+1个待定参数。个待定参数。Lagrange插值插值2 .插值方法插值方法 对一般的对一般的n,由插值条件由插值条件(1)可得关于可得关于(2)式中式中待定参数待定参数a0,a1,an的线性方程组:的线性方程组

4、:.22101121211000202010nnnnnnnnnnyxaxaxaayxaxaxaayxaxaxaa(3)其系数行列式即为范得蒙(其系数行列式即为范得蒙(Vandemonde)行)行列式。列式。nnnnnnxxxxxxxxxV2121102001110. )(jinjixx 如果节点如果节点x0,x1,xn互不相同,则互不相同,则V 0,故方故方程组程组(3)有唯一解。即有唯一解。即n次代数插值问题是次代数插值问题是存在存在唯一的。不难得到唯一的。不难得到 njjnjiiijinyxxxxxP00.) )()(4)称为称为拉格朗日插值基函数拉格朗日插值基函数。n0iiiny)x(L

5、)x(P(4 4)可以写成如下形式可以写成如下形式其中其中Li(x) 为为n次多项式:次多项式:)xx()xx)(xx()xx)(xx()xx()xx)(xx()xx)(xx()x(Lni1ii1ii1i0in1i1i10i特别地特别地: n=1,相当于作过点(,相当于作过点(x0,y0)与()与(x1,y1)的直线的直线y=P1(x),于是,于是,)(101001011yxxxxyxxxxxP(5)即用线性函数近似代替即用线性函数近似代替f (x),称此为称此为线性插值线性插值。 n=2,即找过三个点(,即找过三个点(xi, yi) i=0,1,2的抛的抛物线,于是得物线,于是得121012

6、002010212)()()()()(yxxxxxxxxyxxxxxxxxxP,)()(2120210yxxxxxxxx(6) 称此为称此为抛物抛物线插值线插值。分段线性插值分段线性插值其它,0,)()()(1111110jjjjjjjjjjjnjjjnxxxxxxxxxxxxxxxlxlyxL计算量与计算量与n n无关无关; ;n n越大,误差越小越大,误差越小. .0lim( )( ),nnnL xf x xxxxjxj-1xj+1x0 xnxoy比分段线性插值更光滑。比分段线性插值更光滑。xyxi-1 xiab三次样条插值三次样条插值, 1,),()(1nixxxxsxSiii,)()3

7、), 1 , 0()()2), 1()() 10223niiiiiiixxCxSniyxSnidxcxbxaxs自然边界条件)(0)()()40 nxSxS)(,)4)3)2xSdcbaiiiilim ( )( )ns xf x111( )( ), ( )( ),( )( )(1,1)iiiiiiiiiiiis xsxs xsxs xsxin为被插值函数。为被插值函数。( )f x用用MATLABMATLAB作插值计算作插值计算一维插值函数:一维插值函数:yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点插值节点插值节点xixi处的插处的插值结果值结果neare

8、st nearest :最邻近插值:最邻近插值linear linear : 线性插值;线性插值;spline spline : 三次样条插值;三次样条插值;cubic cubic : 立方插值。立方插值。缺省时:缺省时: 分段线性插值。分段线性插值。注意注意:所有的插值方:所有的插值方法都要求法都要求x x是单调的,是单调的,并且并且xi不能够超过不能够超过x的的范围。范围。 问题一问题一 气温测量气温测量:在:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次温度,测得的温度依次为:小时测量一次温度,测得的温度依次为:5 5,8 8,9 9,1515,2525,292

9、9,3131,3030,2222,2525,2727,2424。试估计每。试估计每隔隔1/101/10小时的温度值。小时的温度值。hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=interp1(hours,temps,h,spline); (直接输出数据将是很多的直接输出数据将是很多的)plot(hours,temps,+,h,t,hours,temps,r:) %作图作图xlabel(Hour),ylabel(Degrees Celsius)二、二维插值的定义二、二维插值的定义xyO第一种(网格节点):第一种(网格

10、节点):1.二维插值的定义二维插值的定义 12maxxxb12ncyyyd已知已知 m m n n个节点个节点 其中其中互不相同,不妨设互不相同,不妨设( ,) (1,2,.,;1,2,)ijijx yzim jn,ijx y( ,)(0,1,;0,1,)ijijf x yzim jn再用再用计算插值,即计算插值,即( , )f x y*(,).zf xy构造一个二元函数构造一个二元函数通过全部已知通过全部已知( , ),zf x y节点节点, ,即即第二种(散乱节点):第二种(散乱节点):yx0已知已知n n个节点个节点其中其中互不相同。互不相同。( ,) (1,2,., )iiix y z

11、in( ,)iix y( ,)(0,1, )iiif x yzin再用再用计算插值,即计算插值,即( , )f x y*(,).zf xy 构造一个二元函数构造一个二元函数通过全部已知通过全部已知( , ),zf x y节点节点, ,即即 注意:最邻近插值一般不连续。具有连续性的注意:最邻近插值一般不连续。具有连续性的最简单的插值是分片线性插值。最简单的插值是分片线性插值。最邻近插值最邻近插值xy(x1, y1)(x1, y2)(x2, y1)(x2, y2)O 二维或高维情形的最邻近插值,与被插值点最二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求。邻近的节点的函数值即为所

12、求。2.二维插值方法二维插值方法 将四个插值点(矩形的四个顶点)处的函数值将四个插值点(矩形的四个顶点)处的函数值依次简记为:依次简记为: 分片线性插值分片线性插值xy(xi, yj)(xi, yj+1)(xi+1, yj)(xi+1, yj+1)Of (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f411()jjiiiiyyyxxyxx)yy)(ff ()xx)(ff (f) y, x( fj23i121第二片第二片( (上三角形区域上三角形区域) )插值函数为:插值函数为:)xx)(ff ()yy)(ff (f) y,

13、 x( fi43j141注意注意:( (x x, , y y) )当然应该是在插值节点所形成的矩形当然应该是在插值节点所形成的矩形区域内。显然,分片线性插值函数是连续的。区域内。显然,分片线性插值函数是连续的。分两片的函数表达式如下:分两片的函数表达式如下:第一片第一片( (下三角形区域下三角形区域) )插值函数为:插值函数为: 双线性插值是一片一片的空间二次曲面构成。双双线性插值是一片一片的空间二次曲面构成。双线性插值函数的形式如下:线性插值函数的形式如下:) dcy)(bax() y, x( f 其中有四个待定系数,利用该函数在矩形的四个其中有四个待定系数,利用该函数在矩形的四个顶点(插值

14、节点)的函数值,得到四个代数方程,正顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数。好确定四个系数。双线性插值xy(x1, y1)(x1, y2)(x2, y1)(x2, y2)O要求要求x0,y0 x0,y0单调;单调;x x,y y可取可取为矩阵,或为矩阵,或x x取行向量,取行向量,y y取为列向量,取为列向量,x,yx,y的值分别不能超出的值分别不能超出x0,y0 x0,y0的范围。的范围。z=interp2(x0,y0,z0,x,y,method)被插值点被插值点插值方法插值方法用用MATLABMATLAB作网格节点数据的插值作网格节点数据的插值插值插值节点节点被插值点

15、的被插值点的函数值函数值nearest 最邻近插值最邻近插值linear 双线性插值双线性插值spline 双三条样插值双三条样插值cubic 双三次插值双三次插值缺省时缺省时, , 双线性插值双线性插值 通过此例对最近邻点插值、双线性插值方法和通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。双三次插值方法的插值效果进行比较。 插值函数插值函数griddata格式为格式为: cz =griddata(x,y,z,cx,cy,method)用MATLAB作散点数据的插值计算 要求要求cxcx取行向量,取行向量,cycy取为列向量取为列向量。被插值点被插值点插值方法插值方

16、法插值插值节点节点被插值点的被插值点的函数值函数值nearest 最邻近插值最邻近插值linear 双线性插值双线性插值cubic 双三次插值双三次插值v4- Matlab提供的插值方法提供的插值方法缺省时缺省时, , 双线性插值双线性插值曲线拟合问题的提法曲线拟合问题的提法 已知一组(二维)数据,即平面上已知一组(二维)数据,即平面上 n n个点个点(x xi i,y,yi i) i=1,n, ) i=1,n, 寻求一个函数(曲线)寻求一个函数(曲线)y=f(x), y=f(x), 使使 f(x) f(x) 在某种准则下与所有数据点最为接近,即在某种准则下与所有数据点最为接近,即曲线拟合得最

17、好。曲线拟合得最好。 +xyy=f(x)(xi,yi)i i i 为点为点(x xi i,y,yi i) ) 与曲线与曲线 y=f(x) y=f(x) 的距离的距离11.2 拟合拟合拟合与插值的关系拟合与插值的关系 函数插值与曲线拟合都是要根据一组数据构造一函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。方法上是完全不同的。问题:问题:给定一批数据点,需确定满足特定要求的曲线给定一批数据点,需确定满足特定要求的曲线或曲面。或曲面。解决方案:解决方案:若不要求曲线(面)通过所有数据点,而是要

18、求它反若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。拟合或曲面拟合。若要求所求曲线(面)通过所给所有数据点,就是插若要求所求曲线(面)通过所给所有数据点,就是插值问题;值问题;一、线性最小二乘拟合一、线性最小二乘拟合1.直线拟合直线拟合 假定数据点假定数据点 (xi,yi) i=0,1,n 的分布大致的分布大致成一条直线,我们要构造一条直线使之尽量从成一条直线,我们要构造一条直线使之尽量从这些数据点附近通过。这些数据点附近通过。 设选取直线:设选取直线:y=a+bx, 而而ibxayi

19、i=0,1,n 表示按直线表示按直线y=a+bx求得的近似值。求得的近似值。两者之差两者之差iyyeii称为称为残差残差。残差的大小是衡量拟合好坏的重要标志。残差的大小是衡量拟合好坏的重要标志。对此,我们可以有对此,我们可以有各种不同的准则各种不同的准则:(1)使残差的最大绝对值达到最小使残差的最大绝对值达到最小min;|maxiie(2)使残差的绝对值之和达到最小使残差的绝对值之和达到最小iiemin;|(3)使残差的平方和达到最小使残差的平方和达到最小iie.min2 对以上三种准则,前两种提法比较自然,对以上三种准则,前两种提法比较自然,但由于含有绝对值,运算不便。而用第但由于含有绝对值

20、,运算不便。而用第(3)种种来选取拟合曲线的方法称为来选取拟合曲线的方法称为曲线拟合的最小二曲线拟合的最小二乘法乘法。直线拟合问题直线拟合问题即:即: 对于给定的数据点(对于给定的数据点(xi,yi) i=0,1,n ,求直线,求直线y=a+bx,使总误差,使总误差20)(iniibxayS达到最小。达到最小。(7)求解:求解: 令令, 0, 0bSaS得方程组得方程组.2 iiiiiiiiiiiyxxbxayxban(8)2.线性多项式最小二乘拟合线性多项式最小二乘拟合 给定一组数据给定一组数据(xi,yi) i=0,1,n ,选取多,选取多项式项式mkkkxax0)(作为拟合曲线,使总误差

21、作为拟合曲线,使总误差niiiyxS02)(9)达到最小。达到最小。求解:求解: 令令mkaSk,.,1 , 0, 0得得0 ()0,nkiiiixy x000nkiiimnkjy xiijjixx ak=0,1,m(10)这是关于未知量这是关于未知量a0,a1,am的线性方程组,称之的线性方程组,称之为为正规方程正规方程。即即010000001,mmmnnnnxxxayRayayxxx 其中其中 方程组可以写为方程组可以写为 R RT TRa=RRa=RT Ty y用用MATLABMATLAB作线性最小二乘拟合作线性最小二乘拟合1. 1. 作多项式作多项式f(x)=af(x)=a1 1x x

22、m m+ +a+ +am mx+ax+am+1m+1拟合拟合, ,可利用已有程序可利用已有程序: :a=polyfit(x,y,m)2. 2. 对超定方程组对超定方程组)(11nmyaRnmmn可得最小二乘意义下的解。可得最小二乘意义下的解。,用,用yRa3.3.多项式在多项式在x x处的值处的值y y可用以下命令计算:可用以下命令计算: y=polyvaly=polyval(a a,x x)输出拟合多项式系数输出拟合多项式系数a=aa=a1 1, a, am m , , a am+1m+1 ( (数组数组) ))输入同长度输入同长度的数组的数组X X,Y Y拟合多项拟合多项式次数式次数即要求

23、即要求 出二次多项式出二次多项式:2210()fxaxa xa中中 的的210(,)Aaaa使得使得:最小 )(1112iiiyxf问题三问题三: 对下面一组数据作二次多项式拟合对下面一组数据作二次多项式拟合1)输入以下命令:)输入以下命令:x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; R=(x.2) x ones(11,1); A=Ry211211111 1xxRxx此时解法解法1 1用解超定方程的方法用解超定方程的方法2)计算结果:)计算结果: = -9.8108 20.1293 -0.031

24、7 2( )9.810820.12930.0317fxxx 1)输入以下命令:)输入以下命令: x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,k+,x,z,r) %作出数据点和拟合曲线的图形作出数据点和拟合曲线的图形2)计算结果:)计算结果: = -9.8108 20.1293 -0.0317解法解法2用多项式拟合的命令用多项式拟合的命令00.20.40.60.81-20246810120317.01293.208

25、108.9)(2xxxf,)(210 xaeaax这便是非线性最小二乘拟合问题这便是非线性最小二乘拟合问题。给定一组数。给定一组数据据(xi,yi) i=0,1,n ,我们要求总误差,我们要求总误差201010),(),(nimiimaaaxyaaaS 达到最小。达到最小。二、非线性最小二乘拟合二、非线性最小二乘拟合 有时,拟合函数有时,拟合函数 (x)= (x, a0,a1,am)中中的的待定参数待定参数a0,a1,am不能全部以线性形式出现,不能全部以线性形式出现,如指数拟合函数如指数拟合函数已知数据点已知数据点:xdata=xdata=(xdata1,xdata2,xdataxdatan

26、 n),), ydata=ydata=(ydataydata1 1,ydataydata2 2,ydataydatan n)用用MATLABMATLAB作非线性最小二乘拟合作非线性最小二乘拟合 Matlab Matlab的提供了求非线性最小二乘拟合的函数:的提供了求非线性最小二乘拟合的函数:lsqcurvefitlsqcurvefit。这个命令要先建立。这个命令要先建立M-M-文件文件fun.mfun.m,在其,在其中定义函数中定义函数f(x)f(x)。最小 ),(21niiiydataxdataxF lsqcurvefitlsqcurvefit用以求含参量用以求含参量x x(向量)的向量值函

27、数(向量)的向量值函数F(x,xdata)=F(x,xdata)=(F F(x x,xdataxdata1 1),),F F(x x,xdataxdatan n)T T中的参变量中的参变量x(x(向量向量),),使得使得 fun是一个事先建立的是一个事先建立的定义函数定义函数F(x,xdata) 的的M-文件文件, 自变量为自变量为x和和xdata x = lsqcurvefit (fun,x0,xdata,ydata,options);迭代初值迭代初值已知数据点已知数据点可选项可选项LsqcurvefitLsqcurvefit 的格式:的格式:100200 30040050060070080

28、090010004.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59jt310jc210102. 0),(minjjktcbeakbaFj问题四问题四: 用下面一组数据拟合用下面一组数据拟合 中的参数中的参数a,b,k0.02( )ktc tabe该问题即解最优化问题:该问题即解最优化问题: 1 1)编写)编写M-M-文件文件 curvefun1.mcurvefun1.m function f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中其中 x(1)=a; x(2)=b;x(3)=k;2)输入命令)输入命令tdata=100:100:1000tdata=100:100:1000cdata=cdata=1e-03* *4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;6.50,6.59; x0=0.2,0.05,0.05; x0=0.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论