参加数学建模比赛,需要明确的一点: 专业知识是一方面,不要单纯地以为把文章写好就能够拿奖; 软件的运用,文章的排版也很重要,排版美观,插图好看,讲事实摆道理通过仿真图,比如函数的拟合和图像等等,让数据呈现更清晰。
就程序来说,Matlab和Python/ target=_blank class=infotextkey>Python各有优点,那么今天就来聊一聊这两个软件。
1
什么是Python
●
Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
2
什么是Matlab
Matlab是美国MathWorks公司出品的商业数学软件。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
3
Python VS Matlab
Matlab对于数模比赛各种尝试很方便,但是长远考虑Python用处更大。核心功能两者差不多,都是脚本语言,都有成熟的平台和工具。
对于数学建模来讲,Matlab用起来更容易,操作比较简单,工具箱用起来比较"傻瓜"式,有些高级算法也可能可以在比赛中现学现用,比如遗传算法工具箱,按要求在GUI界面填空就行。
Python是通用编程工具,应用面广,数据处理方面的第三方的库如numpy(矩阵基础) scipy(矩阵运算) sklearn(人工智能算法) matplotlib(科学制图)也很强大,学好它们对于数学建模足够了。
Matlab是收费的,所以工具箱更为完善,函数也更为稳健;Python作为胶水语言,有大量的库可以调用,但是可能会出现一些IT bug。
因为Python的适用面广,如果在技术层面有长远打算,建议学Python。从语言本身的发展看,Matlab是mathwork公司自己开发维护的,提升已到瓶颈,未来用的人可能会越来越少;Python是开源的,全世界一起开发维护,这几年可以颁发个进步最快奖,未来可能更加万能,不会可能需要再去补功课。
4
参加数模竞赛如何选择
Python的应用方向很多,如果你只是准备数学建模,那么只需要把Python数学库这一块搞好来就可以了,比如:运算、绘图等。
虽然有些时候某些东西不像Matlab一样直接用某一个函数传递参数就行了,但是总体而言Python用起来是很清爽的,可以对一个算法进行非常丰富的优化,例如很方便地从代码级别加入线程提高运算速度等等。事实上,使用JAVA等也是可以做的。这些计算机语言都是一个很好的工具,当然目前更多人在使用计算机语言方面选择了Python。不过你仍然会见到有很多的人使用C++进行数学建模。
数学建模你需要Python给你提供数据分析与挖掘的能力。那些Python的高级玩法更多涉及库的制作,软件工程,数学建模用不到。
对于学习的建议,我们建议先学完Python的基础语法并知道面向对象的编程思想,然后学习Python强大的第三方库。
如果你们队伍中的编程同学,平时代码写的不多,更倾向于用Matlab。数学运算,矩阵运算,把公式一套就能跑出个结果,一句plot就能画出图像,坏境又好配,工具包又多,太轻松了。
MATLAB是好用,新手入手快,结果出来的快,但是也正因为基础薄弱,平时用的少,所以天花板会比较低。
Python是好用,思路清晰,第三方库多到爆炸,IDE齐全,出图好看,可要想做好它毕竟门槛高一些(好多人环境都配不明白)。
所以最佳的方式是都学,时间短没法都学会的,就找好教程,知道教程讲什么,到时去套代码改参数;抱好大腿,让大腿在危机时刻告诉你怎么改代码,bug出在哪儿。
Matlab更适合工程师和科研人员,不仅有很多十分完备的函数和工具箱,在数模中,往往一个工具箱就可以解决大部分问题了。当然,学的话很快,学会一些基本操作,到需要专业的命令和语句时再上网查查就很好了。
Python是一门正经的编程语言,不仅仅是数模,还有编程能解决的几乎所有问题,当然,在数值计算和统计上,优于其他语言,这也是能够和MATLAB相比较的原因。
5
总结
如果是 纯小白,时间紧迫且仅仅是为了参加比赛,先学Matlab,上手快而且作图运算等个人感觉相对来说要简单些,而且还有一堆现成的图形化界面的工具箱,对新手较为友好。
但如果是说 为了今后各方面的发展考虑,还是建议花时间学一下python,python的泛用性更好而且应用场景比Matlab要广的多。
2022-2023
IMMC国际数学建模中华区
秋冬赛即将开启