QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 702|回复: 0
打印 上一主题 下一主题

数学建模专栏 | 开篇:如何备战数学建模竞赛之 MATLAB 编程

[复制链接]
字体大小: 正常 放大
杨利霞        

5250

主题

81

听众

16万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-3-26 15:27 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    / |8 ]7 V' n, L+ h9 F6 s

    1 ^- r# x/ V$ x. S( l数学建模专栏 | 开篇:如何备战数学建模竞赛之 MATLAB 编程+ _, n- G5 v6 O$ x

    2 i5 s* E2 S6 `# e8 A

    作 者 简 介
      w/ W& ]- G" C* j5 z6 ~# Z

    卓金武,MathWorks中国高级工程师,教育业务经理,在数据分析、数据挖掘、机器学习、数学建模、量化投资和优化等科学计算方面有多年工作经验,现主要负责MATLAB校园版业务。曾2次获全国大学生数学建模竞赛一等奖,1次获全国研究生数学建模竞赛一等奖。

    MATLAB 是公认的最优秀的数学模型求解工具,在数学建模竞赛中超过 95% 的参赛队使用 MATLAB 作为求解工具,在国家奖队伍中,MATLAB 的使用率几乎 100%。虽然比较知名的数模软件不只 MATLAB,

    为什么 MATLAB 在数学建模中的使用率如此之高?

    作为资深的数模爱好者(从大一到研三每年都参加数模比赛,大学生数学建模大赛 2 次国一,研究生赛 1 次国一),我认为:

    1. MATLAB 的数学函数全,包含人类社会的绝大多数数学知识。

    2. MATLAB 足够灵活,可以按照问题的需要,自主开发程序,解决问题。

    尤其最近几年,国赛中的题目都很开放,灵活度很大,这种情况,MATLAB 的编程灵活的优势越发明显。9 r! U. p  `: E

    在数学建模中最重要的就是模型的建立和模型的求解,当然两者相辅相成。

    有过比赛经验的数模客们都有这样的一种体会,如果 MATLAB 编程弱的话,在比赛中,根本不敢放开建模,生怕建立的模型求解不出来。要知道,模型如果求解不出来,在比赛中是致命的,所以首先要避免这种问题。所以如果某个参赛队 MATLAB 弱的话,最直接的问题就是还敢建模吗?不敢放开建模,畏手畏脚,思路不敢展开,可想而知,想取得好成绩就很难了。

    其实 MATLAB 编程的弱,并不是真的弱,因为 MATLAB 本身很简单,不存在壁垒,最大的问题是在心里上弱,没有树立正确的 MATLAB 应用理念,没有经历编程成功的经历,当然在比赛中就心里害怕了。这些数模客之所以没有树立对 MATLAB 使用的信心,就是因为在学习 MATLAB 的时候,就一直机械地、被动地学习知识,而没有掌握技巧去搜索知识、运用知识。要知道,MATLAB 各种知识对个人来说,永远是学不完的。如果按照这个方式,也就永远不会用 MATLAB 了。但如果掌握正确的 MATLAB 使用方法和实用的小技巧,在半小时内就可以很快地变成 MATLAB 高手了。高手的区别就只在一点,就是一直有自己的编程思路,需要什么知识就是学习什么知识,然后继续按照自己的思路编程,虽然在过程中,要不断学习,但最高效,也最容易建立强大的对 MATLAB 的使用信心。

    当然数学建模还有自己的特点, 为了帮助大家更有效地备战国赛, 接下来我们将系统地梳理如何备战数学建模竞赛中的 MATLAB 编程。

    1. 认识 MATLAB 在数学建模的地位

    下图是整个数模过程所需要的知识矩阵。第二列是模型的求解,包括编程、算法、函数、技巧。如果说整个技能矩阵的是条蛇,那么求解正是在7寸的位置,正是连接建模与其他板块的枢纽。如果此环节弱的话,导致不敢放开思路建模,那么模型基础就不好,后面的论文什么的就都是浮云了。因此模型的求解必须重视,而 MATLAB 是模型的最有力的求解的工具,所以 MATLAB 的编程水平对数模客来说就尤其重要了。


    ! @: \1 ]/ T. x) I7 p3 j# A

    如果不考虑时间,只要掌握了 MATLAB 编程技巧和理念,建模中遇到的问题总可以用 MATLAB 解决的。

    但毕竟比赛是有时间限制的,所以还要相应地提高速度、效率。所以为了备战数模比赛,在模型的求解环节,除了要掌握基本的 MATLAB 编程技巧,还要积累一些常用的算法、函数,这样比赛的时候不用花太多的时间去消化算法,也不用花太多时间去摸索函数用法,有效地提高解题速度。数模比赛中常用算法、函数的准备我会在之后详细介绍,基础核心却是 MATLAB 的编程理念。

    2. 正确且高效的 MATLAB 编程理念

    正确且高效的 MATLAB 编程理念就是以问题为中心的主动编程。我们传统学习编程的方法是学习变量类型、语法结构、算法以及编程的其他知识,因为学习时候是没有目标的,也不知道学的知识什么时候能用到,收效甚微。

    而以问题为中心的主动编程,则是先找到问题的解决步骤,然后在 MATLAB 中一步一步地去实现。在每步实现的过程中,遇到问题,查找知识(互联网时代查询知识还是很容易的),定位方法,再根据方法,查询 MATLAB 中的对应函数,学习函数用法,回到程序,解决问题。

    在这个过程中,知识的获取都是为了解决问题的,也就是说每次学习的目标都是非常明确的,学完之后的应用就会强化对知识的理解和掌握,这样即学即用的学习方式是效率最高,也是最有效的方式。最重要的是,这种主动的编程方式会让学习者体验到学习的成就感的乐趣,有成就感,自然就强化对编程的自信了。这种内心的自信和强大在建模中会发挥意想不到的力量,所为信念的力量。

    3. 数学建模竞赛中的 MATLAB 水平要求9 u" l. M4 N2 c2 C6 u3 G( x: {

    要想在全国大学生数学建模竞赛中拿到国奖, MATLAB 技能是必备的。 具体的技能水平应达到:

    1)了解 MATLAB 的基本用法,包括几个常用的命令,如何获取帮助,脚本结构,程序的分节与注释,矩阵的基本操作,快捷绘图方式;

    2)熟悉 MATLAB 的程序结构,编程模式,能自由地创建和引用函数(包括匿名函数);

    3)熟悉常见模型的求解算法和套路,包括连续模型,规划模型,数据建模类的模型;

    4)能够用 MALTAB 程序将机理建模的过程模拟出来,就是能够建立和求解没有套路的数学模型。

    要想达到如上要求, 不能按照传统的学习方式一步一步地学习, 而要结合上述提到的学习理念制定科学的训练计划。

    4. 有计划地快速提高 MATLAB 实战水平

    如何制定科学的训练计划,快速有效地提高 MATLAB 实战水平呢?首先了解数模建模中常见的模型和求解算法,如下图所示:

      T9 s; K! C# e

    纵观数学建模中的种种问题,可以将这些问题划分为以上 5 类,并匹配常用的方法。只要有针对性地训练这些常用的方法,那么在实际比赛中,遇到类似的问题可就得心应手多了,甚至一些程序框架可以直接套用。因此关键还要注意总结积累常用方法的 MATLAB 程序段。

    数学建模是非常开放的问题,对于 5 类问题,只要找 1 个题目,然后将这类问题的常用方法都用一遍,一是拓展建模思路,二是将所有方法都有 MALTAB 实现一遍,自然所得的程序将是印象非常深刻的,自然也就变成自己日后的程序库了。

    详细分析这 5 类题型:

    - 第二类和第四类,方法相对单一,所花的时间不用太多;

    - 第一、三类,是建模竞赛中的主力题型,方法很多,应该多注意积累;

    - 第五类是最近兴起的新题型,没有固定套路,也不要期望直接套用经典模型了。需要认真分析问题,客观地解决问题。这类题型,往往机理建模方法比较有效,及时从事物内部发展的规律入手,模拟事物的发展过程并建立模型,并用程序去实现。我认为机理建模和求解才是数学建模和编程的最高求解,已经达到心中无模型而胜有模型的境界了。所用的 MATLAB 编程也是最基本的程序编写技巧,关键是思想。

    结合这 5 类题型和数学建模竞赛中 MATLAB 应该达到的水准,建议参考如下步骤开始准备,在之后的连载文章中也将详解相应的内容, 总结部分方法供大家借鉴:

    第二讲: 了解MATLAB的基本用法, 包括几个常用的命令, 如何获取帮助, 脚本结构, 程序的分节与注释, 矩阵的基本操作, 快捷绘图方式;熟悉MATLAB的程序结构,编程模式, 能自由地创建和引用函数(包括匿名函数)。

    第三讲至第八讲:熟悉常见模型的求解算法和套路, 包括连续模型, 规划模型, 数据建模类的模型。

    第九讲:能够用MALTAB程序将机理建模的过程模拟出来, 就是能够建立和求解没有套路的数学模型。

    第十讲至第十二讲: 真题训练, 强化实战经验。


    $ Y- o# H  w* M
      e. W" ]9 A& C! q, Y. E2 r  w- ?" E
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-26 22:27 , Processed in 0.278226 second(s), 50 queries .

    回顶部