很显然,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条评论)
登录后参与讨论