数学建模一般用哪种软件比较好?MATLAB是否有局限性
1个回答
2016-03-04
展开全部
数学建模的覆盖面太广泛,针对不同的建模方法,一般需要不同的软件支持。
如果做数据分析翻来覆去地折腾各种数据画图之类的(例如回归、插值、数值微积分等),那么python显然非常有用,各种扩展包又快扩展性又好(比如Numpy, SciPy, Pandas),写出来的程序短小精炼,易于修改和维护。
如果你要建数学模型,那么最好是线性模型,然后用 @崔友志 提到的CPLEX Optimizer,CPLEX
支持用多种语言书写,包括C,C++,JAVA,MATLAB,你只需对其中某种语言比较熟悉就可以在比较短的时间内写出模型文件并求解。如果你对这些都
不熟悉,那么有另两款软件GAMS/AMPL,他们似乎是嵌入了很多高效的solver进去,然后用统一的比较直接的语法规则来表达模型,但缺点是可能需
要license,免费版本只能求解一定规模以内的模型,同时他们也可以解一些较为简单的非线性模型。但如果你写出来的是非线性模型,然后规模还很大或者
比较复杂,那么祝福你,需要想一些比较fancy的方法了。。。(我也不知道啥软件比较适用)
如果要进行符号运算,例如求解符号微积分、求微分方程的解析解,那么Wolfram Mathematica必然是最为适用的,它的语法规则也非常直接(它的目标是自然语言)。这个软件对应一个网站Wolfram|Alpha,可以进行单行代码运行,我经常使用它做一些单次的运算,可以尝试一下。当初我和室友参加美赛,程序就是他用mathematica编写的,效果很好,而且考虑到我们当时的需求,真的是只能用mathematica来写。
至
于MATLAB,基本上面的这些它都能做,但我个人的经验告诉我在数学建模上,matlab“广而不是太专”,如果只是一些相对简单但需要多种分析求解方
法的问题,它很好用。当然了,如果涉及到大型矩阵运算,或者可以利用自带的一些工具箱,那matlab还是非常强大的(要体会到matlab的强大感觉也
要花不少时间),或者,你事先为一些特定的问题或者特定的算法准备一些代码文件。(这一段纯属个人意见)
但不管怎么说,现在科研上我用的最多的还是MATLAB和Cplex,偶尔用用python。需要什么就学习什么,数学建模不是目的,解决问题才是目的。
如果做数据分析翻来覆去地折腾各种数据画图之类的(例如回归、插值、数值微积分等),那么python显然非常有用,各种扩展包又快扩展性又好(比如Numpy, SciPy, Pandas),写出来的程序短小精炼,易于修改和维护。
如果你要建数学模型,那么最好是线性模型,然后用 @崔友志 提到的CPLEX Optimizer,CPLEX
支持用多种语言书写,包括C,C++,JAVA,MATLAB,你只需对其中某种语言比较熟悉就可以在比较短的时间内写出模型文件并求解。如果你对这些都
不熟悉,那么有另两款软件GAMS/AMPL,他们似乎是嵌入了很多高效的solver进去,然后用统一的比较直接的语法规则来表达模型,但缺点是可能需
要license,免费版本只能求解一定规模以内的模型,同时他们也可以解一些较为简单的非线性模型。但如果你写出来的是非线性模型,然后规模还很大或者
比较复杂,那么祝福你,需要想一些比较fancy的方法了。。。(我也不知道啥软件比较适用)
如果要进行符号运算,例如求解符号微积分、求微分方程的解析解,那么Wolfram Mathematica必然是最为适用的,它的语法规则也非常直接(它的目标是自然语言)。这个软件对应一个网站Wolfram|Alpha,可以进行单行代码运行,我经常使用它做一些单次的运算,可以尝试一下。当初我和室友参加美赛,程序就是他用mathematica编写的,效果很好,而且考虑到我们当时的需求,真的是只能用mathematica来写。
至
于MATLAB,基本上面的这些它都能做,但我个人的经验告诉我在数学建模上,matlab“广而不是太专”,如果只是一些相对简单但需要多种分析求解方
法的问题,它很好用。当然了,如果涉及到大型矩阵运算,或者可以利用自带的一些工具箱,那matlab还是非常强大的(要体会到matlab的强大感觉也
要花不少时间),或者,你事先为一些特定的问题或者特定的算法准备一些代码文件。(这一段纯属个人意见)
但不管怎么说,现在科研上我用的最多的还是MATLAB和Cplex,偶尔用用python。需要什么就学习什么,数学建模不是目的,解决问题才是目的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询