- 重要的是能找到代码!代码查找和改写的能力很重要!建模就三天的时间,纯打代码肯定是来不及的,必须要找点套路!!!
- 一般情况下,这两个软件都可以,不过大多数人会选择使用MATLAB
,因为用MATLAB做出来的图更加专业美观,但是近些年有的学校MATLAB被封了,可能无法再使用。
不过没关系,Python
也是很好用的编程语言,而且学起来要比MATLAB简单一些,安装的也快(主要是MATLAB太大了 )。
当然了,最好两个软件你都会用,可以将二者的优点结合起来。
- 但是我个人认为,如果你们知道了用哪个模型或算法之后,最好去网上找找有没有对应的代码,能找到哪个代码就用哪个软件,找到之后直接改写代码!
为什么要找代码,改代码呢?
首先,你不可能掌握所有的算法代码,如果你重新学习的话,时间来不太及,毕竟只有三天的时间。
其次,即便你学会了某某算法,你也不能保证编写的代码准确无误,一旦错误就会白白浪费时间。
最后,既然网上都有现成的代码,你不用它干嘛!能省时间就省时间,而且大多数算法的代码都可以从网上找到。那么有的人可能会说了,既然改代码那么简单,那编程的队友是不是就没用了?
当然不是了,虽然说有的代码可以从网上找到,但是并不是说可以直接复制粘贴,你必须要根据实际情况修改,而且你必须能读懂吧。
另外,万一找不到代码呢?对不对,所以说编程大佬是非常重要的!
在备赛过程中可以拿往年的试题练练手,看看能不能找到并准确改写代码,一定要掌握这种能力,很重要的!
- 教授:我看你这个工作是基于python的,我记得在建模这一块还有一个软件MATLAB比较常用,你为什么没有使用MATLAB呢?
我:其实在行业认可度上,MATLAB被业内公认是一个非常优秀的建模软件,但是我们的项目使用过程中,需要涉及到云端的计算过程,使用MATLAB将会带来一系列的授权问题(我校并无MATLAB授权),而且我这个属于公益项目,前期并无资金投入,无法购买昂贵的正版授权。因此,我们采用了和MATLAB功能相似又完全免费的python语言,配合其优秀的第三方库的适配性,完成了这个工作。
可以看出,我在这个回答中避免了一些坑,我并没有直说MATLAB跟python哪个更好(我相信他们有很多理由怼我说MATLAB更好,既然他们问了这个问题),并成功的将话题转移到了授权的问题上,并希望这帮大佬能帮忙跟学校争取到MATLAB正版授权。
先放结论:MATLAB对于数模比赛各种尝试很方便。长远考虑Python用处大。核心功能两者差不多,都是脚本语言,都有成熟的平台和工具。
对于数学建模来讲MATLAB用起来更容易,操作比较简单,工具箱用起来比较"傻瓜"式,有些高级算法也可能可以在比赛中现学现用,比如遗传算法工具箱
,按要求在GUI界面填空就行。
Python是通用编程工具,应用面广,数据处理方面的第三方的库如numpy
(矩阵基础) scipy
(矩阵运算) sklearn
(人工智能算法) matplotlib
(科学制图)也很强大,学好它们对于数学建模足够了。
关于数模编程能力成长曲线。两个上手都不难,中期(大概就是进步到能拿国奖的水平那个阶段)matlab数据操作和算法积累进步会更快那么一点点,到后期(编程实现不再是难点时)熟练了又会没什么区别。
因为python的适用面广,如果在技术层面有长远打算,建议学Python。
从语言本身的发展看,MATLAB是mathwork公司自己开发维护的,提升已到瓶颈,未来用的人可能会越来越少;python是开源的,全世界一起开发维护,这几年可以颁发个进步最快奖,未来可能更万能,不会可能要再补课。
- 作为MATLAB党,表示,MATLAB的工具箱更为完善,函数更为稳健,毕竟收费的,Python作为胶水语言,确实有大量的库可以调用,但是可靠性就不能同日而语了,目前两个我都在用,经常相互之间调用,建议两个都学,MATLAB会少很多ITbug
- 先说结论:都学。先学matlab,有余力的情况下再学python。matlab是收费软件,强大的功能带来高效matlab可不便宜,动辄就几千几万。贵就贵在强大的内建函数和各种工具箱。这背后,是顶尖的数学家、程序员和专业领域专家几十年的心血,当然功能强大;研发成本巨大,自然卖得贵。强大的功能带来的是高效。数学建模竞赛只有三四天的时间,所以效率很重要。有些人在参加数学建模竞赛用python或其他语言编程,当别人使用matlab现成的工具箱几秒钟出答案时,他们还在遥遥无期地debug。
- Python的应用方向很多的,你学不过来,而且你只是准备数学建模,那么只需要把Python数学库这一块搞好来就行了,运算,绘图之类的。我本人就是打算参加数学建模的,虽然有些时候某些东西不像matlab一样直接用某一个函数传递参数就行了,但是总体而言Python用起来是很清爽的,可以对一个算法进行非常丰富的优化,例如很方便地从代码级别加入线程提高运算速度等等。事实上,你使用Java等也是可以做的。这些计算机语言都是一个很好的工具,当然目前更多人在使用计算机语言方面选择了Python。不过你仍然会见到有很多的人使用C++进行数学建模。
- 长话短说。数学建模你需要Python给你提供数据分析与挖掘的能力。那些Python的高级玩法更多涉及库的制作,软件工程,数学建模用不到。
给个学习的建议,先学完Python的基础语法并知道面向对象的编程思想,然后便是学习Python强大的第三方库。
1. numpy和matplotlib,这是Python内部的矩阵库和可视化库。下面所有库都是基于numpy开发的。
2. 有时间可以去看看scipy,这个库里面有许多科学计算的API。
3. shapely
也不错,里面有很多计算几何的API,今年APMCM的A题我就用它轻松完成了孵化曲线的绘制(其中还用了一些数据结构的思想,所以有条件学一下基本的数据结构对打代码大有裨益)。
4. 如果是和表格类型数据处理有关的题目,试试pandas
,它提供了处理表格类型数据全面便捷的API,非常方便。
5. 如果你会一些传统机器学习算法,可以使用sklearn来快速实现它们,当然如果手头数据比较少。如果你手头数据很多,不妨试试pytorch
,tensorflow
或者paddlepaddle
(个人推荐pytorch,比较好上手)。使用这些基于静态图或是动态图的深度学习框架,你能够快速实现一个DNN的前馈网络搭建与训练。
玩Python第三方库的诀窍个人感觉就是善用搜索引擎与翻翻官方文档。比如你哪天想要玩SVD,那么就在网络上搜索“如何用Python实现SVD”,看那些前辈用了什么库,怎么实现的。(也就是善于调库啦,当然你首先得知道有什么库)
如果你想进阶,那么Python的高级用法需要自学(网上系统的资料少得可怜)。比如class及其魔法方法,装饰器用法,itertools库的使用,内置函数的使用(比如map,filter),Python功能包的制作与发布(我个人打数模习惯先根据题目内容写一个工具集)。这些会让你的代码结构更加精简(比如实现一个hanming code,如果你知道这些高级用法就可以把行数从5行缩短到1行)。
好好玩吧!(本蒟蒻去赶数据结构了)
- 如果你同时会几种编程语言,你就会发现每种语言都有他们独特的应用领域和特点。python更“计算机”,而MATLAB更“数学”,而他们都能解决“数学建模”这个即计算机又数学的问题。
如果你们队伍中的编程位同学,平时代码写的不多,他可能更倾向于用MATLAB:数学运算,矩阵运算,把公式一套就能跑出个结果,一句plot就能画出图像,坏境又好配,工具包又多,太轻松了。
可是这样好么?如果建模位出来的思路不那么数学,仿真了实际环境需要大量运算,没有过硬的数学基础,代码位同学很难把思路归化成高效的矩阵运算,三层循环嵌套下来(一般X,Y,t就有三层了)想要仿真一个结果,时间上跑不动咋办,论文写完了数据没有图出不来,PS建模?
如果你们队伍中的编程位同学,平时就是个coding大佬,他可能更倾向于用python:首先他更熟悉,应用性的功能用python更多,更多抽象,更多封装,代码质量高得一批,版本控制一天30个commit;矩阵运算numpy,数值符号运算sympy,画图matplotlib和seaborn不比三区论文上的丑,必要的时候爬虫丢服务器上跑还怕没数据?
可不是每个队伍都能找到这样的编程位。
MATLAB是好用,新手入手快,结果出来的快,但是也正因为基础薄弱,平时用的少,所以天花板会比较低。
Python是好用,思路清晰,第三方库多到爆炸,IDE齐全,出图好看,可要想做好它毕竟门槛高一些(好多人环境都配不明白)。
所以我的建议是什么呢?都要学,可时间短,没法都学会的,就找好教程,知道教程讲什么,到时候去套代码改参数;抱好大腿,让大腿在危机时刻告诉你怎么改代码,bug出在哪儿。
- Matlab更适合工程师和科研人员,不仅有很多十分完备的函数和工具箱,在数模中,往往一个工具箱就可以解决大部分问题了。当然,学的话很快,学会一些基本操作,到需要专业的命令和语句时再上网查查就很好了。Python是一门正经的编程语言,不仅仅是数模,还有编程能解决的几乎所有问题,当然,在数值计算和统计上,优于其他语言,这也是能够和MATLAB相比较的原因。
最好是都要懂,会基本操作,至少能看得懂,毕竟到了关键时刻,能复制修改的,决不从头写。。。
- 如果涉及到数据清洗,挖掘,预测,图像处理,模式识别,拟合等相关的问题,使用python会更好。如果涉及系统性的问题。会涉及到仿真方面,比如说电力,混沌,有限元,3D仿真等,可以考虑使用matlab
- 个人建议如果是纯小白且时间紧迫且仅仅是为了参加比赛,先学Matlab,上手快而且作图运算啥的个人感觉相对来说要简单点,而且还有一堆现成的图形化界面的工具箱,对新手较为友好;但如果是说为了今后各方面的发展考虑,还是建议花时间学一下python,python的泛用性更好而且应用场景比Matlab要广的多。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...