1.什么是数学建模
数学建模就是通过计算得到的结果来解释实际问题,并接受实际的检验,来建立数学模型的全过程。当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上,用数学的符号和语言作表述来建立数学模型。
2.数学建模过程--工程应用
- 模型准备
分析问题的实际背景,明确其实际意义,掌握对象的各种信息。以数学思想来包容问题的精髓,数学思路贯穿问题的全过程,进而用数学语言来描述问题。要符合数学理论,符合数学习惯,清晰准确。
- 模型假设
根据实际对象的特征和建模的目的,对问题进行必要的简化,并用精确的语言提出一些恰当的假设。
- 模型建立
在假设的基础上,利用适当的数学工具来刻划各变量常量之间的数学关系,建立相应的数学结构(尽量用简单的数学工具)。
- 模型求解
利用获取的数据资料,对模型的所有参数做出计算(或近似计算)。
- 模型分析
对所要建立模型的思路进行阐述,对所得的结果进行数学上的分析。
- 模型检验
将模型分析结果与实际情形进行比较,以此来验证模型的准确性、合理性和适用性。如果模型与实际较吻合,则要对计算结果给出其实际含义,并进行解释。如果模型与实际吻合较差,则应该修改假设,再次重复建模过程。
- 模型应用与推广
应用方式因问题的性质和建模的目的而异,而模型的推广就是在现有模型的基础上对模型有一个更加全面,考虑更符合现实情况的模型。
3.数学建模过程--数学竞赛(引自:《数学建模方法与分析》(新西兰)Mark M.Meerschaert)
(1)第一步,提出问题
(a)列出问题中涉及到的变量,包括适当的单位。
(b)注意不要混淆了变量和常量。
(c)列出你对变量所做的全部假设,包括等式和不等式。
(d)检查单位从而保证你的假设有意义。
(e)用准确的数学表达式给出问题的目标。
(2)第二步,选择建模方法
(a)选择解决你的问题的一个一般的求解方法。
(b)一般地,这一步的成功需要经验、技巧和对相关文献有一定的熟悉程度。
(3)第三步,推到模型的公式
(a)将第一步中得到的问题重新表达成第二步选定的建模方法所需要的形式。
(b)你可能需要将第一步中的一些变量名改成与第二步所用的记号一致。
(c)记下任何补充假设,这些假设是为了使在第一步中描述的问题与第二步中选定的数学结构相适应而做出的。
(4)第四步,求解模型
(a)将第二步中所选方法应用于第三步得到的表达式。
(b)注意你的数学推导,检查是否有错误,你的答案是否有意义。
(c)采用适当的技术,计算机代数系统,图形,数值计算的软件等都能扩大你能解决问题的范围,并能减少计算错误。经验总结如下:
- 统计模型:SPSS,Eviews,Stata ,都是菜单式操作,easy的。
- 数据分析:R,数据库SQL Server,IBM DB2
- 微分方程:Maple,Mathematic,MATLAB
- 运筹规划:Matlab,Lingo
- 智能算法:Matlab,R
- 时间序列:统计模型中的那些软件,或者R,Matlab
- 图像处理:Matlab,C++,OpenCV
总结: Matlab是必须的,再来个SPSS,基本上够用咯。
(5)第五步,回答问题
(a)用非技术性的语言将第四步的结果重新表述。
(b)避免数学符号和术语。
(c)能理解最初提出的问题的人就应该能理解你给出的解答。
4.常用建模算法(10种)
(1)蒙特卡罗算法:又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法。
(2)数据拟合、参数估计、插值等数据处理算法:针对大量需要处理的数据,通常使用Matlab作为工具。
(3)线性规划、整数规划、多元规划、二次规划等规划类问题:属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现。
(4)图论算法:包括最短路、网络流、二分图等算法。
(5)动态规划、回溯搜索、分治算法、分支定界等计算机算法。
(6)最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法。
(7)网格算法和穷举法:网格算法和穷举法都是暴力搜索最优点的算法,在很多实际应用中,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。
(8)连续离散化方法:将连续问题离散化后进行差分代替微分、求和代替积分等。
(9)数值分析算法:比如方程组求解、矩阵运算、函数积分等算法。
(10)图象处理算法:通常使用Matlab进行处理,OpenCV编程处理。