“单纯的看书、听课只会让人昏昏欲睡,实战中的紧张感才会让人效率倍增,因此,实战是最好的学习。”
很多同学第一次接触数学建模,感觉无从下手,那么零基础的小白该怎样入门数学建模呢?
先说答案:0基础小白入门数学建模最好的办法,就是直接参加竞赛。
遇到不会的,去百度或CSDN里搜,去翻书,现学现用,瞎编也要把论文编出来。放低心态,告诉自己不追求拿奖,只为练习。
这样做几次就入门了。大一大二往往是炮灰,拿奖一般是大三时的事了。
看一些高赞回答,给你罗列了一堆书单、课程,送了你一堆资源。
但是相信我,你压根看不了几页(真的!)
只需要平时认真上课,学好高数、线代、概率论,以及计算机专业的数据结构。
学好这四门课,你就能基本吃透数学建模!
本文将从以下几点详细讲述小白如何入门数学建模:
1、什么是数学建模竞赛?
2、平时该怎么学数学建模?
3、数模论文包括哪些内容?
4、参加比赛前需要做哪些准备?
5、关于数模的常见错误认识
数学建模竞赛的基本要求:
不超过三个人的队伍(大佬一个人都行),在有限时间内(三或四天),从多个题目中选1个,建立数学模型并求解问题,最终提交一篇包括思路、模型、解题过程和结论的完整论文。
简单来说,根据题目,交一篇解决问题的论文。
数学建模竞赛的特点:
都有哪些比赛?
等级最高的就是国赛和美赛。国赛(高教社杯全国大学生数学建模竞赛)每年9月份举办,2020年共有45680队、13万多人报名参赛;美赛(美国大学生数学建模竞赛)在每年2月份左右(往往过年前几天)举办。
此外还有五一赛、电工杯、数维杯、mathorcup等省级竞赛。
如何参赛?
关注校内的数学建模协会/社团,各种竞赛报名都是由协会组织的。有些学校需要经过选拔才可以报名参加国赛和美赛,所以需要多关注协会的消息。
一定要保持好心态,感觉太难了做不出来也不要崩溃放弃,更不要想着再也不参加了。这只是比赛,拿不到奖又能怎样?大一大二往往都是炮灰,一般都是参加了多次比赛之后积累经验,到大三了拿大奖。
获奖有何用途?
一般高校都有“竞赛保研”制度,国赛一等奖可直接获得保研资格;在保考研/找工作时,简历里简述获奖论文也是亮眼的加分项。
1、不要怂,直接淦
不用平时刻意去看书,直接参赛。因为平时看资料自学的效率是非常低的,往往看不到一页就满头雾水,进而不想看了。只有在比赛时的紧张感才会让你效率倍增。
无论是什么比赛,都报名参加,不会做不要紧,现学现用,是在学不会就照搬资料里的内容(稍微改改),编论文也要编完交上去。多做几次就能找到感觉了。
2、基础知识:高数、概率论、线代、数据结构
一般大一大二很难拿大奖,好好上课,把高数、概率论、线代学好;有空学学编程,推荐python或matlab;此外数模中的很多模型和算法都是数据结构中的内容,把这门课学好后基本就会数模了。
3、文献检索
另外学会文献检索也是很重要的,数模竞赛题目往往具有一定的专业性,需要学会查到相关领域的论文并加以利用。
4、绘图、排版
更进一步,学会绘图。建议从excel作图入手,再学习matlab和python绘图,有精力可以学更专业的origin。
排版很重要,想必当年高中语文老师都强调过作文的书写,如果字写得差,内容再好别人也不愿看;数模论文同理,如果排版差,内容写得再好别人也不愿细读。
形象地说,找一本大学物理课本,其中的某一节基本就是一篇数模论文,其中的推导公式就是模型,求解过程就是算法,得出的定理就是求解结果。
当然数模论文还有自己的套路。一篇完整的数模论文,包括摘要(最重要)、问题重述、模型假设和符号说明、模型建立与求解(最长)、模型的优缺点与改进方法(不必要)和附录。
3.1 摘要
摘要部分是最重要的!
摘要部分是最重要的!
摘要部分是最重要的!
摘要就是把整篇论文的内容梗概地写出来,不宜太短或太长,一般控制在2/3页到1页。好的摘要是成功的一半!
要让读者看完摘要,就知道整篇论文研究的问题、用了什么方法、求得了什么结果,以及每一部分的大致步骤。
因为评阅老师在看论文时,会先读摘要,如果摘要里提到的模型/算法/思路引起老师兴趣,才会去后文找这部分详细的文字,其他部分都是略读,评分基本就出来了。如果摘要都写的云里雾里,老师是不会耐心去读全文的。
摘要整体框架:
本文针对XXXX问题,运用XXXX方法,建立XXXX模型,通过XXXX求得XXXX,较好地解决了本问题。
针对问题一,首先……;其次……;同时……;利用……;最终求解出XXXX;
针对问题二,……
本文所运用的模型优点有XXXX,但同时具有XXXX的缺点。可考虑XXXX来进行改进。
关键词:XXX XXX
其中一定要描述清楚建立的模型、使用到的算法和求得的结果,不必写原理,但一定要讲清楚解决问题的一步步过程和特点。
3.2 问题重述
这部分并不重要。只需要将题目简述一遍即可,不需要把题目中的具体解释和数据等写出来。
3.3 模型假设与符号说明
好的模型假设能帮你事半功倍。因为赛题都是取自现实中的实际问题,但在三天时间内不可能完美解决,因此模型假设就是将问题合理地简化。
例如2015年国赛A题是关于太阳下物体的影子长度变化。地球自转一天24小时影子长度会变化,但现实中地球每时每刻都在公转,一天内公转也会影响影子长度。
但是一天中公转不超过1°,带来的影响远远小于自转,而考虑公转的话会大大增加难度。因此可以做出合理假设:因地球一天内公转角度不超过1°,则假设地球一天内太阳直射维度不变。
符号说明则是将论文里用到的重点变量罗列出来,这一点可以参考一些物理课本上类似的部分,一般是具有全局变量意义的才在符号说明里列出来,局部变量就不必了。
3.4 模型的建立与求解
这一部分就是正文了,字数最多,有文字有图。第一次参赛的小白可以看往年的获奖论文,照着获奖论文的格式去写。
模型的建立:究竟什么是模型?
举一个简单的例子:
最简单形式:一组公式,和对公式中每个变量的解释,就是一个模型。
当然在实际做题过程中,我们往往需要先查阅资料,照搬资料写出一个简单的模型,再根据题目中的约束条件去一步步修改模型,把题目中的变量代入模型中去。
如果能画出形象的图来展示模型的思路就更好了:
模型的求解:算法就是求解方法
例如上文我们所建立的最短路径模型,该如何求解呢?查阅资料可知单源最短路径的常用算法是Dijkstra算法,那么模型的求解过程可以这样写:
算法原理:(以下内容可以百度或从常见资料里找到)
代入题目数据:
题目中究竟哪个点是起点,哪个是终点,每条路径的权值是多少,是否有负值,是否符合Dijkstra算法的使用条件,都要一一写清楚。
求解
一般是使用matlab或python、C++等编程求解,有些数据题使用excel反而更简单,注意这些都是工具,使用什么工具不重要,也不必在论文里细说,怎么好求怎么来。具体的代码要放在论文最后的附录部分,不要写在正文。
写明结果:
求解结果是哪一条路径,该路径是否符合题目要求,若不符合又该如何改进模型,或是否该使用其他算法。最好使用图或表格的形式展示结果,让读者能形象地看到结果。作图和求解过程一样可以使用任何工具,而有些示意图使用PPT反而更简单。
在 数学建模BOOM 后台,回复“大礼包”,在礼包里的文件夹“数学模型和算法/数学建模算法与程序—司守奎.pdf中有详细的模型与算法讲解。
要注意一点:并不是针对题目的每一问都要建立一个模型。如果每小问之间具有相似性、仅仅是增加了约束条件的话,完全可以全文建立一个模型,再针对每一小问进行模型改进。当然若每小问之间区别较大则需要单独建立模型。
例如2021年mathorcup的D题前两问:
可以看到,问题1和问题2基本一样,只是问题1要求生产5种卷料而问题2要求全部卷料,仅仅是目标变量变了而已,因此可以建立一个模型解决这两问,在第2问时更改目标函数即可。
3.5 模型的优缺点与改进方法
注意这一部分不是必须的,可以简单分析下前文模型的优缺点,若没有改进方法也可不写。
一般该部分可以结合查到的文献,分析正文中模型常用在什么哪种问题,又与本文所求解的问题有何区别,以及本文求解的问题具有哪些特别的约束条件,在该约束条件下模型有哪些缺点或优点,针对缺点该如何改进、针对优点又该如何推广(简述即可)。
3.6 参考文献
该部分一定要格式规范!
若要引用一篇文献,可以在百度文献中搜索论文标题,点击引用:
就可看到常用格式的引用,根据比赛要求的格式,点击复制即可。
3.7 附录
附录里要写出正文中求解时用到的代码。注意竞赛官方的要求,有些竞赛要求必须把用到的代码写到附录而且会查重,有些竞赛则不要求。
一定不要把网上搜到的代码直接复制粘贴!即使这些代码可以直接用也不行,至少也要改改变量名!曾出现过参加国赛,在省内被推到国奖,但查重发现代码是复制的,结果被取消获奖并官网通报的先例。
1、组队
数模竞赛不是单打独斗,需要队友的分工与合作。一般最开始是和室友/同学/男(女)朋友(如果有的话)组队,建议同年级的组队。
什么都不会不要紧,态度认真即可。因为自己也什么都不会,菜鸡之间组队就不要挑三拣四了。
如果参加比赛时发现队友态度消极、划水不靠谱、遇到点难的就放弃,下次比赛就换队友。多参加比赛才能找到长期合作靠谱的队友。
2、休息
数模竞赛时间有限,不仅靠脑力还要靠体力,最后一晚基本要通宵。赛前休息好,养精蓄锐,同时竞赛第一天晚上一定不要熬夜。
3、关注竞赛官方消息
一定要关注竞赛官网以及官方的QQ群,注意论文提交事项,以及其他竞赛要求,不同的比赛还是有所区别的,每年都会有人因为各种小问题而遗憾。
4、队友间沟通
有些竞赛可能从周四、周五开始,队友可能有课或其他事情,要赛前商量好什么时候一起讨论、一起做题,否则可能会闹得不愉快。
1、求推荐数模相关的书?
没有人能在从未参赛的情况下看完一本数模资料书(确信)。书是工具,不必在平时去看,比赛的时候需要用到具体的模型再去翻书。
2、多看往年获奖论文?
直接看论文是看不懂的,而且会打击自信,还没入门到放弃。只需要在参赛时找一找往年获奖论文有没有类似问题,当做文献来看。
3、如何学习Matlab等软件或python编程?
编程只是工具,不必刻意去学。如果本科课程里有编程最好,没有的话可以优先考虑excel、matlab或python。注意工具只有哪个合适、没有哪个更好,不必执拗于先学哪个。
4、竞赛期间三人分工,分别负责建模、写论文、编程?
完全错误!正确的做法是每人会什么就做什么。可能有人会第一问的模型和第二问用到的算法,或者有人擅长表述第一问的模型但不懂第二问的算法,强行分工只会使效率更低。
每个人会哪些就做哪些,而不是死板地按照建模、写论文、编程来分工。如果都感觉自己什么都不会,那就一起商量出个模型,再每个人都分配些任务去完成。