原创 微分方程求解器比较:MATLAB, R, Julia, Python, C, Mathematica, Maple, Fortran

2020-3-7 09:25 882 1 1 分类: MCU/ 嵌入式
http://www.stochasticlifestyle.com/comparison-differential-equation-solver-suites-matlab-r-julia-python-c-fortran/
结论:

很显然,DifferentialEquations.jl是寻求全面套件的“高级用户”的最佳选择。至于脚本语言的其他选择,MATLAB并非设计为具有所有最有效的方法,但是它将处理具有延迟和事件的基本方程,并输出良好的曲线图。R的deSolve在大多数方面与MATLAB相似。由于缺少事件处理,与MATLAB和R相比,SciPy的产品缺乏。但是由于用户函数是用脚本语言编写的,因此MATLAB / Python / R都存在效率问题。JiTCODE和PyDSTool是两个Python产品,使与Fortran求解器的接口比直接的SciPy更有效。Mathematica和Maple将进行符号预计算以加快处理速度,并且JiT可以编译函数,并提供非常好的事件处理,因此它们的包装器更像是DifferentialEquations。在灵活性和效率方面(而且Mathematica也提到了一些非包装的东西)。因此,当并非所有的风吹草动都是紧要关头时,这些脚本语言套件中的每一个都可以帮助您。在DifferentialEquations.jl之后,我肯定会将Mathematica或Maple的套件用于脚本语言的第二位,而其他所有功能都远远落后于此。我实际上感到有些惊讶:通常人们将CAS视为符号计算,而将MATLAB / R / Python视为更多的“数字”语言,但是至少在微分方程求解器的情况下,CAS(Mathematica和Maple)似乎更加完善和完善。这些脚本语言套件中的每一个都会帮助您。在DifferentialEquations.jl之后,我肯定会将Mathematica或Maple的套件用于脚本语言的第二位,而其他所有功能都远远落后于此。我实际上感到有些惊讶:通常人们将CAS视为符号计算,而将MATLAB / R / Python视为更多的“数字”语言,但是至少在微分方程求解器的情况下,CAS(Mathematica和Maple)似乎更加完善和完善。这些脚本语言套件中的每一个都会帮助您。在DifferentialEquations.jl之后,我肯定会将Mathematica或Maple的套件用于脚本语言的第二位,而其他所有功能都远远落后于此。我实际上感到有些惊讶:通常人们将CAS视为符号计算,而将MATLAB / R / Python视为更多的“数字”语言,但是至少在微分方程求解器的情况下,CAS(Mathematica和Maple)似乎更加完善和完善。

如果您已经刻苦学习C ++ / Fortran,那么Sundials是一个不错的“一站式商店”,可以满足您的所有需求,尤其是在添加ARKCODE时。尽管如此,您仍然需要自己写很多东西才能将rootfind变成事件处理界面,但是如果您将工作放在
这样会很好。Hairer的代码集涵盖了广泛的方程式,是一整套经典著作,而FATODE是唯一的non-DifferentialEquations.jl套件,它提供了一种计算灵敏度方程式的方法(其灵敏度方程式更为先进)。如果您想真正掌握编译语言并自己编写许多接口,那么这些方法中的任何一项都将对您有所帮助,但是它们将是生产力的牺牲,并且与脚本语言方法相比并没有明显的性能提升。还包括某种形式的JIT编译。考虑到这些,我真的看不到GSL或Boost套件的用途,并且ODEPACK方法通常已经过时。

我希望这篇评论能帮助您做出适合自己的选择。

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
指的是在下 2020-03-07 09:29
数字滤波器概述
数字滤波器是一个按预定的有限精度算法实现的、将输入的数字信号转换为所需要的输出数字信号的线性时不变系统LTI。滤波器是是一种对信号有处理作用的器件或电路,其主要作用是让有用信号尽可能无衰减的通过,对无...
指的是在下 2020-03-07 09:28
线性时不变系统LTI
如果一个系统任意时刻的输出至多取决于本时刻的输入,而不依赖过去和将来时刻的输入,则该系统称为静态系统或无记忆系统,比如放大器就是一个典型的静态系统。在其他情况下,系统称为动态系统或有记忆系统,比如单位...
指的是在下 2020-03-04 09:27
傅里叶分析
在信号处理中,频域分析基本上就等同于傅里叶分析,但就傅里叶分析来说,又有多种具体的方法,比如对离散信号有离散时间傅里叶变换(DTFT),离散傅里叶变换(DFT)。对连续信号有傅里叶级数(FS)、傅里叶...
指的是在下 2020-03-03 10:47
离散时间信号
信号通常是随时间或空间变化的有限实值函数。自然界的信号,目前为止都是实数的,暂时还没发现自然的复数信号。信号处理中用到大量的复数信号主要是为了数学处理上的方便。信号可分为:1 确定信号与随机信号 确定...
指的是在下 2020-03-02 10:10
交换机具有三种交换模式
快速转发直通式,交换机接收到帧的前14个字节时就立刻转发数据帧。碎片丢弃式,它缓存每个帧的前64个字节,检查冲突过滤碎片。存储转发式,转发之前将整个帧读取到内存里。Cisco大中型交换机使用“show...
广告
我要评论
0
1
广告
关闭 热点推荐上一条 /4 下一条