数学建模社区-数学中国

标题: 参加数学建模用 MATLAB,还是 Python? [打印本页]

作者: 杨利霞    时间: 2020-5-20 15:48
标题: 参加数学建模用 MATLAB,还是 Python?
2 v' x: k9 U; b" m
1 P+ _5 o' V9 Q. k$ P1 d
参加数学建模用 MATLAB,还是 Python?作者:薛定谔的猫# A8 O( M6 J+ H7 x, [' `
链接:https://www.zhihu.com/question/314746916/answer/634718224
6 Q( _" E& S7 O6 g5 q% o来源:知乎
7 w- F9 W4 l& f' i著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。" |- Q) [! V& n/ T" M6 K9 m9 j: l
% @/ Z/ T8 Y7 M+ t6 p' {6 o0 x; n
在最开始引用一下我之前在挑战杯答辩上的回答吧,这个挑战杯项目实际上是一个云端求解量子力学问题的项目。是的,我就这么直白的拿着数学建模的东西去水挑战杯′∀`
& R  e, h/ G) D0 _+ x
教授:我看你这个工作是基于python的,我记得在建模这一块还有一个软件MATLAB比较常用,你为什么没有使用MATLAB呢?
! Z2 L5 \) d+ n2 q我:其实在行业认可度上,MATLAB被业内公认是一个非常优秀的建模软件,但是我们的项目使用过程中,需要涉及到云端的计算过程,使用MATLAB将会带来一系列的授权问题(我校并无MATLAB授权),而且我这个属于公益项目,前期并无资金投入,无法购买昂贵的正版授权。因此,我们采用了和MATLAB功能相似又完全免费的python语言,配合其优秀的第三方库的适配性,完成了这个工作。
可以看出,我在这个回答中避免了一些坑,我并没有直说MATLAB跟python哪个更好(我相信他们有很多理由怼我说MATLAB更好,既然他们问了这个问题),并成功的将话题转移到了授权的问题上,并希望这帮大佬能帮忙跟学校争取到MATLAB正版授权。
9 t' ?) ~7 a0 c& @7 G  d# Q~~~~~~~~~~~~~~~~~~~~~~~~~~~~4 P1 o9 V, E0 R0 k: Z) Q
下面开始正文部分1.python还是MATLAB( _# {5 \$ ?. d" `& P- q
只有小孩子才做选择,我选择全要,开个玩笑。. I' M0 r; }" D- M; I
你可能在互联网上搜索python和MATLAB会有人给你分析两者的优缺点,我这里不打算阐述两者的优缺点。我觉得对于数学建模而言,两者都应该学习,这是因为关键时候两者可以及时互补。他们虽然功能相似,但是针对某一个问题,你可能只能在互联网上搜索到一个解决方案,如果你选择在一棵树上吊死,很可能你需要自己研究整个代码并且将其移植,这在有限的数模比赛时间内是极其不可取的。0 f( X( H# Z. W' `4 W6 l+ ^& @
2.学习MATLAB和python的先后顺序
6 h$ V) A! @1 \' @# L4 Y以一个过来人的角度来说,我建议你先学MATLAB,这是因为它的中文教程相对于python要多很多,这对于新手是有利的。等到熟练操作MATLAB以后,只需要简单看一看python的基本操作,就能够上手像numpy这一类的科学计算的库,因为它们的操作方法是模仿MATLAB的。
2 l$ s8 D5 |# {# O) ?- o( T3.python的推荐配置
+ U) n* l1 w( p9 i" Y4 W我最早学习的全是基于python的非线性物理计算,这是学校开设的本科课程。当时推荐的python发行版是Anaconda,它的好处就是预装了大量的你能用的上的库而且自带大量的编译器的支持,无需手动配置,一键启动。
. r3 W+ p9 w! W# A+ S( V如上图就是anaconda的启动界面,其中默认提供8种编辑器,其中不乏有VS code这种大牌编辑器,你可以一个一个尝试直到找到自己喜欢的。3 b1 x0 T: [! s0 i* n5 W) i
上图就是大名鼎鼎的VS code,来自微软,提供大量的扩展支持,只有你想不到没有他办不到,配合第三方扩展,你甚至可以用代码编辑器来听音乐和看漫画,详情见
/ Q& p) u9 s: k8 P( Q) c8 s@GitHub Daily5 i5 B1 f; n- K  f+ ^
' W- G& k  N6 H4 z4 o
的文章
2 Y) A; A1 h4 X7 HGitHub Daily:装上这几个 VSCode 插件后,上班划水摸鱼不是梦​zhuanlan.zhihu.com如果你不喜欢这种类型的编辑器,还有提供matlab类交互支持的编辑器——spyder,题主可自行体验。  I  i$ u1 s8 c$ i3 e1 s) G
4.最后一点建议
( F- [% F: E6 a$ I编程语言说到底只是零件,好的零件的确可以造出好的产品,但是设计师的设计更为重要,与其纠结语言,不如多看看算法,毕竟,算法是支撑一个建模的核心,你程序写的再好看评委也是看不到的。
8 E5 |2 l7 \/ J- V5 l( {; r* h9 x% D5 C# N, K+ ?4 I) Q
发布于 2019-03-28- j0 ?) f; j# K% i1 {; O: ^
  k1 X) t& J* y9 r- y3 S7 S
! S" h, G1 L+ v9 a. B) i3 z5 U. K, o5 J! u
3 t- @2 o1 n) i" o
8 k# z8 X! w* b; {/ I/ n
5 z7 T7 t+ ~8 J  d
@realOlderDriver
& t  r/ X$ z  I# Z
9 Y7 i$ i" l  X1 I; g) o5 V* Q! r& m& y2 s. @0 H: m
* E% x' A3 Z5 v3 V

1 ]% p3 B: d+ F0 U2 P% a* \% Y- N$ q64 人赞同了该回答
6 O( p+ T5 {8 z
# e( E+ Q+ b2 d% k4 @数学建模比赛并不会有所谓“官方指定”的软件!
' D. a3 W7 o4 t所谓“官方指定”,可能是国赛中设有“Matlab创新奖”,让很多人误认为数学建模比赛必须使用Matlab。这其实是误解,迈斯沃克公司(Matlab母公司)是国赛赞助商,为了推广其软件,所以才在比赛中设立奖项,奖励一篇使用Matlab的优秀论文。但是,如果你通篇没有使用Matlab,除了不能参评这个奖项外,对你论文获奖没有任何影响。(Matlab创新奖每年数万个队伍中仅有一项,获奖概率可以忽略,故影响不大。)
) N* u$ P% W; r, }不过,我仍然推荐你使用Matlab,因为该软件对解决应用数学及其相关的工程问题有得天独厚的优势,并且长期以来在数模竞赛圈中得到很好的传承,相关教学资源和代码模板比较多,方便套用。
) y4 R2 i- `7 K& Z8 n) n" A相比于Matlab,Python是近几年发展较快的一个编程语言,在编程语言排行榜上远超Matlab。但是,Python不太适合在数学建模中使用,尤其是不要过多的使用机器学习算法,除非那个算法是你自己设计的(如果你有这个能力,也没必要参加数模竞赛了)。数学建模最忌讳的就是过多的使用不能说明内在机理的人工智能算法,这样会给评委一种“套模型”的嫌疑。# ?+ j2 V' N" ?; f, l

" d1 Q7 r) W; p
8 E0 l! h$ i/ T2 c
: V8 {- N' l; l4 E
! x( D; j8 A, i  ^3 p" O- e: X
8 D9 ]$ y/ \/ O: r: W, a$ R* ?+ L" S9 C5 J% O7 K
; a2 m' q8 S3 y( V4 u
2 r9 J, ?% ~& n- c' w- G

9 w5 i3 A  Y' h# `. F) Q
1 y: k% S" z7 k2 k3 c6 p7 a
作者: 2863358207    时间: 2020-5-20 18:33
好好好好好好好好好好  ^  x( @4 u2 k8 n





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5