数学建模竞赛新手教程

更新时间:2024-03-15 10:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数学建模竞赛新手教程 向为¤

(国防科技大学,湖南长沙410073) 1 数学建模竞赛是什么?

路漫漫其修远兮,吾将上下而求索

数学建模竞赛,就是在每年叶子黄的时候(长沙的树叶好像一年到头都是绿的)开始的一项数学应

用题比赛。大家都做过数学应用题吧,不知道现在的教育改革了没有,如果没有大变化,大家都应该做

过。比如说,树上有十只鸟,开枪打死一只,还剩几只,这样的问题就是一道数学应用题(应该是小学生

的吧)。正确答案应该是9 只,是吧?这样的题照样是数学建模题,不过答案就不重要了,重要的是过程。 真正的数学建模高手应该这样回答这道题。 “树上有十只鸟,开枪打死一只,还剩几只?” “是无声手枪或别的无声的枪吗?” “不是。” “枪声有多大?” “80-100 分贝。”

“那就是说会震的耳朵疼?” “是。”

“在这个城市里打鸟犯不犯法?”

“不犯。”

“您确定那只鸟真的被打死啦?” “确定。”

“OK,树上的鸟里有没有聋子?” “没有。”

“有没有关在笼子里的?” “没有。”

“边上还有没有其他的树,树上还有没有其他鸟?” “没有。”

“有没有残疾的或饿的飞不动的鸟?” “没有。”

“算不算怀孕肚子里的小鸟y?” “不算。”

“打鸟的人眼有没有花?保证是十只?”

¤作者简介:向为,SHUMO.COM 创始人之一,第一任站长兼网站设计师,曾获2001 年全国大学数学建模竞赛一等 奖,现为国防科技大学硕士研究生。 y编辑注:鸟类是卵生,不会怀孕的,:) 第1 期向为:数学建模竞赛新手教程7 “没有花,就十只。” “有没有傻的不怕死的?” “都怕死。”

“会不会一枪打死两只?” “不会。”

“所有的鸟都可以自由活动吗?” “完全可以。”

“如果您的回答没有骗人,打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不 剩。” ¢ ¢ ¢ ¢ ¢ ¢

不是开玩笑,这就是数学建模。从不同的角度思考一个问题,想尽所有的可能,正所谓智者千虑,绝

无一失,这,才是数学建模的高手。然后,数学建模高手的搭档|论文写作高手(暂时称为写手吧),会 把以上的思想用最好的方式表达出来。

一般的写手会直接把以上的文字放到论文里就完了。但是专职的数学建模论文的写手不会这样做,

她们会先分析这些思想,归整好条理;然后,她们会试着用图画来深入浅出的表达这些思想,或者再使

用一些表格;这些都是在Word 中进行,当然,如果有不喜欢Microsoft 的朋友或是国粹主义者喜欢用

WPS 什么的当然也可以。她们都是这一行的专家,相信Word 什么的使用技巧,都够她们写一篇论文的

了。她们不一定会打字,但是输入公式的速度确是一流的。

她们一定会用一种画图软件,不管是Visio 还

是SmartDraw,她们都会用来明确而清晰的表达自己的思想。

好了,有了思想,也有了表达思想的人,还少一样东西|实现。屈原老哥就有那么多的怀疑与问题,

作为数学建模竞赛的评委当然也不是好骗的,不会那么容易相信高手们的话。所以要一个编程高手实现

之(暂时称为程序员吧)。就上面所说的问题,程序员会编一个仿真的程序,实现以上所有的情况。这个

程序是这样子的,他对以上所提到的每一种情况提供相应的选项,比如说,我们可以选择枪的声音的分

贝数,可以从80 到100 分贝调节,或者干脆从0 到200db 均可,调节方式是无级变速方式,当然,电脑

太慢,在遍历的时候可能要指定步长,嘿嘿,所以,最好买个好电脑,CPU 一定不要用赛扬的,要用奔

腾的,另外,为了程序员的安全,还要用液晶的显示器,要有UPS 不间断电源,要有健康的座椅¢ ¢ ¢ ¢ ¢ ¢ 哈 哈,扯远了。仿真程序会尽一切可能按实际所限制的条件遍历所有的情况,看一看还剩下几只bird。

