您建议使用哪种语言来解决系统:
- 一阶微分方程
- 复杂变量
- N维
使用 4 阶 Runge Kutta 等。
速度很重要,但会牺牲:
- 优雅(简洁)的代码
- 灵活性+可扩展性
我主要介于 Lisp 和 OCaml 之间,但欢迎任何其他建议。
谢谢!
您建议使用哪种语言来解决系统:
使用 4 阶 Runge Kutta 等。
速度很重要,但会牺牲:
我主要介于 Lisp 和 OCaml 之间,但欢迎任何其他建议。
谢谢!
这是 Common Lisp 中 RK 的实现:
http://github.com/bld/bld-ode/blob/master/rk.lisp
Common Lisp 的好处是您可以从简单而优雅的代码开始,然后让关键位快速运行(例如,通过从主要是功能计算切换到有状态计算,或者通过声明类型)。
SBCL 具有出色的本机代码编译器。
除此之外,您可以将 ocaml 绑定写入现有的 C runge-kutta 求解器。
我不熟悉 Runge Kutta,但 OCaml 总体上可以提供良好的速度和可读性,至少如果你有点小心的话。然后,您就可以在应用程序的其余部分使用健壮的静态类型系统。
RK4 是一个非常基础的方法,已经编写了很多优秀的实现。使用其中之一,并将精力花在项目的其他方面。
很难说哪种语言最简单,有lisp、C++、C#等库来实现这一点,如果它与个人喜好有关的话。我推测 Matlab 是专门针对这些类型的任务的最量身定制和最优雅的解决方案,并且它有很多对 ODE 的内置支持...... Lisp 可能有点慢......而且我不能代表 OCaml .
我建议使用 python+numpy+scipy,一般数学和数字支持(超级多维数组)非常好。无论如何,这取决于具体的需求。
Fortran 或 C,可能需要查看NAG 例程。C 会更灵活,更容易理解,但 Fortran 通常被认为是最适合数字的。