您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 求职简历 > 数学建模-数学实验---插值及案例
插值在工程实践和科学实验中有着非常广泛而又十分重要的应用,例如,信息技术中的图像重建、图像放大中为避免图像的扭曲失真的插值补点、建筑工程的外观设计。化学工程实验数据与模型的分析、天文观测数据、地理信息数据的处理如(天气预报)以及社会经济现象的统计分析等等。插值方法在数学建模竞赛中也发挥着重要的作用,历年很多赛题中如与图形处理有关的问题很多与插值有关系,例如98年美国赛A题,生物组织切片的三维插值处理,94年A题逢山开路,山体海拔高度的插值计算,2005年的雨量预报的评价的插值计算等。在工程实践和科学实验中,常常需要从一组实验观测数据,揭示自变量x与因变量y之间的关系,使所得到的近似函数与已知数据有较高的拟合精度。通常可以采用两种方法:曲线插值和拟合.若要求这个近似函数经过已知的所有数据点,则称此类问题为插值问题。(不需要函数表达式)注:插值问题不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。二、基本概念选用不同类型的插值函数,逼近的效果就不同,一般有:拉格朗日插值(lagrange插值)分段线性插值Hermite三次样条插值。插值方法四、插值方法及MATLAB求解MATLAB自身提供了如下内部的功能函数:一维插值函数:interp1()二维插值函数:intep2()三维插值函数:interp3()n维插值函数:intern()MATLAB实现插值用MATLAB作一维插值计算一维插值的实现:yi=interp1(x,y,xi,'method')插值方法需要插值节点已知插值节点xi的插值结果‘nearest’最邻近插值;‘linear’线性插值;‘spline’三次样条插值;‘cubic’立方插值;缺省时分段线性插值.注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围.‘nearest’:最近点插值,插值点处的值取与该插值点距离最近的数据点函数值;‘linear’:分段线性插值,用直线连接数据点,插值点的值取对应直线上的值;‘spline’:三次样条函数插值,该方法用三次样条曲线通过数据点,插值点处的值取对应曲线上的值;‘cubic’or‘pchip’:分段三次Hermite插值,确定三次Hermite函数,根据该函数确定插值点的函数值。缺省时表示分段线性插值。参数‘method’的进一步说明x=0:6;y=cos(x);xi=0:.25:6;yi1=interp1(x,y,xi,'nearest');yi2=interp1(x,y,xi,'linear');yi3=interp1(x,y,xi,'spline');yi4=interp1(x,y,xi,‘pchip‘or’cubic’);plot(x,y,'ro',xi,yi1,'--',xi,yi2,'-',xi,yi3,'k.-',xi,yi4,'m:')legend(‘原始数据’,‘最近点插值’,‘线性插值’,’样条插值‘,’立方插值’)例用以上4种方法对y=cosx在[0,6]上的一维插值效果进行比较。例从1点12点的11小时内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值.解:hours=1:12;temps=[589152529313022252724];h=1:0.1:12;t=interp1(hours,temps,h,'spline');plot(hours,temps,'+',h,t,hours,temps,'r:')%作图xlabel('Hour'),ylabel('Degrees’)xy机翼下轮廓线X035791112131415Y01.21.72.02.12.01.81.21.01.6练习已知飞机下轮廓线上数据如下,求x每改变0.1时的y值.注:要求x0,y0单调;x,y可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围.z=interp2(x0,y0,z0,x,y,’method’)被插值点插值方法用MATLAB作二维插值计算插值节点被插值点的函数值‘nearest’最邻近插值;‘linear’双线性插值;‘cubic’双三次插值;缺省时双线性插值.插值节点为网格节点数据的实现:t=-2:0.5:2[x,y]=meshgrid(t);z=x.*exp(-x.^2-y.^2);[x1,y1]=meshgrid(-2:0.1:2);z1=x1.*exp(-x1.^2-y1.^2);figure(1)subplot(1,2,1),mesh(x,y,z),title(‘数据点')subplot(1,2,2),mesh(x1,y1,z1),title(‘函数图象')例用以上4种方法对在[-2,2]上的二维多项式插值效果进行比较。22()xyzxe[xi,yi]=meshgrid(-2:.125:2);zi1=interp2(x,y,z,xi,yi,'nearest');zi2=interp2(x,y,z,xi,yi,'linear');zi3=interp2(x,y,z,xi,yi,'spline');zi4=interp2(x,y,z,xi,yi,'cubic');figure(2)subplot(221),mesh(xi,yi,zi1),title(‘最近点插值')subplot(222),mesh(xi,yi,zi2),title(‘线性插值')subplot(223),mesh(xi,yi,zi3),title(‘样条插值')subplot(224),mesh(xi,yi,zi4),title(‘立方插值')例测得平板表面3×5网格点处的温度分别为:828180828479636165818484828586试作出平板表面的温度分布曲面z=f(x,y)的图形.输入以下命令:y=1:5;x=1:3;temps=[8281808284;7963616581;8484828586];mesh(x,y,temps)解:1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图.再输入以下命令:xi=1:0.2:5;yi=1:0.2:3;zi=interp2(x,y,temps,xi,yi’,'cubic');mesh(xi,yi,zi)画出插值后的温度分布曲面图.2.以平滑数据,在x、y方向上每隔0.2个单位的地方进行插值.练习山区地貌问题在某山区测得一些地点的高程如下表。平面区域为1200=x=4000,1200=y=3600)试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。XY12001600200024002800320036004000120011301250128012301040900500700160013201450142014001300700900850200013901500150014009001100106095024001500120011001350145012001150101028001500120011001550160015501380107032001500155016001550160016001600155036001480150015501510143013001200980通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较.插值点为散乱节点的实现:cz=griddata(x,y,z,cx,cy,‘method’)用MATLAB作二维插值计算注:要求cx取行向量,cy取为列向量.被插值点插值方法插值节点被插值点的函数值‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值'v4'-MATLAB提供的插值方法缺省时,双线性插值例在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深度为5英尺,在矩形区域(75,200)×(-50,150)里的哪些地方船要避免进入.xyz129140103.588185.51951057.5141.52314722.5137.585.54868688xyz157.5107.57781162162117.5-6.5-81356.5-66.584-33.599889494.作出水深小于5的海域范围,即z=5的等高线.2.在矩形区域(75,200)×(-50,150)进行插值。解:1.输入插值基点数据3.作海底曲面图%插值并作海底曲面图x=[129.0140.0103.588.0185.5195.0105.5157.5107.577.081.0162.0162.0117.5];y=[7.5141.523.0147.022.5137.585.5-6.5-813.056.5-66.584.0-33.5];z=-[48686889988949];x1=75:5:200;y1=-50:5:150;z1=griddata(x,y,z,x1,y1’,‘cubic');surf(x1,y1,z1)%插值并作出水深小于5的海域范围x1=75:1:200;y1=-50:1:150;z1=griddata(x,y,z,x1,y1’,‘cubic');contour(x1,y1,z1,[-5,-5],’r’);gridHoldonplot(x,y,'+')xlabel('X'),ylabel('Y')
本文标题:数学建模-数学实验---插值及案例
链接地址:https://www.777doc.com/doc-4574889 .html