当然,这也不是实践。真的做的绝的,会跑去烈士公园做实验,当然得拿一把枪,可以拿塑料子弹

枪。烈士公园离我们学校很近,就在南门嘛。那儿有一个地

方养了很多鸽子。虽然不能保证刚好10 只鸽

子,也不能保证刚好都在树上,但也可以将就着做实验,然后根据实验条件做一些修正。哈哈,这样就完

美了¢ ¢ ¢ ¢ ¢ ¢ 把实践结果与仿真结果、理论结果做比较,再修改理论、仿真程序、论文,再做实验、做仿真, 再比较,再修改,递归到时间的完结。 2 建模中的分工与合作

有些同学觉得,参加数学建模竞赛的目的就是为了提高一下自己的数学水平,或是别的水

平,我不以为然。既然参加数学建模竞赛,其目的就应该是,而且是强烈的目的,去拿一等奖。

我们应该如何分工?传统的标准答案是|数学、编程、写作。但是对于每一个参加过数学建模竞赛

的同学来说,感悟各不相同,所以答案也各不相同。下面是我的一家之言,有经验的朋友也可以一起讨论 一下。 8 数模2004 年

分工不用那么明确。但有个前提是大家关系很好。不然的话,很容易产生矛盾。提醒一点,在搞竞赛

的那几天,睡不好觉,心情急躁,很容易与搭档们发生冲突。分工太明确了,会让人产生依赖思想,不愿

去动脑子。假如写手只是实现一个打字员的功能,把数模高

手的思想表达出来,那是不够的,写手要有自

己的思想,能够检查对方的错误,能够提出自己的思想。 按我的想法,理想的分工是这样的。数学建模竞赛小组中的每一个人,都能胜任其他人的工作,就

算小组只剩下她(他)一个人,也照样能够搞定数学建模竞赛。在竞赛中的分工,只是为了提高工作的效

率,做出更好的结果,并不是由于能力不适合做别的工作。 我一直都这么认为,只有能够独当一面的人,才能更好的与他人合作。其实想想也应该是这样的,在

以后的学习、工作、研究中,数学能力、编程能力、论文写作能力,哪一项是可以缺少的呢?

当然,现实并非如此。我们很难找到三个这样的人凑到一起。所以,凑合着吧。我给一点儿建议,三

个人中,一定要有一个人脑子比较活,善于思考问题,这个人,嗯,勉强归于数学方面吧;一定要有一个

人会编程序,能够实现一些算法,这就够了。另外需要有一个论文写的比较好,不过写不好也没关系,也

可以学嘛,多看一看别人的优秀论文,多用几次Word ,Visio 就成了。(强烈推荐一篇论文《Word 在论

文写作中的技巧》,这篇文章我这儿有,不过怎么让大家看到呢?我想想,网上应该能搜到吧)。

说到看论文啊,我真是觉得,优秀的论文就像《九阴真经》

一样,看了之后会让你功力大增的。大家

一定要多看,特别是想在数学建模竞赛中取得好成绩的朋友。看过论文之后,明白的不仅仅是论文要怎

么写,也在同时学到了作者的思考方式。我建议,有决心的朋友不如背几篇优秀论文。

常常有人问,搞数学建模竞赛是不是需要我学习很多知识啊?比如图论、概率论、神经网络、组合数

学、小波分析、泛函分析、最优化¢ ¢ ¢ ¢ ¢ ¢ 我的回答是,一门都不用,甚至连高等数学都可以不学,有那么 多时间去学这么多课程,还不如把时间拿来去看懂别人的论文呢。很多优秀的论文,其高明之处并不是

用了多少数学知识,而是思维比较全面,切合实际,能解决问题或是有所创新。有时候,在论文中可能碰

见一些没有学过的知识,怎么办?现学现用呗,在优秀论文中用过的数学知识就是最有可能在数学建模 竞赛中用到的,你当然有必要去翻一翻啦。

有些同学觉得,参加数学建模竞赛的目的就是为了提高一下自己的数学水平,或是别的水平,我不

以为然。既然参加数学建模竞赛,其目的就应该是,而且是强烈的目的,去拿一等奖。这样,才会取得好 成绩的。

分工就说到这儿,下面讲合作。合作真的很难,哈哈,我也

