数学建模第十一讲插值和拟合与MATLAB教材课件

上传人:仙*** 文档编号:241400706 上传时间:2024-06-23 格式:PPT 页数:46 大小:1.01MB
返回 下载 相关 举报
数学建模第十一讲插值和拟合与MATLAB教材课件_第1页
第1页 / 共46页
数学建模第十一讲插值和拟合与MATLAB教材课件_第2页
第2页 / 共46页
数学建模第十一讲插值和拟合与MATLAB教材课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第十一讲第十一讲 插值和拟合插值和拟合 与与 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小时的温度值。小时的温度值。通过此例对最近邻点插值、双线性插值方法和通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。双三次插值方法的插值效果进行比较。一、一维插值一、一维插值已知已知 n+1个节点个节点其中其中互不相同,不妨设互不相同,不妨设求任一插值点求任一插值点处的插值处的插值节点可视为由节点可视为由产生,产生,表达式复杂,表达式复杂,或未知。或未知。11.1 插值问题插值问题1.一维插值的定义一维插值的定义再用再用计算插值,即计算插值,即 构造一个构造一个(相对简单的相对简单的)函数函数通过通过全部节点全部节点,即即(1)现在的问题是怎样来找现在的问题是怎样来找(x)?选什么类型选什么类型的函数作为的函数作为(x)?一种简单自然的方法就是将一种简单自然的方法就是将(x)设为次设为次数不超过数不超过n的多项式:的多项式:(2)满足插值条件满足插值条件(1),可得,可得n+1个方程,而个方程,而(2)式式Pn(x)中恰有中恰有n+1个待定参数。个待定参数。Lagrange插值插值2.插值方法插值方法 对一般的对一般的n,由插值条件由插值条件(1)可得关于可得关于(2)式中式中待定参数待定参数a0,a1,an的线性方程组:的线性方程组:(3)其系数行列式即为范得蒙(其系数行列式即为范得蒙(Vandemonde)行)行列式。列式。如果节点如果节点x0,x1,xn互不相同,则互不相同,则V 0,故故方程组方程组(3)有唯一解。即有唯一解。即n次代数插值问题是次代数插值问题是存存在唯一的。不难得到在唯一的。不难得到(4)称为称为拉格朗日插值基函数拉格朗日插值基函数。(4 4)可以写成如下形式可以写成如下形式其中其中Li(x)为为n次多项式:次多项式:特别地特别地:n=1,相当于作过点(,相当于作过点(x0,y0)与()与(x1,y1)的直线)的直线y=P1(x),于是,于是(5)即用线性函数近似代替即用线性函数近似代替f(x),称此为称此为线性插值线性插值。n=2,即找过三个点(,即找过三个点(xi,yi)i=0,1,2的抛的抛物线,于是得物线,于是得(6)称此为称此为抛物抛物线插值线插值。分段线性插值分段线性插值计算量与计算量与n n无关无关;n n越大,误差越小越大,误差越小.xjxj-1xj+1x0 xnxoy比分段线性插值更光滑。比分段线性插值更光滑。xyxi-1 xiab三次样条插值三次样条插值为被插值函数。为被插值函数。用用MATLABMATLAB作插值计算作插值计算一维插值函数:一维插值函数:yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点插值节点插值节点xixi处的插处的插值结果值结果nearestnearest :最邻近插值:最邻近插值linearlinear :线性插值;线性插值;splinespline :三次样条插值;三次样条插值;cubiccubic :立方插值。立方插值。缺省时:缺省时:分段线性插值。分段线性插值。注意注意:所有的插值方:所有的插值方法都要求法都要求x x是单调的,是单调的,并且并且xi不能够超过不能够超过x的的范围。范围。问题一问题一 气温测量气温测量:在:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次温度,测得的温度依次为:小时测量一次温度,测得的温度依次为:5 5,8 8,9 9,1515,2525,2929,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第一种(网格节点):第一种(网格节点):1.二维插值的定义二维插值的定义 已知已知 m m n n个节点个节点 其中其中互不相同,不妨设互不相同,不妨设再用再用计算插值,即计算插值,即构造一个二元函数构造一个二元函数通过全部已知通过全部已知节点节点,即即第二种(散乱节点):第二种(散乱节点):yx0已知已知n n个节点个节点其中其中互不相同。互不相同。再用再用计算插值,即计算插值,即 构造一个二元函数构造一个二元函数通过全部已知通过全部已知节点节点,即即 注意:最邻近插值一般不连续。具有连续性的注意:最邻近插值一般不连续。具有连续性的最简单的插值是分片线性插值。最简单的插值是分片线性插值。最邻近插值最邻近插值xy(x1,y1)(x1,y2)(x2,y1)(x2,y2)O 二维或高维情形的最邻近插值,与被插值点最邻二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求。近的节点的函数值即为所求。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)=f4第二片第二片(上三角形区域上三角形区域)插值函数为:插值函数为:注意注意:(x x,y y)当然应该是在插值节点所形成的矩形当然应该是在插值节点所形成的矩形区域内。显然,分片线性插值函数是连续的。区域内。显然,分片线性插值函数是连续的。分两片的函数表达式如下:分两片的函数表达式如下:第一片第一片(下三角形区域下三角形区域)插值函数为:插值函数为:双双线线性性插插值值是是一一片片一一片片的的空空间间二二次次曲曲面面构构成成。双双线性插值函数的形式如下:线性插值函数的形式如下:其中有四个待定系数,利用该函数在矩形的四个其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数。好确定四个系数。双线性插值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作网格节点数据的插值作网格节点数据的插值插值插值节点节点被插值点的被插值点的函数值函数值nearest 最邻近插值最邻近插值linear 双线性插值双线性插值spline 双三条样插双三条样插值值cubic 双三次插值双三次插值缺省时缺省时,双线性插值双线性插值 通过此例对最近邻点插值、双线性插值方法和通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。双三次插值方法的插值效果进行比较。插值函数插值函数griddata格式为格式为:cz=griddata(x,y,z,cx,cy,method)用MATLAB作散点数据的插值计算 要求要求cxcx取行向量,取行向量,cycy取为列向量取为列向量。被插值点被插值点插值方法插值方法插值插值节点节点被插值点的被插值点的函数值函数值nearest 最邻近插值最邻近插值linear 双线性插值双线性插值cubic 双三次插值双三次插值v4-Matlab提供的插值方法提供的插值方法缺省时缺省时,双线性插值双线性插值曲线拟合问题的提法曲线拟合问题的提法 已知一组(二维)数据,即平面上已知一组(二维)数据,即平面上 n n个点个点(x xi i,y,yi i)i=1,)i=1,n,n,寻求一个函数(曲线)寻求一个函数(曲线)y=f(x),y=f(x),使使 f(x)f(x)在某种准则下与所有数据点最为在某种准则下与所有数据点最为接近,即曲线拟合得最好。接近,即曲线拟合得最好。+xyy=f(x)(xi,yi)i i i 为点为点(x xi i,y,yi i)与曲线与曲线 y=f(x)y=f(x)的距离的距离11.2 拟合拟合拟合与插值的关系拟合与插值的关系 函数插值与曲线拟合都是要根据一组数据构造一函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。方法上是完全不同的。问题:问题:给定一批数据点,需确定满足特定要求的曲线给定一批数据点,需确定满足特定要求的曲线或曲面。或曲面。解决方案:解决方案:若不要求曲线(面)通过所有数据点,而是要求它反若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。拟合或曲面拟合。若要求所求曲线(面)通过所给所有数据点,就是插若要求所求曲线(面)通过所给所有数据点,就是插值问题;值问题;一、线性最小二乘拟合一、线性最小二乘拟合1.直线拟合直线拟合 假定数据点假定数据点(xi,yi)i=0,1,n 的分布大致的分布大致成一条直线,我们要构造一条直线使之尽量从成一条直线,我们要构造一条直线使之尽量从这些数据点附近通过。这些数据点附近通过。设选取直线:设选取直线:y=a+bx,而而 i=0,1,n 表示按直线表示按直线y=a+bx求得的近似值。求得的近似值。两者之差两者之差称为称为残差残差。残差的大小是衡量拟合好坏的重要标志。残差的大小是衡量拟合好坏的重要标志。对此,我们可以有对此,我们可以有各种不同的准则各种不同的准则:(1)使残差的最大绝对值达到最小使残差的最大绝对值达到最小(2)使残差的绝对值之和达到最小使残差的绝对值之和达到最小(3)使残差的平方和达到最小使残差的平方和达到最小 对以上三种准则,前两种提法比较自然,对以上三种准则,前两种提法比较自然,但由于含有绝对值,运算不便。而用第但由于含有绝对值,运算不便。而用第(3)种来种来选取拟合曲线的方法称为选取拟合曲线的方法称为曲线拟合的最小二乘曲线拟合的最小二乘法法。直线拟合问题直线拟合问题即:即:对于给定的数据点(对于给定的数据点(xi,yi)i=0,1,n ,求直线,求直线y=a+bx,使总误差,使总误差达到最小。达到最小。(7)求解:求解:令令得方程组得方程组(8)2.线性多项式最小二乘拟合线性多项式最小二乘拟合 给定一组数据给定一组数据(xi,yi)i=0,1,n,选取多,选取多项式项式作为拟合曲线,使总误差作为拟合曲线,使总误差(9)达到最小。达到最小。求解:求解:令令得得k=0,1,m(10)这是关于未知量这是关于未知量a0,a1,am的线性方程组,称之的线性方程组,称之为为正规方程正规方程。即即其中其中 方程组可以写为方程组可以写为 R RT TRa=RRa=RT Ty y用用MATLABMATLAB作线性最小二乘拟合作线性最小二乘拟合1.1.作多项式作多项式f(x)=af(x)=a1 1x xm m+a+am mx+ax+am+1m+1拟合拟合,可利用已有程序可利用已有程序:a=polyfit(x,y,m)2.2.对超定方程组对超定方程组可得最小二乘意义下的解。可得最小二乘意义下的解。,用,用3.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拟合多项拟合多项式次数式次数即要求即要求 出二次多项式出二次多项式:中中 的的使得使得:问题三问题三:对下面一组数据作二次多项式拟合对下面一组数据作二次多项式拟合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=Ry解法解法1 1用解超定方程的方法用解超定方程的方法2)计算结果:)计算结果:=-9.8108 20.1293 -0.0317 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用多项式拟合的命令用多项式拟合的命令这便是非线性最小二乘拟合问题这便是非线性最小二乘拟合问题。给定一组数。给定一组数据据(xi,yi)i=0,1,n,我们要求总误差,我们要求总误差 达到最小。达到最小。二、非线性最小二乘拟合二、非线性最小二乘拟合 有时,拟合函数有时,拟合函数(x)=(x,a0,a1,am)中中的的待定参数待定参数a0,a1,am不能全部以线性形式出现,不能全部以线性形式出现,如指数拟合函数如指数拟合函数已知数据点已知数据点:xdata=xdata=(xdata1,xdata2,xdataxdatan n),),ydata=ydata=(ydataydata1 1,ydataydata2 2,ydataydatan n)用用MATLABMATLAB作非线性最小二乘拟合作非线性最小二乘拟合 Matlab Matlab的提供了求非线性最小二乘拟合的函数:的提供了求非线性最小二乘拟合的函数:lsqcurvefitlsqcurvefit。这个命令要先建立。这个命令要先建立M-M-文件文件fun.mfun.m,在其,在其中定义函数中定义函数f(x)f(x)。lsqcurvefitlsqcurvefit用以求含参量用以求含参量x x(向量)的向量值函数(向量)的向量值函数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 的格式:的格式:问题四问题四:用下面一组数据拟合用下面一组数据拟合 中的参数中的参数a,b,k该问题即解最优化问题:该问题即解最优化问题: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.*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,39,6.50,6.59;6.50,6.59;x0=0.2,0.05,0.05;x0=0.2,0.05,0.05;x=lsqcurvefit(curvefun1,x0,tdata,cdata)x=lsqcurvefit(curvefun1,x0,tdata,cdata)f=f=curvefun1(x,tdata)F(x F(x,tdata)=tdata)=,x=(ax=(a,b b,k)k)用命令用命令lsqcurvefitlsqcurvefit3 3)运算结果为:)运算结果为:f=0.0043 0.0051 0.0056 0.0059 0.0061 f=0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063 0.0062 0.0062 0.0063 0.0063 0.0063 x=0.0063 -0.0034 0.2542 x=0.0063 -0.0034 0.25424)结论:)结论:a=0.0063,b=-0.0034,k=0.2542例例 设测得函数设测得函数y=f(x)的数据如下:的数据如下:xi 1 2 3 4 5 6 7 8 9 yi 1.78 2.24 2.74 3.74 4.45 5.31 6.92 8.85 10.97试求试求f(x)的近似表达式。的近似表达式。求解:求解:将数据点画在图上,可以看到很像指数将数据点画在图上,可以看到很像指数函数的图形。故设函数的图形。故设取对数,得新数据:取对数,得新数据:xi 1 2 3 4 5 6 7 8 9logyi0.250 0.350 0.438 0.573 0.648 0.725 0.840 0.947 1.040在图上像一条直线,因此可设在图上像一条直线,因此可设logy=a0+a1x,目标函数目标函数正规方程组正规方程组即即logy=0.15342+0.09845x,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!