記事ディレクトリ
SciML チュートリアル シリーズ:
他の言語から翻訳されたソルバー
MATLAB/Python/R に精通しているプログラマの場合は、以下の表のソルバーを最初に使用できます。これらのソルバーはこれらの言語から翻訳されているためです。
ジュリア 翻訳 | 効率的な交換 | |
---|---|---|
ode23 | BS3() | |
ode45/dopri5 | DP5() | チット5() |
ode23s | ローゼンブロック23() | ロダス4() |
ode113 | VCABM() | バーン7() |
dop853 | DP8() | Vern7() の方が効率的です |
ode15s/水 | QNDF() FBDF() |
Rodas4()、KenCarp4() TRBDF2() RadauIIA5() |
ode23t | 台形() | |
ode23tb | TRBDF2() | |
ソーダ | イソダ() | AutoTsit5(Rosenbrock23()) AutoVern7(Rodas5()) |
ode15i | IDA()/DFBDF() | ロダス4() |
このうち lsoda() は LSODA.jl に含まれており、剛体問題と非剛体問題を解決することができ、呼び出す際にインストールする必要があります。
]add LSODA
using LSODA
リパッケージ版
Julia にはこれらの関数の再パッケージ バージョンもあり、通常、再パッケージ バージョンは元の言語よりも 2 ~ 3 倍高速ですが、Julia が推奨する方法よりは 1,000 倍遅くなります。
呼び出しメソッド | ||
---|---|---|
マットラボ | MATLABDiffEq.jl | MATLABDiffEq を使用する |
サイピー | SciPyDiffEq.jl | SciPyDiffEq を使用する |
r-deSolve | deSolveDiffEq.jl | deSolveDiffEq を使用する |
これら 3 つのパッケージは github にダウンロードしてインストールする必要があります
]add https://github.com/JuliaDiffEq/MATLABDiffEq.jl
]add https://github.com/JuliaDiffEq/SciPyDiffEq.jl
]add https://github.com/JuliaDiffEq/deSolveDiffEq.jl
その中で、MATLABDiffEq.jl は、Julia コードおよび MATLAB の ODE ソルバーと対話できるブリッジを提供します。主に常微分方程式と偏微分方程式を解くために使用されます。 MATLAB の ODE ソルバーを使用すると、最も基本的な方程式からより複雑な非線形システムに至るまで、ほぼすべての一般的な数学的問題を解くことができます。つまり、MATLAB には、ode23、ode45、ode113、ode23s、ode23t、ode23tb、ode15s、ode15i などのいくつかのソルバーが提供されます。
SciPyDiffEq.jl は、SciPy ライブラリの ode および odeint 関数に基づいて実装されています。Python の SciPy ライブラリと同様に、微分方程式を解く関数を Julia に実装できます。利用可能なメソッドには、RK45、RK23、Radau、BDF、LSODA が含まれます。
deSolveDiffEq.jl ユーティリティ: lsoda 、lsode 、lsodes 、lsodar 、vode 、daspk 、euler 、rk4 、ode23 、ode45 、radau 、bdf 、bdf_d 、adams 、impAdams 、impAdams_d。