layout | title | categories | tags | date | giscus_comments | ||||
---|---|---|---|---|---|---|---|---|---|
post |
数学建模准备工作 |
|
|
2017-12-18 06:31:49 -0800 |
true |
此文是为初次接触数学建模比赛的同学准备的,同时也在一定程度上是局限于这项比赛的一点应试技巧。大致将覆盖下面几个方面的内容:
- 前置说明和题目介绍
- 数学工具
- 计算工具
你未必要有非常强的数学推导的功底,或者换言之就是在日常有很强的数学习题的解题能力。从个人角度出发,在建模这件事情上更需要的是对事物严谨的思考方式,但是在真正解决问题的过程中,要考虑到自己能力范围之内能把答案计算到什么程度。对于这问题的理解每个人在做的过程中会逐渐明白自己的局限在哪里,还能往哪里去突破,是没有准确的答案的。但是有些各个学科间共性的能力将从中得到锻炼,包括:
- 文献检索能力
- 迅速了解一门专业的背景
- 短时间内掌握和应用一种新的概念
- 完整有条理的语言表达能力
- 团队合作
- 全面地认识一个问题
- 直面自身方法的局限性
我们先从题目的角度出发,一般情况下的题目大概可以分为评价类、规划类、计算类。每种类型的题目都有它不同的切入方式,并没有高下之分。
-
评价类
评价类的题目通常不会有太高的计算要求,但是其实很考究选手的思维能力。此类题目常常是和一项政策联系在一起的,你可能需要评价一个方案将会带来什么样的影响,考量一个公司是否值得投资。你要尽可能避免各项评价方式过于主观,尽可能让你的评价方案更具有普适性,能够体现一项方案中的重点影响因素等。对于有些问题你仅仅做出评价还是不够的,还要有一定的预见能力,即在多个维度上进行观察。对选手在数据收集能力上的要求是比较高的。
-
规划类
规划类的题目通常涉及路径规划、生产量分配、资源分配等基本上都是NP难问题,往往都带有很多现实情况的约束,而且是题目中不会给出的,需要自己去思量,那样的方案是否合乎实际,这一点很重要!始终要明白我们现在解决的实际问题,要考虑到你的方法在实际应用过程中会碰到什么样的问题,对于这样或者那样的问题应该如何去解决。
-
计算类
计算类的题目通常需要比较高的计算和推导水平,像是对复杂的动力系统建立偏微分方程组,对某些形状特殊的容器和结构抽象出简单扼要的数学表达形式等。有时候列出的偏微分方程还是不可解的,基于现实条件可能需要修改模型或者通过数值方式来解决没有解析解的问题。在建模和计算两边需要很好地配合。
- 多目标优化
- 层次分析法
- 各类拟合方法
- 偏微分方程组
- 计算几何
- 运筹学
- 复杂网络
- 概率论与数理统计
- 线性代数
这需要一些计算机基础算法的同学来对计算方案的可行性进行评价和实现,在这个过程中,像是ACM竞赛中所要求的一些数据结构,对于空间复杂度时间复杂度的估算能力,最短路径求法、各类搜索算法等,这些是最为基础的要求,而后很多内容可以通过现成的库来帮助完成计算,像是复杂网络的模拟和仿真就可以通过Python的networkx或者igraph直接建图进行模拟。
-
MATLAB
这是非常常用的工具,因为已经把大部分的函数封装好了,根据所要解决的问题参照MATLAB的函数手册可以很快找到解决方案,再进一步可以在MathWork网站上找到很多提供参考的例程。同时建议形成自己的MATLAB编码习惯,多使用函数封装。
-
Python(Anaconda)
其中的Pandas和Numpy将会经常见面,至于Matplotlib模块也非常好用和MATLAB中很多函数名都是相同的,参照官方文档进行编写可以解决大多数场景下的问题可以和MATLAB的作图方法相互补充。
-
Lingo
-
Mathematics
暂时先到这里