没心得。上次合作做数模,我差点儿被气

爆了,可能是我耐性不够吧。我只能说一句话|以大局为重。我想,如果合作者中有一个是小MM,肯定 就不一样了吧,希望大家合作愉快! 3 选拨的历程

百二秦关终属楚三千越甲定吞吴

请允许我引用一下我的搭挡王瑛的文章:数模之路[1](略,全文见本期第1 页)

呵呵,我只能以我们学校为例,说一下数模竞赛的选拨历程了。看过以上文章,相信大家对数模竞赛

的选拨应该有所了解。第一轮选拨是在每年的5 月1 日开始的,为期一周,任何人都可以参加,甚至不

用报名,在网上下载了题目做掉上交即可。接着是对选拨出来的同学进行培训,再进行两次选拨,选拨方

式主要以做数学建模竞赛的题目为主。最终选定的人会在9 月份参加全国大学生数学建模竞赛。在全国

竞赛中取得较好成绩的而且原意参加美国数学建模竞赛的同学,会在寒假参加美国数学建模竞赛(可惜 不能去美国,只是网上发题)。

其实选拔上的人不一定就比没选上的人强多少,关键是个机会,看自己把握了。跟我一屇的一组,在 第1 期向为:数学建模竞赛新手教程9

第一次选拔赛中没有被选上,但他们仍然坚持参加后来的培训,最后参加了2001 年的全国赛,并取得全 国一等奖。

对于王瑛的文章,我有很多不同意的地方,也请大家不要太当真,对的地方接受,不对的地方就舍

弃。首先,文中提到“数学建模真的很难”,我就不同意。之所以第一次参加比赛没有什么结果,是因为

我们没有重视,一点儿准备都没有,事前对数学建模是什么都不太了解,就开始去做全国竞赛题,当然做

不出什么。其实数学建模竞赛不过是数学应用题罢了。 今天z偷偷懒,用了别人的文章。下一章我会详细写一下我们参加全国数学建模竞赛的全过程。 4 实战

2001 年9 月未,我们终于迎来了全国大学生数学建模竞赛。那时候西山居有一个游戏刚刚出炉, 里面有一首歌叫做“爱的废墟” 蓝蓝的天空是谁的身体 让云掠夺而去留下感情的证据 当感情在你的心里慢慢的扭曲 我的爱对你是不是委屈加上了恐惧 伤心的流星凄凉的逃避

留下星星收拾这不负责任的结局

是谁把天空撕裂出星星的伤口 抹杀了我的自由还有浪漫的温柔 如果说天外的雨是星星为我落下的泪滴 我不知道在你心里是否还有受伤的痕迹 如果说心中的雨是来自一处残破的屋宇 我不知道呵护的记忆是否会成为埋藏爱的废墟

不知道为什么,我比较喜欢忧伤的感觉,就象这首歌给人的感觉一样,那样容易让人产生力量:)

在竞赛开始的前一天,我和两位搭挡就开始往招待所里面搬运必要的作战武器了。列个清单吧:

2 数学手册一套(5 册)每一册都有一个拳头那么厚 2 高等数学教科书(国防科大),概率论(复旦大学),数值分析(国防科大),MATLAB 的一些参考 书,C 语言教程(谭浩强的那本),等等等等

2 三台自己的电脑,都是赛扬533、566 之类的配置,且均有网卡、UPS 不间断电源及网线(当时用的

是同轴电缆),一个Modem。软件有MATLAB,Visual C++,Microsoft Word,Windows 2000 操作

系统(当时还没有学会Visio,其他软件好像就没有什么了) 2 从学院的机关里借了一台HP 的Laser Jet 6.0 打印机 2 ¢ ¢ ¢ ¢ ¢ ¢

这么多东西当然不是人力所能承受的,还好学校给了辆不大

不小的车。

一切准备就绪,我们就入住了学校南门外的招待所里(以前条件一般,具说现在已经改建的上档次

了,哈哈,一般人住不上)。老师告诉我们第二天早上8:00 从网上Down 题目,但不知道是谁传来了一个

消息,说晚上就有可能从网上下载到题目。于是整个晚上我们都没有睡安稳,时不时上一下网,看一看能

