科学计算中常见的编程语言有: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。