科学计算中常见的编程语言有:Fortran/C/C++、Python、Matlab/Mathematica、Julia 等。编程语言其实选择哪一种都可以,主要还是看算法和内容,计算结果跟编程语言无关。不同编程语言的书写效率和运行效率会有些差别。
以下是具体讨论:
- Fortran/C/C++ 的运行效率算是最高了,主要是可以用到(MKL)BLAS 库和 LAPACK 库中的一些函数,很多遗留的科学计算代码都是基于 Fortran 语言。缺点是 Fortran 需要对每个变量进行声明,书写起来比较冗长。此外,各种功能函数散落在互联网中的各个角落,没有特别好的软件生态。学习参考:Fortran常用语句。
- Python 加上 numpy 库,功能和 Matlab 差不多。Python 的缺点是运行效率不高,尤其是多重循环的计算,但速度还是可以接近于 Matlab。Python 的优点是书写方便,不用定义变量。此外,Python 软件生态比较好,安装方便,可以比较方便地调用各种库。Python 也是人工智能/机器学习的热门语言。学习参考:常用的Python软件包。
- Matlab 是矩阵实验室,优点是代码比较简短、分析矩阵比较方便。Mathematica 比较擅长符号运算。Matlab 和 Mathematica 都是商业软件,从长期来看,书写的代码容易受制于人,用起来并不是特别安心。此外,这两个软件安装的占用空间也比较大。学习参考:Matlab常用语句。
- Julia 是一个比较新的编程语言,处于发展阶段,语法接近于 Matlab,兼顾了书写效率和运行效率,已经有一批科研工作者使用了 Julia 作为科学计算的语言。Julia 的缺点是软件包的官方安装是基于 Github,容易被墙屏蔽,使用起来体验不是特别好,同时该语言使用的人数较少,网上资料也不多。此外,各种软件包也需要重新去学习和适应,比较费精力。学习参考:Julia常用命令和常用软件包。
综上,目前个人是选择 Python 为主要的编程语言,当计算量比较大时再使用 Fortran/C/C++ 进行编程计算。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】
matlab其实也不用提前定义变量。matlab的符号计算比mathematica更强大,能解mathematica解不出来的符号方程。
嗯,是的,Matlab也不用人为定义变量。Matlab的符号运算我接触的不多,应该也是不错的,感谢建议。我之所以现在不怎么用,主要还是因为Matlab和MMA都是商业软件。而使用开源的语言可以减少代码对商业的依赖性。
MATLAB做符号计算记得也要声明变量啊。对于一些解析推导,它可以给出解,而Mathematica给出的是Root形式,这个确实不错,不过Mathematica的Root
照样可以画图
嗯,Matlab符号计算需要,常用的数值计算不需要,直接赋值,例如a=1。