不能下载赛题了。但是最终还是在第二天早上8:00 才搞到题目/:)

z编辑注:本文最初在SHUMO.COM 连载,不是一次完成的

10 数模2004 年

数学建模竞赛一般有四道题目,其中有两道是本科组的,两道是专科组的x。专科组与本科组有一道

题是基本相同的。题目分别是:血管的三维重建,公交车调度问题。

这两道题得选一道做。选哪一道呢?仔细研究了一下,我们发现,公交车调度是一个最优化的问题,

而血管的三维重建偏重于算法。与是我们三人毫不犹豫的选择了血管的三维重建。附带说一句,原因是

什么呢?因为我们曾在一年前也做过一个最优化的问题,那一次是钢管运输问题,做的奇差,于是大家心

有余悸,尽量不选这类题目。

题目:http://csiam.edu.cn/mcm/mcm01/AB01.htm

血管的三维重建,遇见的第一个困难就是―怎么把那些BMP 的图像给读进来,存为二进制的矩阵?

一开始,我们去图书馆找到了《BMP 文件格式》的书,准备利用C 程序把BMP 给读出来。刚准备着手

去做的时候,我们却意外的发现MATLAB 中有现成的函数imread 可以用!真是天助我也,马上把所有

100 张BMP 图片给读了进来,把每一个切片图的BMP 文件转化为一个512×512 的0,1 矩阵。并利用

save 函数,打开ASCII 开关,把每一个矩阵存都存为了txt 的文档。这样,C 程序就可以直接使用了。

在上面的过程中,我们发觉题中给的BMP 的命名不太好,它是0,1,2?到99 的,我们把这些名字

改成了01,02,03,04,....99,把所有的文件名都改成了两位的,方便操作。

接下来就是如何得出结果了。首先我们在图书馆里查了很久,看有没有论文解决相类似的问题。不

但要查中文的,还要查英文的。顺便说一句,英语真的很重要,在网上,英文更是当之无愧的霸主,想利

用网络查找资料,英语不好则寸步难行。我们发现了医学上的CT 成像技术有可以借鉴的地方。这些资

料不一定有用,但能够很好的开拓我们的思路,花时间在上面是值得的。

然后,我们想啊想啊,不停的想来想去,并且用ACDSEE 把这100 张BMP 的图像放幻灯版似的正

放倒放,还用像皮什么的模拟成血管,弯来弯去。最后,凭直觉猜测|能够被切片包含的半径最大的圆的 半径等于原始球(形成包络的球)的半径。

于是我们开始了分头的工作,一方面一个人去证明这个结论。另一方面,开始编程实现这个想法。

在编写程序的过程中,我们还延伸出了两个假设:可以被切片包含的圆的半径一定小于等于原始球

的半径;不能被包含于切片的圆的半径一定大于原始球的半径。呵呵,利用这两个假设,就很容易的用二

分法搞定了这个程序。不过程序运行起来可不轻松。我们把程序分到三个机子上工作,每一个机子上算

一部分图,这也算是并行式算法了吧。就是这么算,也用了一个晚上的时间。在其间,我们还修改了一点

算法,重新算了一遍。的确,算法是要不断改进的,请看这句:“因为所给数据精度有限,所以包含于切片

中的以原始球的半径为半径的圆可能不止一个”,这就是在算法实现过程中发现的。一开始,是很难想到 这些细节的。

还提一个细节,用Windows console 程序,或是用DOS 程序(Turbo C)编写这个程序很难。因为我

们最小就要用到512×512 的矩阵,在算法编写的过程中,为了方便,还会用到更大的矩阵。但是DOS 是

不支持这么大的矩阵数组的,所以建议大家都编写32 位的Windows 程序。

我们提了这些假设,要完全科学的证明可真不容易。有时候,他认为理所当然的事情,我认为应该证

明出来;我认为逻辑混乱的证明,他确认为完全正确。呵呵,于是,我们争论一会儿,证明一会儿,再交

流一会儿,再争论。一次,我争论的冒火,心就好像要爆炸了,心想,这竞赛我不做了!我回学校!我为

什么要和你们合作?我为什么要迁就你们?我不干了!我强忍着,没有说话,走到窗前,仰头看了看外面

