《水道测量建模实验报告(共12页).doc》由会员分享,可在线阅读,更多相关《水道测量建模实验报告(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数学建模与数学实验实验报告实验2 水道测量专业、班级 学号姓名 课程编号实验类型验证性学时2实验(上机)地点教七楼数学实验中心完成时间2015-05-26任课教师谷根代评分 一、实验目的及要求1掌握数学软件Matlab的基本用法和一些常用的规则,能用该软件进行编程;2能够借助数学软件进行二维和三维网格化数据绘图;3理解数据生成的基本方法。二、借助数学软件,研究、解答以下问题依据“水道测量”所给数据和要求, 给出你的分析、假设、模型和结果,列出必要的程序清单。【解】: (1) 模型的分析 目的:根据给定的少量采样数据,构造海底曲面。 方法:曲面拟合. 关键:如何生成网格
2、数据?(2) 模型的假设1. 第一种假设 假设每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。具体是:每个给定数据点对未知点G的影响与它们之间距离的平方成反比。2. 第二种假设 (1)航线通常在浅水海域,海底光滑且无暗礁; (2)给定的数据准确,每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。具体是: 每个给定数据点对未知点G的影响与它们之间距离的平方成反比。 任何两个给定的数据点之间的深度的变化都影响其他未知点G的深度,这种影响取决于三个距离: a. 两个给定的数据点的连线与该未知点的垂直距离; b. 该未知点离它最近的那个数据点之间的距离; c. 两个给定的数据
3、点之间的距离。 (3)两个给定的数据点之间深度的变化对某未知点G的影响沿两点的连线线性传播。如图 1所示。注:符号说明给定的14数据点按表的顺序记为:未知网格点G的深度;图1:数据点对未知点G的影响(3) 模型的建立1. 第一种假设对应的模型 根据假设处于区域75,200-100,150内的任意未知点G(x,y)的深度计算:2. 第二种假设对应的模型 根据假设处于区域75,200-100,150内的任意未知点G(x,y)的深度计算: (四)模型的求解及结果1.第一种假设对应模型的求解(1)代码:先建立M文件shuishen0.m,计算未知网格点的深度:function z=shuishen0(
4、x,y)x0=129.0,140.0,108.5,88.00,185.5,195.0,105.5,157.5,107.5,77.00,81.00,162.00,117.5,162.0;y0=7.500,141.5,28.00,147.0,22.50,137.5,85.50,-6.500,-81.00,3.000,56.50,84.00,-38.50,-66.50;z0=4.000,8.000,6.000,8.000,6.000,8.000,8.000,9.000,9.000,8.000,8.000,4.000,9.000,9.000;z=0;%未知点G的水深;d=0;for i=1:14 c=
5、(x-x0(i)2+(y-y0(i)2; d=d+1/c; z=z+z0(i)/c;endz=z/d;然后建立M文件haiditu0.m:function haiditu0(m,n)hx=(200-75)/m;hy=(150-(-100)/n;for i=1:m+1 x(i)=75+(i-1)*hx; for j=1:n+1 y(j)=-100+(j-1)*hy; z(i,j)=shuishen0(x(i),y(j); endendz=-z;mesh(x,y,z)title(海底分布图);%画海底等高线图figureC,h=contour(x,y,z);%在从命令contour生成的二维等高线
6、结构C的位置上添加标签hClabel(C,h);title(海底等高线图)end最后在Command Window输入haiditu0(125,100)即得如下图形。(2) 结果:(3) 通过观察局部等高线图,不断缩小范围,寻找在区域75,200*-50,50内水深小于5Ft的位置。A.代码:调用函数 part1_haiditu0(10,5)function part1_haiditu0(m,n)hx=(140-115)/m;hy=(20-(-2)/n;for i=1:m+1 x(i)=115+(i-1)*hx; for j=1:n+1 y(j)=-2+(j-1)*hy; z(i,j)=shu
7、ishen0(x(i),y(j); endendz=-z;%画局部海底等高线图figureC,h=contour(x,y,z);Clabel(C,h);title(局部海底等高线图1:115,140*-2,20)end调用函数 part2_haiditu0(10,5)function part2_haiditu0(m,n)hx=(137.9-119.3)/m;hy=(17.6-(-1.7)/n;for i=1:m+1 x(i)=119.3+(i-1)*hx; for j=1:n+1 y(j)=-1.7+(j-1)*hy; z(i,j)=shuishen0(x(i),y(j); endendz=
8、-z;%画局部海底等高线图figureC,h=contour(x,y,z);Clabel(C,h);title(局部海底等高线图2:119.3,137.9*-1.7,17.6)endB.局部等高线图(4)结果分析:由局部海底等高线图2可以看出,等高线大于-5Ft的区域大致在矩形区域119.3,137.9*-1.7,17.6内;所以船在区域75,200*-50,50内行船时,应避免进入119.3,137.9*-1.7,17.6的区域。2.第二种假设对应模型的求解(1)代码:先建立M文件shuishen.m,计算未知网格点的深度:function z=shuishen(x,y)x0=129.0,1
9、40.0,108.5,88.00,185.5,195.0,105.5,157.5,107.5,77.00,81.00,162.00,117.5,162.0;y0=7.500,141.5,28.00,147.0,22.50,137.5,85.50,-6.500,-81.00,3.000,56.50,84.00,-38.50,-66.50;z0=4.000,8.000,6.000,8.000,6.000,8.000,8.000,9.000,9.000,8.000,8.000,4.000,9.000,9.000;z=0;%未知点G的水深;d=0;for i=1:14 for j=i:14 if i=
10、j t=0; else t=(x-x0(i)*(x0(j)-x0(i)+(y-y0(i)*(y0(j)-y0(i)/(x0(j)-x0(i)2+(y0(j)-y0(i)2); end %垂足的坐标: a=(1-t)*x0(i)+t*x0(j); b=(1-t)*y0(i)+t*y0(j); %未知点G到垂足距离+已知点i、j之间距离+未知点G到已知点i、j距离的最小者: c=(x0(j)-x0(i)2+(y0(j)-y0(i)2+(x-a)2+(y-b)2+min(x-x0(i)2+(y-y0(i)2,(x0(j)-x)2+(y0(j)-y)2); if c=0 z=z+z0(j); d=d+
11、1; else z=z+(1-t)*z0(i)+t*z0(j)/c; d=d+1/c; end endendz=z/d;然后建立M文件haiditu.m,画海底分布图、海底等高线图:function haiditu(m,n)hx=(200-75)/m;hy=(150-(-100)/n;for i=1:m+1 x(i)=75+(i-1)*hx; for j=1:n+1 y(j)=-100+(j-1)*hy; z(i,j)=shuishen(x(i),y(j); endendz=-z;mesh(x,y,z)title(海底分布图);%画海底等高线图figureC,h=contour(x,y,z);
12、%在从命令contour生成的二维等高线结构C的位置上添加标签hClabel(C,h);title(海底等高线图)end最后在Command Window输入haiditu(125,100)即得如下图形。(2)结果:(4) 通过观察局部等高线图,不断缩小范围,寻找在区域75,200*-50,50内水深小于5Ft的位置。A.代码:调用函数 part1_haiditu(10,5)function part1_haiditu(m,n)hx=(140-120)/m;hy=(20-(-2)/n;for i=1:m+1 x(i)=120+(i-1)*hx; for j=1:n+1 y(j)=-2+(j-1
13、)*hy; z(i,j)=shuishen(x(i),y(j); endendz=-z;%画局部海底等高线图figureC,h=contour(x,y,z);Clabel(C,h);title(局部海底等高线图1:120,140*-2,20)end调用函数 part2_haiditu(10,5)function part2_haiditu(m,n)hx=(135-123)/m;hy=(13.5-2)/n;for i=1:m+1 x(i)=123+(i-1)*hx; for j=1:n+1 y(j)=2+(j-1)*hy; z(i,j)=shuishen(x(i),y(j); endendz=-
14、z;%画局部海底等高线图figureC,h=contour(x,y,z);Clabel(C,h);title(局部海底等高线图2:123,135*2,13.5)end调用函数 part3_haiditu(10,5)function part3_haiditu(m,n)hx=(134.5-123.3)/m;hy=(13.5-2)/n;for i=1:m+1 x(i)=123.3+(i-1)*hx; for j=1:n+1 y(j)=2+(j-1)*hy; z(i,j)=shuishen(x(i),y(j); endendz=-z;%画局部海底等高线图figureC,h=contour(x,y,z
15、);Clabel(C,h);title(局部海底等高线图3:123.3,134.5*2,13.5)endB.局部等高线图(3)结果分析:由局部海底等高线图3可以看出,等高线大于-5Ft的区域大致在矩形区域123.3,134.5*2,13.5内;所以船在区域75,200*-50,50内行船时,应避免进入123.3,134.5*2,13.5的区域。(5) 两种假设对应的模型的比较(1)从假设的条件来看,两者的基本假设相同(每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。具体是:每个给定数据点对未知点G的影响与它们之间距离的平方成反比。);而第二种假设比第一种假设在此基础上多出两条假设
16、。(2) 从模型建立及求解来看,第二种假设对应的模型比第一种假设对应的模型更为复杂,求解难度也更大。(3) 从求解结果来看,第一种假设对应的模型解得的不能行船的区域为119.3,137.9*-1.7,17.6,第二种假设对应的模型解得的不能行船的区域为123.3,134.5*2,13.5;显然,后者的区域范围比前者的区域范围小。三、本次实验的难点分析实事求是的分析你在本次实验中遇到的难点及可能的解决方案,这些难点可能来自建模、编程及一些其它方面的问题。这些问题的解决对你以后的进步和提高具有重要的作用和意义。1. 如何生成网格数据 不能通过仅使用插值的方法得到,必须要对模型有一个比较深入的了解,才能编写程序解决这个问题。2.画等高线图 格式一: contour(x,y,z)说明:(x,y)是平面xoy平面上矩形网格点阵的坐标矩阵,z为相应点的高度值矩阵(函数值矩阵),等高曲线是一个平面曲线。 格式二: clabel(C,h)说明:在从命令contour生成的二维等高线结构C的位置上添加标签h。四、参考文献 所列出的参考文献应是你在解答二中的问题中所引用的结果、结论或公式等,以帮助阅读者更清楚的了解你的解答细节及相关内容。1邓薇MATLAB函数速查手册,人民邮电出版社,2010专心-专注-专业