数学建模matlab插值与拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab程序 x=1:5; y=1:3; temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86]; figure(1); mesh(x,y,temps) xi=1:0.2:5; yi=1:0.2:3;
zi=interp2(x,y,temps,xi,yi','cubic') figure(2); mesh(xi,yi,zi) figure(3); contour(xi,yi,zi,20,'r'); [i,j]=find(zi==min(min(zi))); x=xi(j),y=yi(i),zmin=zi(i,j) [i,j]=find(zi==max(max(zi))); x=xi(j),y=yi(i),zmax=zi(i,j)
2. 二维插值 二维插值的典型命令是interp2, 其基本 格式为zi= interp2(x,y,z,xi,yi, ‘method’)。 二维插值命令的理解和使用较复杂。 x,y,z为插值点,z可以理解为被插值函 数在(x,y)处的值;xi,yi为被插值点, zi为输 出的插值结果,可理解为插值函数在(xi,yi) 处的值;x,y为向量,xi, yi为向量或矩阵, 而z和zi则为矩阵。
1. 一维插值 一维插值的典型命令是interp1, 其基本 格式为yi= interp1(x,y,xi, 'method')。 x, y为插值点,xi, yi为被插值点和插值 结果,x,y和xi,yi通常为向量;'method'表示 插值方法:'nearest'—最邻近插值, 'linear'— 线性插值, 'spline'—三次样条插值, 'cubic'— 立方插值,缺省为线性插值。
二、高次插值中的Runge现象
通常选用多项式作为插值函数。在研 究插值问题的初期,所有人都认为插值多 项式的次数越高,插值精度越高。 Runge 通过对一个例子的研究发现, 上述结论仅仅在插值多项式的次数不超过 七时成立;插值多项式的次数超过七时, 插值多项式会出现严重的振荡现象,称之 为Runge现象。
2012数学建模培训
培训内容
1. 插值与拟合; 2. 灰色系统; 3. 层次分析法;(重要) 4. 模糊数学方法;(重要) 5. 时间序列与马氏链; 6. 多元分析与Spss;(重要) 7. 数学规划与Lingo;(重要) 8. 图论模型及其Matlab程序;
9. 建模论文写作; 10. 建模案例讲评。 培训内容基本上覆盖了数学建模中大 部分常用的数学方法。我们相信,通过刻 苦钻研,努力学习,掌握了上述方法后, 必将大大提高建立数学模型和运用计算机 解决实际问题的综合能力,也一定会在全 国建模大赛中取得较好成绩。
上机软件与上机练习
众所周知,在建模竞赛中,能否熟练 使用相关数学软件是能否取得好成绩的关 键之一。因此,数学软件的培训应该是建 模培训的重要内容。 建模中常用的数学软件有Matlab,Spss, Lingo,Maple等。 由于培训时间有限,在课堂上只能简 单介绍Spss和Lingo,而Matlab 和Maple只
上述程序较复杂,说明如下: (1) interp2中的xi为行向量, 而yi'为列向 量,其实xi和yi行列不同即可。 (2) mesh和contour是二维插值及绘图中 的常用命令: plot3(空间曲线), mesh(空间曲面)和surf (空间曲面)是3 维作图中的常用命令。mesh 和surf的区别是:mesh画的是曲面网格图, 而surf画的是曲面表面图。
第一讲 插值与拟合
插值与拟合属数值分析中函数逼近内 容。在数学建模竞赛中,插值与拟合是一 种常用的数据分析手段,被公认为建模中 的十大算法之一。 本节首先通过具体问题引出插值问题 与拟合问题,然后简要介绍Matlab中的插 值和拟合的相关命令,最后给出两个应用 插值和拟合的建模实例。
本节要求学生: (1) 理解插值问题和拟合问题;在实际 中会正确地判断、选择插值或拟合方法。 (2) 了解高次插值的Runge 现象及避免 方法。 (3) 熟悉Matlab中一维插值(interp1)、 二维插值(interp2) 、散乱点插值(griddata) 及相关命令(surf,mesh,meshgrid,contour)。 (4) 熟悉Matlab中多项式拟合(polyfit)、
最小二乘曲线拟合(lsqcurvefit)命令。 (5) 掌握Matlab编程的基本知识与技能, 如数组及运算、调用,循环与控制语句, 绘图相关命令,函数(m文件)的定义和调用 等。
一、插值问题与拟合问题
引例 矿井中某处的瓦斯浓度 y 与该处 距地面的距离x有关,现用仪器测得从地面 到井下500米每隔50米的瓦斯浓度数据(xi,yi) (i=0,1,…,10),根据这些数据完成下列工作: (1) 寻找一个函数,要求由此函数可近似求 得从地面到井下500米之间任意点处的瓦斯 浓度;(2) 估计井下600米处的瓦斯浓度。
y
机翼下 轮廓线
x
Matlab程序 function plane x0=[0 3 5 7 9 11 12 13 14 15 ]; y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ]; x=0:0.1:15; y1=lagrange(x0,y0,x); y2=interp1(x0,y0,x); y3=interp1(x0,y0,x,'spline'); subplot(3,1,1)
解决第二个问题的常用方法是,根据 地面到井下 500 处的数据求出瓦斯浓度与 地面到井下距离x之间的近似函数关系f(x), 由f(x)求井下600米处的瓦斯浓度。 插值函数过已知点,拟合函数不一定 过已知点。通常, 插值主要用于求函数值, 而拟合的主要目的是求函数关系。当然, 某些问题既可以用插值也可以用拟合。
例2 在一天24小时内,从零点开始每 间隔2小时测得的环境温度数据分别为 12,9,9,10,18 ,24,28, 27,25,20,18,15,13, 推测中午1点温度,并做出24小时温度曲线 图。
Matlab程序 x=0:2:24; y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; x1=13; y1=interp1(x,y,x1,'spline') xi=0:1/3600:24; yi=interp1(x,y,xi, 'spline'); plot(x,y, '*',xi,yi) 运行结果:y1=27.87
grid title('spline') function y=lagrange(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0;
for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end
例3的程序较例2复杂,现说明如下: (1) 由于Matlab中没有Lagrange高次插 值功能(Maple有),所以程序中单独编写了 高次插值函数lagrange,然后调用; (2) 程序中使用了子图形(subplot)、添 加网格 (grid)和标题 (title)、循环和条件语 句等。 请各位通过上机理解、掌握上述命令, 特别是函数的定义及调用。
plot(x0,y0,'k+',x,y1,'r') grid
title('lagrange') subplot(3,1,2) plot(x0,y0,'k+',x,y2,'r') grid title('piecewise linear') subplot(3,1,3) plot(x0,y0,'k+',x,y3,'r')
样条插值结果
三、Matlab插值
Maple 和 Matlab 等数学软件可方便地 进行一维和二维多项式插值和样条插值, 其中Matlab的二维插值功能较强。 Maple中的插值和样条插值命令分别为 interp和spline。 例如, interp([1,3,4,7],[3,5,4,9],x); spline([1,3,4,7],[3,5,4,9],x,cubic)。 下面介绍Matlab中的插值命令。
能在上机过程中穿插介绍。 几乎所有的数学方法最终都要用数学 软件和程序实现,所以上机练习是与课堂 讲授同等重要的培训内容。 上机训练的主要目的和内容是通过练 习,掌握实现各类数学方法的数学软件和 程序。 上机所用数学软件和程序主要由教师 提供,学生只要会用即可。但需要提醒同
来自百度文库
学们注意的是,现成的软件和程序不可能 解决建模中的所有问题。通过上机训练, 掌握一些基本编程和计算技能(如用matlab 做数据处理、画图, 用maple做简单的解析 计算),对于参加建模竞赛是绝对必要的。 上机前,辅导老师会布置上机练习, 提供相关软件或程序,讲解关键步骤和程 序语句。上机过程中,辅导老师负责解答 学生的疑难问题。
p( x) 220.94 x 494.91x 381.43x
10 8 6
123.36 x 4 16.86 x 2 1
Runge现象
避免 Runge 现象的常用方法是:将插 值区间分成若干小区间,在小区间内用低 次 (二次,三次) 插值,即分段低次插值, 如样条函数插值 。
请理解、掌握程序中的每个语句,并 改变插值方法,观察图形变化。
例3 已知飞机下轮廓线上数据如下, 分别画出高次插值(Lagrange)、分段线性插 值、样条插值的飞机下轮廓线。
X Y 0 0 3 1.2 5 1.7 7 2.0 9 2.1 11 2.0 12 1.8 13 1.2 14 1.0 15 1.6
contour(x,y,z,n)的功能是作出由若干点 (x,y,z)插值而成的曲面的n条等高线。 用meshc和surfc也可在曲面下方画出等 高线。meshz和surfz是画垂帘图。 (3) 程序的最后部分为求最高(低)点, 请各位通过上机揣摩min, max特别是find的 功能。 (4) 将程序中 figure 语句去除,通过观 察结果,体味figure的作用。
例1
1 f ( x) , 1 x 1 ,节点 2 1 25 x
2i xi 1 , i 0,1,10,求插值多项式 p ( x) 。 10
用Maple (Matlab高次插值功能较弱) 可 方便地求出1~20次插值多项式,通过图形 观察插值效果,见Maple程序演示。
培训方式
由于培训内容众多且有相当难度,而 培训时间又较短,所以如果学生不事先认 真预习相关内容,那么在课堂上不可能完 全听懂老师所讲内容,大部分学生会云山 雾罩,一头雾水,从而使得培训效果大打 折扣。 综上,强烈建议学生课前认真、反复 研读授课 PPT和其它相关资料,然后带着
疑问和兴趣再听老师讲解,这样才能保证 培训效果。 培训以讲解为主,适当穿插提问、讨 论。学生普遍疑惑的问题,也可当堂咨询 老师。
'method'表示插值方法:'nearest'—最邻 近插值, 'linear'—双线性插值, 'spline'—双三 次样条插值, 'cubic'—双立方插值, 缺省为双 线性插值。
例4 测得平板表面3*5网格点处的温度 分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 做出平板表面的温度分布曲面z=f (x,y)的图 形及等温线,并求出温度最高和最低点。
第一个问题可归结为“已知函数在 x0,x1, …,xn处的值,求函数在区间[x0,xn]内其它点 处的值”,这种问题适宜用插值方法解决。 插值问题可描述为:已知函数在x0,x1, …,xn处的值y0,y1,…,yn,求函数p(x),使p(xi) = yi。 但对第二个问题不宜用插值方法,因为 600米已超出所给数据范围,用插值函数外 推插值区间外的数据会产生较大的误差。