9

您建议使用哪种语言来解决系统:

  • 一阶微分方程
  • 复杂变量
  • N维

使用 4 阶 Runge Kutta 等。

速度重要,但会牺牲:

  • 优雅(简洁)的代码
  • 灵活性+可扩展性

我主要介于 Lisp 和 OCaml 之间,但欢迎任何其他建议。

谢谢!

4

7 回答 7

5

这是 Common Lisp 中 RK 的实现:

http://github.com/bld/bld-ode/blob/master/rk.lisp

Common Lisp 的好处是您可以从简单而优雅的代码开始,然后让关键位快速运行(例如,通过从主要是功能计算切换到有状态计算,或者通过声明类型)。

SBCL 具有出色的本机代码编译器。

于 2010-05-26T06:59:51.810 回答
2

除此之外,您可以将 ocaml 绑定写入现有的 C runge-kutta 求解器。

于 2010-05-31T18:58:56.960 回答
2

我不熟悉 Runge Kutta,但 OCaml 总体上可以提供良好的速度和可读性,至少如果你有点小心的话。然后,您就可以在应用程序的其余部分使用健壮的静态类型系统。

于 2010-05-28T01:35:21.310 回答
2

RK4 是一个非常基础的方法,已经编写了很多优秀的实现。使用其中之一,并将精力花在项目的其他方面。

于 2010-05-25T20:13:47.367 回答
1

很难说哪种语言最简单,有lispC++C#等库来实现这一点,如果它与个人喜好有关的话。我推测 Matlab 是专门针对这些类型的任务的最量身定制和最优雅的解决方案,并且它有很多对 ODE 的内置支持...... Lisp 可能有点慢......而且我不能代表 OCaml .

于 2010-05-25T20:01:44.593 回答
1

我建议使用 python+numpy+scipy,一般数学和数字支持(超级多维数组)非常好。无论如何,这取决于具体的需求。

于 2010-06-03T00:03:50.737 回答
0

Fortran 或 C,可能需要查看NAG 例程。C 会更灵活,更容易理解,但 Fortran 通常被认为是最适合数字的。

于 2010-05-25T20:01:31.473 回答