Hello!
这是你与「大学生科研竞赛」的第 166 次相遇。
又到了美赛栏目啦,今天小竞为大家重磅推出MATLAB在数学建模美赛中的真题应用举例,让大家更具体地对如何运用MATLAB解美赛题目形成一个更直观的认识。
真题应用举例一共分为运算和绘图两大版块,在介绍真题应用之前,小竞还为大家整理了相应的重要基础知识,可以帮助大家快速入门MATLAB,抛砖引玉~
1
MATLAB在美赛中的运算应用
01
MATLAB运算重要基础知识
(一)命令行的一般形式
在MATLAB的应用中,最基本、最简单的应用,就是在命令窗口中直接输入命令来实现计算或绘图功能。
MATLAB命令行的一般形式为:
变量=表达式 如:A=1+2
表达式 如:1+2
(二)命令行的运算编辑
1.运用(>>)
启动MATLAB后,就可以利用MATLAB工作。由于MATLAB是一种交互式语言,随时输入命令,即时给出运算结果是它的工作方式。
在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:
>> (5*2+1.3-0.8)*10/25
ans =4.2000
敲黑板!
①ans 是一个保留的MATLAB字符串,它表示上面一个式子的返回结果,用于结果的缺省变量名。
②'>>'是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由于编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。
③MATLAB中的常用运算符号为:加(+)、减(-)、乘(*)、除(/)以及幂次运算(^)。
2.运用变数赋值
我们也可将上述运算式的结果设定给另一个变数x:
x = (5*2+1.3-0.8)*10^2/25
x = 42
此时MATLAB会直接显示x的值。
若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可,如下所示:
y = sin(10)*exp(-0.3*4^2);
若要显示变数y的值,直接键入y即可:
>>y
Y=-0.0045。
02
MATLAB在美赛真题中的运算应用
以2017年美赛B题为例,真题翻译如下图所示:
图1 2017年美赛B题题目
赛题大意为根据一些限制条件提出一种优化的高速路收费站建设方案,包括收费区域的形状、大小以及合并车道方案。当年解题的热门思路之一为运用元胞自动机算法进行模拟。
元胞自动机实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。已被应用于物理模拟、生物模拟等领域。
在B题中,若想运用元胞自动机进行模拟,则势必要解决繁琐的运算问题,这种大量级的运算在赛事期间是不可能通过手工计算得出理想结果的,运用EXCEL等基础软件同样非常耗时耗力。
而在MATLAB中,元胞可以被理解为矩阵中的一点或多点组成的方形块,一般用矩阵中的一点代表一个元胞。因此,我们可以利用MATLAB编程,将元胞自动机繁复的运算变得可行而迅速。下图所示是一位参赛者的代码。
图2MATLAB元胞自动机部分代码
2
MATLAB在美赛中的绘图应用
01
MATLAB绘图重要基础知识
(一)二维图形的绘制
因MATLAB的图形是通过描点、连线来实现的,故在绘制简单平面图形时需要提供图形上的一系列点的横纵坐标,然后将这些点链接起来。其具体图形绘制命令为:
plot(X,Y,’S’)
其中X,Y是向量,分别是由所有点的横坐标和纵坐标构成的向量,S是一字符串,用于确定线的颜色,点的绘制形状及点与点的链接方式。
通过在命令窗口中输入help plot命令可以查看S的具体编写方式。Y有时可以是一矩阵,届时将对同一自变量绘制多条曲线。
例1.画出一条正弦曲线和一条余弦曲线。
解:
>>x=0:pi/10:2*pi; %构造向量
>>y1=sin(x); %构造对应的y1坐标
>>y2=cos(x); %构造对应的y2坐标
>>plot(x,y1,x,y2) %画出一个以x为横坐标,y1,y2为纵坐标的图形
图3 例1绘图结果
例2.某次考试学生成绩优秀的占8%,良好的占20%,中等的占36%,及格的占24%,不及格的占12%。分别用饼图和条形图表示。
解:
>> x=[8 20 36 24 12];
>> subplot(221);pie(x,[1 0 0 0 1]);
>> title('饼图');
>> subplot(222);bar(x,'grpup');
>> title('垂直条形图');
>> subplot(223);bar(x,'stack');
>> title('累加值为纵坐标的垂直条形图');
>> subplot(224);barh(x,'group');
>> title('水平条形图');
图4 例2绘图结果
(二)曲线控制的命令
在使用plot等命令绘制曲线时可以指定曲线的颜色、线型和数据点图标。基本的调用格式为:
plot(x,y,'color line-style marker')。
表1MATLAB绘图颜色调用命令
字符 | 颜色 | 字符 | 颜色 |
b | 蓝色 | m | 紫红色 |
c | 青色 | r | 红色 |
g | 绿色 | w | 白色 |
k | 黑色 | y | 黄色 |
表2MATLAB绘图数据点形式
标记符号 | 数据点形式 | 标记符号 | 数据点形式 |
. | 实心圆点 | > | 大于号 |
o(字母) | 空心圆点 | < | 小于号 |
x | 叉号 | s | 正方形 |
+ | 加号 | d | 菱形 |
* | 星号 | h | 六角星 |
v | 向下的三角形 | p | 五角星 |
^ | 向上的三角形 |
例3.用红色、点连线、叉号画出正弦曲线。
解:
>>x=0:0.2:8;
>>y=sin(x);
>>plot(x,y,'r:x')
图5 例3绘图结果
02
MATLAB在美赛真题中的绘图应用
以2017年美赛F题为例,赛题大意为:在一系列条件的限制下,请建立科学的火星移民计划模型,并进行多方面效益分析。
在这个赛题中,许多参赛者都对火星移动轨迹进行了图片式的可视化展现,常见的一种方法为从文献资料中搜索图片直接搬运到论文当中,这种方法若能处理好整篇图文的统一性、融合度,也是可取的。
但另一种更出色的方法为自行通过模拟汇出图形,这种方法通过MATLAB编制绘图代码便可以轻松实现。
如:t=-pi:pi/500:pi;
Y=tan(sin(t))-sin(tan(t));comet(t,y)
图6 火星轨迹绘图结果
以上就是对MATLAB在美赛真题中主要应用的介绍,一是运算,二是绘图,这也是常说掌握了MATLAB就基本足够解决美赛题目的原因之一。前者是论文的支柱,后者是论文的血肉,两者相辅相成,对比赛结果均起着非常重要的作用。
小竞推荐大家在学习MATLAB时,一是掌握必备知识点的学习,这可以通过工具书、网络资源进行自学;二是要学以致用,通过研究往年真题对MATLAB的需求,在学习内容上有所侧重,这样才可以事半功倍。
联系客服