水道测量建模实验报告.doc
- 文档编号:2504092
- 上传时间:2023-05-03
- 格式:DOC
- 页数:12
- 大小:1.66MB
水道测量建模实验报告.doc
《水道测量建模实验报告.doc》由会员分享,可在线阅读,更多相关《水道测量建模实验报告.doc(12页珍藏版)》请在冰点文库上搜索。
《数学建模与数学实验》实验报告
实验2水道测量
专业、班级
学号
姓名
课程编号
81010240
实验类型
验证性
学时
2
实验(上机)地点
教七楼数学实验中心
完成时间
2015-05-26
任课教师
谷根代
评分
一、实验目的及要求
1.掌握数学软件Matlab的基本用法和一些常用的规则,能用该软件进行编程;
2.能够借助数学软件进行二维和三维网格化数据绘图;
3.理解数据生成的基本方法。
二、借助数学软件,研究、解答以下问题
依据“水道测量”所给数据和要求,给出你的分析、假设、模型和结果,列出必要的程序清单。
【解】:
(一)模型的分析
目的:
根据给定的少量采样数据,构造海底曲面。
方法:
曲面拟合.
关键:
如何生成网格数据?
(二)模型的假设
1.第一种假设
假设每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。
具体是:
每个给定数据点对未知点G的影响与它们之间距离的平方成反比。
2.第二种假设
(1)航线通常在浅水海域,海底光滑且无暗礁;
(2)给定的数据准确,每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。
具体是:
①每个给定数据点对未知点G的影响与它们之间距离的平方成反比。
②任何两个给定的数据点之间的深度的变化都影响其他未知点G的深度,这种影响取决于三个距离:
a.两个给定的数据点的连线与该未知点的垂直距离;
b.该未知点离它最近的那个数据点之间的距离;
c.两个给定的数据点之间的距离。
(3)两个给定的数据点之间深度的变化对某未知点G的影响沿两点的连线线性传播。
如图1所示。
注:
符号说明
给定的14数据点按表的顺序记
为:
未知网格点G的深度;
图1:
数据点对未知点G的影响
(三)模型的建立
1.第一种假设对应的模型
根据假设处于区域[75,200]×[-100,150]内的任意未知点G(x,y)的深度计算:
2.第二种假设对应的模型
根据假设处于区域[75,200]×[-100,150]内的任意未知点G(x,y)的深度计算:
(四)模型的求解及结果
1.第一种假设对应模型的求解
(1)代码:
先建立M文件shuishen0.m,计算未知网格点的深度:
functionz=shuishen0(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;
fori=1:
14
c=(x-x0(i))^2+(y-y0(i))^2;
d=d+1/c;
z=z+z0(i)/c;
end
z=z/d;
然后建立M文件haiditu0.m:
functionhaiditu0(m,n)
hx=(200-75)/m;
hy=(150-(-100))/n;
fori=1:
m+1
x(i)=75+(i-1)*hx;
forj=1:
n+1
y(j)=-100+(j-1)*hy;
z(i,j)=shuishen0(x(i),y(j));
end
end
z=-z';
mesh(x,y,z)
title('海底分布图');
%画海底等高线图
figure
[C,h]=contour(x,y,z);
%在从命令contour生成的二维等高线结构C的位置上添加标签h
Clabel(C,h);
title('海底等高线图')
end
最后在CommandWindow输入haiditu0(125,100)即得如下图形。
(2)结果:
(3)通过观察局部等高线图,不断缩小范围,寻找在区域[75,200]*[-50,50]内水深小于5Ft的位置。
A.代码:
①调用函数part1_haiditu0(10,5)
functionpart1_haiditu0(m,n)
hx=(140-115)/m;
hy=(20-(-2))/n;
fori=1:
m+1
x(i)=115+(i-1)*hx;
forj=1:
n+1
y(j)=-2+(j-1)*hy;
z(i,j)=shuishen0(x(i),y(j));
end
end
z=-z';
%画局部海底等高线图
figure
[C,h]=contour(x,y,z);
Clabel(C,h);
title('局部海底等高线图1:
[115,140]*[-2,20]')
end
②调用函数part2_haiditu0(10,5)
functionpart2_haiditu0(m,n)
hx=(137.9-119.3)/m;
hy=(17.6-(-1.7))/n;
fori=1:
m+1
x(i)=119.3+(i-1)*hx;
forj=1:
n+1
y(j)=-1.7+(j-1)*hy;
z(i,j)=shuishen0(x(i),y(j));
end
end
z=-z';
%画局部海底等高线图
figure
[C,h]=contour(x,y,z);
Clabel(C,h);
title('局部海底等高线图2:
[119.3,137.9]*[-1.7,17.6]')
end
B.局部等高线图
(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,计算未知网格点的深度:
functionz=shuishen(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;
fori=1:
14
forj=i:
14
ifi==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);
ifc==0
z=z+z0(j);
d=d+1;
else
z=z+((1-t)*z0(i)+t*z0(j))/c;
d=d+1/c;
end
end
end
z=z/d;
然后建立M文件haiditu.m,画海底分布图、海底等高线图:
functionhaiditu(m,n)
hx=(200-75)/m;
hy=(150-(-100))/n;
fori=1:
m+1
x(i)=75+(i-1)*hx;
forj=1:
n+1
y(j)=-100+(j-1)*hy;
z(i,j)=shuishen(x(i),y(j));
end
end
z=-z';
mesh(x,y,z)
title('海底分布图');
%画海底等高线图
figure
[C,h]=contour(x,y,z);
%在从命令contour生成的二维等高线结构C的位置上添加标签h
Clabel(C,h);
title('海底等高线图')
end
最后在CommandWindow输入haiditu(125,100)即得如下图形。
(2)结果:
(4)通过观察局部等高线图,不断缩小范围,寻找在区域[75,200]*[-50,50]内水深小于5Ft的位置。
A.代码:
①调用函数part1_haiditu(10,5)
functionpart1_haiditu(m,n)
hx=(140-120)/m;
hy=(20-(-2))/n;
fori=1:
m+1
x(i)=120+(i-1)*hx;
forj=1:
n+1
y(j)=-2+(j-1)*hy;
z(i,j)=shuishen(x(i),y(j));
end
end
z=-z';
%画局部海底等高线图
figure
[C,h]=contour(x,y,z);
Clabel(C,h);
title('局部海底等高线图1:
[120,140]*[-2,20]')
end
②调用函数part2_haiditu(10,5)
functionpart2_haiditu(m,n)
hx=(135-123)/m;
hy=(13.5-2)/n;
fori=1:
m+1
x(i)=123+(i-1)*hx;
forj=1:
n+1
y(j)=2+(j-1)*hy;
z(i,j)=shuishen(x(i),y(j));
end
end
z=-z';
%画局部海底等高线图
figure
[C,h]=contour(x,y,z);
Clabel(C,h);
title('局部海底等高线图2:
[123,135]*[2,13.5]')
end
③调用函数part3_haiditu(10,5)
functionpart3_haiditu(m,n)
hx=(134.5-123.3)/m;
hy=(13.5-2)/n;
fori=1:
m+1
x(i)=123.3+(i-1)*hx;
forj=1:
n+1
y(j)=2+(j-1)*hy;
z(i,j)=shuishen(x(i),y(j));
end
end
z=-z';
%画局部海底等高线图
figure
[C,h]=contour(x,y,z);
Clabel(C,h);
title('局部海底等高线图3:
[123.3,134.5]*[2,13.5]')
end
B.局部等高线图
(3)结果分析:
由局部海底等高线图3可以看出,等高线大于-5Ft的区域大致在矩形区域[123.3,134.5]*[2,13.5]内;所以船在区域[75,200]*[-50,50]内行船时,应避免进入[123.3,134.5]*[2,13.5]的区域。
(五)两种假设对应的模型的比较
(1)从假设的条件来看,两者的基本假设相同(每个给定的数据点均影响其它未知点G的深度,且离得越近影响越大。
具体是:
每个给定数据点对未知点G的影响与它们之间距离的平方成反比。
);
而第二种假设比第一种假设在此基础上多出两条假设。
(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
12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水道 测量 建模 实验 报告