数学建模社区-数学中国

标题: 如何备战数学建模竞赛之 MATLAB 编程 [打印本页]

作者: 浅夏110    时间: 2020-5-12 11:20
标题: 如何备战数学建模竞赛之 MATLAB 编程
2020年第十三届“认证杯”数学中国数学建模网络挑战赛,正在火热进行中,大家不要错过哦
, B+ Y+ o6 m/ n1 L" p0 h4 X详情请点击链接进行查看:http://www.tzmcm.cn/% O+ P' B$ r5 S- ^/ _8 o
2 j6 z  f  \: k1 g
MATLAB 是公认的最优秀的数学模型求解工具,在数学建模竞赛中超过 95% 的参赛队使用 MATLAB 作为求解工具,在国家奖队伍中,MATLAB 的使用率几乎 100%。虽然比较知名的数模软件不只 MATLAB,
为什么 MATLAB 在数学建模中的使用率如此之高?
作为资深的数模爱好者(从大一到研三每年都参加数模比赛,大学生数学建模大赛 2 次国一,研究生赛 1 次国一),我认为:
1. MATLAB 的数学函数全,包含人类社会的绝大多数数学知识。
2. MATLAB 足够灵活,可以按照问题的需要,自主开发程序,解决问题。
尤其最近几年,国赛中的题目都很开放,灵活度很大,这种情况,MATLAB 的编程灵活的优势越发明显。: k$ \' c9 k0 I2 V& q
在数学建模中最重要的就是模型的建立和模型的求解,当然两者相辅相成。
有过比赛经验的数模客们都有这样的一种体会,如果 MATLAB 编程弱的话,在比赛中,根本不敢放开建模,生怕建立的模型求解不出来。要知道,模型如果求解不出来,在比赛中是致命的,所以首先要避免这种问题。所以如果某个参赛队 MATLAB 弱的话,最直接的问题就是还敢建模吗?不敢放开建模,畏手畏脚,思路不敢展开,可想而知,想取得好成绩就很难了。
其实 MATLAB 编程的弱,并不是真的弱,因为 MATLAB 本身很简单,不存在壁垒,最大的问题是在心里上弱,没有树立正确的 MATLAB 应用理念,没有经历编程成功的经历,当然在比赛中就心里害怕了。这些数模客之所以没有树立对 MATLAB 使用的信心,就是因为在学习 MATLAB 的时候,就一直机械地、被动地学习知识,而没有掌握技巧去搜索知识、运用知识。要知道,MATLAB 各种知识对个人来说,永远是学不完的。如果按照这个方式,也就永远不会用 MATLAB 了。但如果掌握正确的 MATLAB 使用方法和实用的小技巧,在半小时内就可以很快地变成 MATLAB 高手了。高手的区别就只在一点,就是一直有自己的编程思路,需要什么知识就是学习什么知识,然后继续按照自己的思路编程,虽然在过程中,要不断学习,但最高效,也最容易建立强大的对 MATLAB 的使用信心。
当然数学建模还有自己的特点, 为了帮助大家更有效地备战国赛, 接下来我们将系统地梳理如何备战数学建模竞赛中的 MATLAB 编程。
1. 认识 MATLAB 在数学建模的地位
下图是整个数模过程所需要的知识矩阵。第二列是模型的求解,包括编程、算法、函数、技巧。如果说整个技能矩阵的是条蛇,那么求解正是在7寸的位置,正是连接建模与其他板块的枢纽。如果此环节弱的话,导致不敢放开思路建模,那么模型基础就不好,后面的论文什么的就都是浮云了。因此模型的求解必须重视,而 MATLAB 是模型的最有力的求解的工具,所以 MATLAB 的编程水平对数模客来说就尤其重要了。
640.webp.jpg
如果不考虑时间,只要掌握了 MATLAB 编程技巧和理念,建模中遇到的问题总可以用 MATLAB 解决的。
但毕竟比赛是有时间限制的,所以还要相应地提高速度、效率。所以为了备战数模比赛,在模型的求解环节,除了要掌握基本的 MATLAB 编程技巧,还要积累一些常用的算法、函数,这样比赛的时候不用花太多的时间去消化算法,也不用花太多时间去摸索函数用法,有效地提高解题速度。数模比赛中常用算法、函数的准备我会在之后详细介绍,基础核心却是 MATLAB 的编程理念。
2. 正确且高效的 MATLAB 编程理念
正确且高效的 MATLAB 编程理念就是以问题为中心的主动编程。我们传统学习编程的方法是学习变量类型、语法结构、算法以及编程的其他知识,因为学习时候是没有目标的,也不知道学的知识什么时候能用到,收效甚微。
而以问题为中心的主动编程,则是先找到问题的解决步骤,然后在 MATLAB 中一步一步地去实现。在每步实现的过程中,遇到问题查找知识(互联网时代查询知识还是很容易的),定位方法,再根据方法,查询 MATLAB 中的对应函数,学习函数用法,回到程序,解决问题。
在这个过程中,知识的获取都是为了解决问题的,也就是说每次学习的目标都是非常明确的,学完之后的应用就会强化对知识的理解和掌握,这样即学即用的学习方式是效率最高,也是最有效的方式。最重要的是,这种主动的编程方式会让学习者体验到学习的成就感的乐趣,有成就感,自然就强化对编程的自信了。这种内心的自信和强大在建模中会发挥意想不到的力量,所为信念的力量。
3. 数学建模竞赛中的 MATLAB 水平要求
& `7 c. ?  [' E2 r1 h# ~; n4 G
要想在全国大学生数学建模竞赛中拿到国奖, MATLAB 技能是必备的。 具体的技能水平应达到:
1)了解 MATLAB 的基本用法,包括几个常用的命令,如何获取帮助,脚本结构,程序的分节与注释,矩阵的基本操作,快捷绘图方式;
2)熟悉 MATLAB 的程序结构,编程模式,能自由地创建和引用函数(包括匿名函数);
3)熟悉常见模型的求解算法和套路,包括连续模型,规划模型,数据建模类的模型;
4)能够用 MALTAB 程序将机理建模的过程模拟出来,就是能够建立和求解没有套路的数学模型。
要想达到如上要求, 不能按照传统的学习方式一步一步地学习, 而要结合上述提到的学习理念制定科学的训练计划。
4. 有计划地快速提高 MATLAB 实战水平
如何制定科学的训练计划,快速有效地提高 MATLAB 实战水平呢?首先了解数模建模中常见的模型和求解算法,如下图所示:
640.jpg
纵观数学建模中的种种问题,可以将这些问题划分为以上 5 类,并匹配常用的方法。只要有针对性地训练这些常用的方法,那么在实际比赛中,遇到类似的问题可就得心应手多了,甚至一些程序框架可以直接套用。因此关键还要注意总结积累常用方法的 MATLAB 程序段
数学建模是非常开放的问题,对于 5 类问题,只要找 1 个题目,然后将这类问题的常用方法都用一遍,一是拓展建模思路,二是将所有方法都有 MALTAB 实现一遍,自然所得的程序将是印象非常深刻的,自然也就变成自己日后的程序库了。
详细分析这 5 类题型:
- 第二类和第四类,方法相对单一,所花的时间不用太多;
- 第一、三类,是建模竞赛中的主力题型,方法很多,应该多注意积累;
- 第五类是最近兴起的新题型,没有固定套路,也不要期望直接套用经典模型了。需要认真分析问题,客观地解决问题。这类题型,往往机理建模方法比较有效,及时从事物内部发展的规律入手,模拟事物的发展过程并建立模型,并用程序去实现。我认为机理建模和求解才是数学建模和编程的最高求解,已经达到心中无模型而胜有模型的境界了。所用的 MATLAB 编程也是最基本的程序编写技巧,关键是思想。
结合这 5 类题型和数学建模竞赛中 MATLAB 应该达到的水准,建议参考如下步骤开始准备,在之后的连载文章中也将详解相应的内容, 总结部分方法供大家借鉴:
第二讲: 了解MATLAB的基本用法, 包括几个常用的命令, 如何获取帮助, 脚本结构, 程序的分节与注释, 矩阵的基本操作, 快捷绘图方式;熟悉MATLAB的程序结构,编程模式, 能自由地创建和引用函数(包括匿名函数)。
第三讲至第八讲:熟悉常见模型的求解算法和套路, 包括连续模型, 规划模型, 数据建模类的模型。
第九讲:能够用MALTAB程序将机理建模的过程模拟出来, 就是能够建立和求解没有套路的数学模型。
第十讲至第十二讲: 真题训练, 强化实战经验。
/ u+ m2 p- ~+ J% O6 b! c
转载于:MATLAB官方微信公众号3 \+ }) t6 \1 B
! p- {% \( F* k$ k
关于网挑的含金量:
, T. K7 }  i2 H+ t; U" z; a网挑比赛属于全国大学生建模比赛预备赛,题目类型和国赛一样,参赛者获奖后(获奖率高达70%)会对以后就业有所帮助(金融、风控等),考研、保研也会有帮助,包括出国留学!
$ P/ G$ I) G5 k7 Y" i5 t! |- s8 J报名截止到5月14号零点$ l+ [( ?. r* c8 a
报名网址:http://www.madio.net/forum.php?m ... 005&fromuid=1534206
1 S4 G, G" s# L! ]: z8 t: I2 G% S: K7 ]$ H+ X! D
QQ图片20200511163103.jpg
; @8 `6 f3 O: A/ D% n
& d4 j8 N/ \1 C- V4 S详情请扫码加入我们的互动交流QQ群
6 ?* i) q5 [! `' J% W8 R 群号:1084312088.png
" J7 N1 P$ Z" }8 A$ ^: P
  _" R$ _  H: P. o0 T* L. O; B/ j8 U6 J+ C





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5