在网上应用matlab代码后,如何将数学建模修改成自己的代码?

三次与模联国奖擦肩而过,一次有两次全国比赛(第三次是一个负责编程的同学帮了我大忙)。下面简单说一下编程的体验。现在快到美国了,时间不多了。最高票答案适合长时间准备(至少从校赛到全国赛有一个周期,所以我就说说剩下不到一个月的时间如何准备编程工作)。

编程的学生主要是从建模学生的思路中产生结果,也就是输出一定的东西,可以是图形、表格、数据等等。随便打开一本数学模型书(比如司守奎老师写的《数学建模算法与应用》这本书),就会被Matlab、lingo之类的代码吓到,尤其是对于以前编程不多的同学。所以很多同学会觉得编程在数字和模拟这三个部分非常难掌握。

其实负责编程的同学,并不是说代码比谁写得好就长,而是要给建模的同学提供一个结果(只从数学模型上得奖(从功利角度)。不管结果是好是坏,即使有结果,也要在游戏结束时给建模队友一个来自过去的“答案”,所以在做一些数学模型题的时候可以用一些“傻子”。这个软件可以解决很多统计学上的问题,比如2012国酒的评价,就是SPSS的代表。所以,不如说你应该会使用相关软件,这样模型才能输出一个好的结果。还有绘图软件Origin。在一些简单的绘图中,可以用Origin代替Matlab。一般来说,问题不太复杂的情况下,没必要用Matlab。还有一个软件叫Visio,是画流程图的利器。比如写程序的时候附上程序框图,或者用系统动力学解决一个问题的时候画系统流程图,效果都很好(PS:第一次学建模的同学,无论如何都要在Matlab上下功夫,就算掌握不了,也要知道怎么把别人的优秀程序修改给我们用)。

如果你真的想在短时间内学会一门真正需要编程的语言,你应该选择Matlab。虽然你不可能在短时间内掌握这门语言,但是只要你知道Matlab的语法规则和一些基本的函数,一些基本的工具箱就足够了。这里有两本书,一本是《Matlab自学一体机》,里面基本包含了可用的函数,至少是基本的函数。关于数学模型,可以看司守奎老师写的《数学建模算法与应用》一书,给出了常用模型的代码。还有一个重点,就是在比赛前多读一些别人写的优秀论文。无论是全国赛还是美国赛,都有优秀的作文。看看别人的论文,别人的代码,试着找点灵感。

比赛过程中,如果有东西卡住了,不要捂头。你甚至应该去相关论坛寻找一些提示。当然Matlab自带的帮助文档也挺不错的。

总之,LaTeX是用来写作和排版的。虽然和编程语言差不多,但是不建议程序员学习。应该鼓励写作的学生学习LaTeX。编程的学生应该和建模的学生很好的合作来赢得比赛冠军。

看到数学建模老司机们的回答(全国一校优秀论文获得者,深圳杯获得者,SAS竞赛冠军),SPSS在近几年的全国比赛(2014,2015,2016)中确实很难用,问题基本都是纯物理问题(2014)。至少是全国赛的题,一般需要自己建模,最后用Matlab实现。而一些非理科生往往因为对建模实力的考察过多而不敢上前。

r、Python、SAS是数据分析时代的新兴语言,有空可以去学学。因为有一个SAS数据分析大赛(由汇丰银行赞助,SAS公司赞助)做的不错,可以在这个比赛中学习SAS,练习。参加过相当多的比赛,但还是发现SAS组织的这次数据分析比赛(尤其是总决赛)给了我非常好的体验。

事实上,如果仅从获奖的角度来看,有些问题,尤其是中国赛的B题、美国赛的E题和F题,对程序的要求并不高,可以适当运用现有的模型理论来分析具体问题。但是从2014开始,基本上每年都很难找到可以直接应用于全国竞赛A题的模型(虽然2016知网上有很多现成的研究成果,但往往不是太复杂,或者和题目分析的背景有点出入),这也是我之前说的没有经历过理工科训练的同学容易胆怯的原因。所以我觉得要想做好A题,近几年A题越来越需要自己建模,建议有能力改编现有程序。