1
私はジュリア言語で一般的なルンゲ・クッタステップ関数を実装したいと思います。 Pythonでは、このRK4関数が入力として受け取る引数の1つとして関数を渡すことができます。 Juliaのそれを好きなら、パフォーマンスのペナルティはありますか?引数としての関数の効率的な使用
My機能は次のようになります。Psはモデルのパラメータを持つジュリアタイプで、VsはODEの変数の多次元配列で、RHSは右側です
function uv_rk4_step(rhs,Vs,Ps)
Vs_k1 = rhs(Vs,Ps)
Vs_k1 = Ps.dt*Vs_k1
Vs_k2 = rhs((Vs+(1/2)*Vs_k1),Ps)
Vs_k2 = Ps.dt*Vs_k2
Vs_k3 = rhs((Vs+(1/2)*Vs_k2),Ps)
Vs_k3 = Ps.dt*Vs_k3
Vs_k4 = rhs((Vs+(1/2)*Vs_k3),Ps)
Vs_k4 = Ps.dt*Vs_k4
Vs_next = Vs+(1/6)*Vs_k1+(1/3)*Vs_k2+(1/3)*Vs_k3+(1/6)*Vs_k4
end
ODEの部分的時間微分(partial time derivatives)である。
Juliaで関数を引数として渡すことができます。何が問題ですか? –
@FengyangWangのコメントに追加するだけです。引数としての関数はv0.4ではいくぶん遅くなっています。これは一部の人が回避する理由ですが、これはv0.5で修正されています。関連するgithubプルリクエストはここにあります(https://github.com/JuliaLang/julia/pull/13412) –
はい、私はこのような関数を渡すことが "正しい"方法であるかどうか私の質問で追加するべきでしたJuliaで、またはより遅いコードになります.. – Ohm