计算化学,有python基础还有必要学习matlab么

2024-12-25 11:08:01
推荐回答(1个)
回答1:

(利益相关:我 matlab 和 python 都用,我是搬砖的不是写代码的)
从我一些搞计算化学的朋友那里看,基本用的都是 fortran, c/c++,或者就是商用的量化从头计算软件 Gaussian, Molpro, Cfour 等等
计算化学大体上分成三块:
1.搞算法的。这帮人基本上是数学家+计算机科学家,涉及最底层的代码、算法、数据结构,自然得用底层语言 c 或者 fortran 等等
2.搞量化从头计算的。这帮人大体是用已经开发好的量化计算软件(如开头所述)。量化从头计算涉及专业性很强的解薛定谔方程的算法,据个人所知,matlab 这种大型商业公司的软件花精力去专门做一个量化从头计算的包肯定是亏本的(相比而言经济学、统计学等等的包还有点搞头)。不过印象中也有看到过用 matlab 做很粗浅的量化计算的文献。
3. 搞分子动力学模拟的。这帮人主要是用经典力学方法计算。用啥语言的都有。
对于 2 和 3 来说,个人以为,选择什么语言通常会考量它的计算效率、易用性和扩展性,以及——组里以前用的啥!matlab 做矩阵运算非常好,但价格不菲啊!python 现在越来越流行,又是免费的,但是单纯用 python 计算速度可能会差一点。此外,它们应该都没有量化从头计算对应的扩展包。
如果你的方向更多的是用现成的量化计算软件去算新的化学反应体系,那 matlab 估计不怎么用得到。如果你的方向更多的偏向于统计,并且设计很多自己写代码的部分,那选择一个自己熟悉的、运算速度满足项目需求的语言就可以了。毕竟 matlab 和 python 都有接口直接调用 c/c++,你要嫌慢最后总归回到最底层上面去。
题外话,计算化学找不到出路都转码农去了。如果你真的对编程感兴趣,底层语言一定是要学的。千万不要停留在 matlab 这种要花钱的解释性语言上面。如果你对商业感兴趣,用 matlab 可以干很多别的事儿(不过 python 应该也都能干,数据挖掘什么的)
最后说一句:大部分时候,说某某语言慢的人,都是自己代码写得烂。本人曾优化了组里留下来的 matlab 代码,把速度提了几十倍。每种语言都有其长处,但最终你的算法写得好,才能真正跑起来。