购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 简单工程应用分析

MATLAB在工程上的应用较多,例如机械机构优化分析、机械控制、通信领域、数值计算等方面。MATLAB因其强大的数据处理能力,逐渐成为工程应用领域主导辅助工具。本节主要应用MATLAB解决简单的工程问题,例如机械中的内燃机转角与升程之间的插值拟合关系、海上航行区域警示线问题、物种竞争模型的求解等。这类问题的优化求解对解决复杂的工程问题起着关键的作用。

1.5.1 内燃机转角与升程插值模型

内燃机的气门开启状态是由与发动机转轴连接的凸轮来控制的,气门开启的大小决定了发动机的性能。因此,驱动气门的凸轮加工曲线是非常重要的。表1-1 给出了某凸轮转角与升程的几组实测数据。为了机床加工的需要,试确定ϕ从91°到130°每隔1°的升程。

表1-1 内燃机转角与升程的测量数据

解:这是个一元函数插值问题。运用 MATLAB 软件,采用双三次插值法“cubic”,易求得ϕ从91°到130°每隔1°的升程,如表1-2所示。

表1-2 采用“cubic”插值结果表

续表

根据表1-2,ϕ从91°到130°每隔1°的升程图像如图1-11所示。

图1-11 内燃机转角与升程的插值曲线图

从图1-11 中可看出,插入值与原函数值组成的图像能很好地吻合,故双三次插值法“cubic”较精确。

程序如下。

clc,clear,close all

x=[91,105,110,115,120,124,128];

h=[0,1.0869,1.9710,2.7555,3.3986,4.9073,8.3409];

j=1;

for i=91:130

y(1,j)=interp1(x,h,i,'cubic');

j=j+1;

end

x1=91:130;

plot(x,h,'r')

hold on

plot(x1,y,'o')

1.5.2 航行区域警示线模型

海上运输涉及世界上各个水域。由于船舶航行的航线、区域、季节的不同,其海上风险也不一样。因此,为了避免特殊风险,船舶不能驶入某些区域或一定时间内的某些地区,相关部门也会根据一定时间内该区域的水位情况予以警示。本小节针对航行区域警示线模型进行分析求解。

某海域上各种吨位的船只频繁地经过。为了保证船只的航行安全,有关机构在低潮时对水深进行了测量。表1-3给出了测量数据。

表1-3 水道水深的测量数据

表1-3中,(x,y)为测量点,z为(x,y)处的水深(单位:米)。船的吨位可以用其吃水深度来反映,分为4吨、4.5吨、5吨和5.5吨4档。

现在,航运部门要在矩形海域(75,200)×(−50,150)上为不同吨位的航船设置警示标志。根据测量数据描述该海域的地貌,并绘制不同吨位的警示线,供航运部门使用。相邻监测点之间地势没有剧烈变化;测量时该海域潮高没有明显变化;忽略大气压引起的水位变化,以及测量仪器引起的测量误差;题中数据基本符合实际情况。

航行区域的警示线关系船只航行安全,即由于不同船只载重的不同,吃水深度也不同,因此行船需要选择合适的航道以满足其航行需要。由题意,把水深z作为x,y的函数,需要根据已知数据运用插值函数的求解算法,通过求解,作地貌和等深线图,由图能清楚地了解该海域的复杂地貌。

解:由题意知,船吃水深度划分为4档。为了使过往船只能够清楚该海域的水深情况,需要根据等深线的不同,标注不同吃水深度船只的警示线。使用MATLAB操作如下。

Step1:输入表1-3中的数据,对数据进行meshgrid ( )操作,使数组x和y产生网格,以绘制3D曲面;

Step2:x和y平面设置好后,用griddata ( )命令对矩形海域内的格点样条函数内插,得到相应的水深z;

Step3:运用mesh ( )作图命令,绘出该海域的地貌图,如图1-12(a)所示;

Step4:等高线易于观察地形地貌,使用contour ( )命令绘制等位线,并用clabel ( )命令标识等位线所处位置的深度值,如图1-12(b)所示;

Step5:对于特殊等位线在航海警示线上的应用,应特殊标记,再次运用contour ( )命令绘制警示线,运用gtext ( )命令标识不同吨位的警示线,如图1-12(c)所示,航行船只应该予以避让。

从图1-12中可看出,该地貌高低起伏,最大水位为10米,最低水位为4米。根据警示线标识情况,航运部门可对船只进行宏观调控,并对过往船只给以提示,避免发生安全事故。

图1-12 航行区域警示线图

程序如下。

clc,clear,close all

x=[129,140,103.5,88,185.5,195,105.5,157.5,107.5,77,81,162,162,117.5];

y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];

z=[4,8,6,8,6,8,8,9,9,8,8,9,4,9];

x1=75:0.5:200;

y1=-50:0.5:150;

[x2,y2]=meshgrid(x1,y1);

z2=griddata(x,y,z,x2,y2,'v4');   % 'v4'MATLAB 4格点样条函数内插

subplot(1,3,1)

mesh(x2,y2,z2);

hold on

C=contour(x2,y2,z2);     %绘制等位线

clabel(C);

subplot(1,3,2)

C=contour(x2,y2,z2);     %绘制等位线

clabel(C);       %等位线标识

[C,d]=contour(x2,y2,z2);

clabel(C,d,'manual');

grid on

hold on

subplot(1,3,3)

contour(x2,y2,z2,[4,4,4.5,4.5,5,5,5.5,5.5]); %绘制不同吨位的警示线

>> title('警示线图');

>> hold on

xlabel('X'),ylabel('Y');

grid on

gtext('4吨的警戒线');

gtext('4.5吨的警戒线');

gtext('5吨的警戒线');

gtext('5.5吨的警戒线'); vx949TyzUK/ekM7dyR1QJy+Zv/E6xUfkSafGXC+9WpBd31xEYGGoLTpehTdARmIv

点击中间区域
呼出菜单
上一章
目录
下一章
×