9

システムを解くためにどの言語を提案しますか:

  • 一階微分方程式
  • 複雑な変数
  • N次元

4次ルンゲクッタなどを使用。

速度は非常に重要ですが、次の点で犠牲になります。

  • エレガントな (クリーンで短い) コード
  • 柔軟性 + スケーラビリティ

私は主に Lisp と OCaml の間ですが、他の提案は大歓迎です。

ありがとう!

4

7 に答える 7

5

CommonLispでのRKの実装は次のとおりです。

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

Common Lispの良いところは、シンプルで洗練されたコードから始めて、重要なビットを高速に実行できることです(たとえば、ほとんど機能的な計算からステートフルな計算に切り替えるか、型を宣言することによって)。

SBCLには優れたネイティブコードコンパイラがあります。

于 2010-05-26T06:59:51.810 に答える
2

RK4は非常に基本的な方法であり、すでに作成されている優れた実装がたくさんあります。それらの1つを使用して、プロジェクトの他の側面に労力を費やしてください。

于 2010-05-25T20:13:47.367 に答える
2

他のものとは別に、既存のCルンゲクッタソルバーにocamlバインディングを書き込むことができます。

于 2010-05-31T18:58:56.960 に答える
2

私は Runge Kutta には詳しくありませんが、OCaml は一般的に、少なくとも少し注意すれば、優れた速度と可読性を提供できます。これにより、アプリケーションの残りの部分で堅牢な静的型システムの利点が得られます。

于 2010-05-28T01:35:21.310 に答える
1

python + numpy + scipy を使用することをお勧めします。一般的な数学と数値のサポート (優れた多次元配列) は優れています。とにかく、それは特定のニーズに依存します。

于 2010-06-03T00:03:50.737 に答える
1

どの言語が最も簡単かを言うのは難しいです。これを達成するためのlispC++C#などのライブラリがあります。Matlab は、これらのタイプのタスクに特化した最も調整されたエレガントなソリューションであり、ODE のサポートが組み込まれていると推測します... Lisp は遅い側にある可能性があります...そして OCaml について話すことはできません。 .

于 2010-05-25T20:01:44.593 に答える
0

Fortran または C では、 NAG ルーチンを調べる必要があるかもしれません。C の方が柔軟で理解しやすいですが、通常は Fortran が数値計算に最適と見なされています。

于 2010-05-25T20:01:31.473 に答える