首先需要说明的是我们这里的“数值模拟(Numerical Modeling)”指的是有限元,边界元,离散元,深度学习之类的大型数值计算而不是普通意义上的数学(符号)运算。这个笔记简要讨论了数值模拟为什么优先使用Python而不是MTALAB。
根据2021年最新的编程语言流行榜,全球Top 5的编程语言排名依次为Python, Java, JavaScript, C#, C/C++, Matlab排名第12位。这意味着对于职业的软件工程师来说,学习Python比学习MATLAB更容易找到工作。MATLAB在中国主要是学术机构为了发表论文而使用,在工业界基本上没有立足之地。
MATLAB与Python一样,都属于解释性语言,二者最显著的差别是MATLAB为收费软件,而Python是免费的。也正是这个原因,专业的数值模拟软件都使用了Python作为扩展语言,例如Abaqus, ANSYS, FLAC3D(FLAC3D与Python的集成 (4)---zone.Zone类和方法), 3DEC, PFC, Plaxis(使用Python自动化执行Plaxis的命令流)等。因此以前使用MATLAB作为数值模拟数据的交换功能现在完全可以集成地用Python来代替,而MATLAB引以为自豪的数学运算功能使用基于Python的数据处理包Pandas, Numpy, Scipy等就能完全实现。
对于任何收费的软件,推出的功能一定是相对稳定的,这既是它的优点,但同时也是它的缺点。MATLAB的最新版本是R2021b, 目前只支持与Python 3.9的连接, 不支持Python 3.10(已经做过测试,可以连接的最高版本是3.9.9)。
而对于深度学习,MATLAB的最新版本(R2021b)目前使用的还是CNN,LSTM之类的,现实的深度学习早已跨越了这些算法,现在使用的是Tensorflow, Pytorch, Transformers等更高级的深度学习算法和框架。
此外,在MATLAB开发的东西普及性较差,只能在小圈子内使用。例如,为了运行别人的一个2k的代码, 我必须在计算机安装个3G~20G的庞然大物---MATLAB。
Last but not least, 从计算效率的角度而言,MATLAB的循环迭代能力很差,这意味着如果想在MATLAB中开发大型的数值模拟软件,其效率是非常低下的。相比之下,Numpy的数学运算能力极强。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删