的蓝天,突然间想起了那首歌―“蓝蓝的天空,是谁的身体¢ ¢ ¢ ¢ ¢ ¢ ”,我慢慢的哼起来,一刹那,一切都清 静了。我默默的坐到电脑旁,继续编起了程序¢ ¢ ¢ ¢ ¢ ¢ 第一天晚上睡了4 个小时,那个晚上睡了2 个小时。算完之后,就只有一天了。第三天晚上,没有睡 觉,因为要赶论文。

x编辑注:现在称为甲组、乙组 第1 期向为:数学建模竞赛新手教程11

由于我们不怎么会用Word,图表的编号、排版都是纯手工的,太苦了,唯有身在其中方能体会呀。

经过了大量体力劳动,论文完工了,来不及仔细检查,就打出来上交了。刚交完,我们就发现了的图的编 号命名出了点儿错误,唉,大家谨记我们的教训! 顺便说一点儿做数学建模题的小经验。

1. 随时记下自己的假设。有时候在自己很合理的假设下开始了下一步的工作,我们就应该顺手把这个

假设给记下来,否则到了最后会搞忘记的。而且这也会让我们的解答更加严谨。

2. 随时记录自己的想法,并且不留余地的完全的表达自己的思想。在比赛后,老师讲评优秀论文时,有

很多同学常常抱怨,这个想法我也想到了的啊,就是没有表达出来,或是没有表达清楚。但常常就是

这一点别人没有表达清楚的东西,促成了一篇优秀论文。 3. 要有自己的特色。这么多数学建模竞赛论文,凭什么让老师们投自己一票?当然得有自己的特色了。 通俗点儿,就是要有自己的闪光点。 5 结束语

及荣华之未落兮,相下女之可治

新手教程写到今天,也差不多了,后面的,就不应该只是新手教程了,应该是提高教程,我能力不够,

写不出来了。还希望有高手能够把教程续继下去。这一系列教程文字拙劣、思想简单,还请大家容忍。我

建议大家再看一看董乘宇写的“数学建模竞赛中应当掌握的十类算法”[2](在编程交流版块),好好练习

练习。再多做几道数学建模竞赛的题目,再与优秀论文比照比照。

常有人问:我觉得自己什么都不会,我不会用MATLAB,我不会用C++,或是我的程序编的不精

通,我的数学知识就那么一点儿,我没写过几篇论文,我怀疑自己什么都干不成¢ ¢ ¢ ¢ ¢ ¢ 其实,谁又知道自 己一定能拿奖呢?谁能保证什么都会,什么都精通?谁又能保证以完美的状态去参加竞赛呢?不要太苛求

自己,不要对自己没有信心。即使面对的是无法超越的崖,也要勇敢的跳过去。不试,你怎么知道呢?没

有必要去学那么多的东西,数学建模竞赛,竞赛而已。 参考文献

[1] 王瑛. 数模之路[J]. 数模,2004,1:1-2.

[2] 董乘宇. 数学建模竞赛中应当掌握的十类算法[J]. 数模,2004,1:12-14

写不出来了。还希望有高手能够把教程续继下去。这一系列教程文字拙劣、思想简单,还请大家容忍。我

建议大家再看一看董乘宇写的“数学建模竞赛中应当掌握的十类算法”[2](在编程交流版块),好好练习

练习。再多做几道数学建模竞赛的题目,再与优秀论文比照比照。

常有人问:我觉得自己什么都不会,我不会用MATLAB,我不会用C++,或是我的程序编的不精

通,我的数学知识就那么一点儿,我没写过几篇论文,我怀疑自己什么都干不成¢ ¢ ¢ ¢ ¢ ¢ 其实,谁又知道自 己一定能拿奖呢?谁能保证什么都会,什么都精通?谁又能保证以完美的状态去参加竞赛呢?不要太苛求

自己,不要对自己没有信心。即使面对的是无法超越的崖,也要勇敢的跳过去。不试,你怎么知道呢?没

有必要去学那么多的东西,数学建模竞赛,竞赛而已。 参考文献

[1] 王瑛. 数模之路[J]. 数模,2004,1:1-2.

[2] 董乘宇. 数学建模竞赛中应当掌握的十类算法[J]. 数模,2004,1:12-14

本文来源:https://www.bwwdw.com/article/n118.html

Top