Julia言語で一般的なRunge-Kuttaステップ関数を実装したいと思います. Python では、この RK4 関数が入力として取得する引数の 1 つとして関数を渡すことができます。Juliaでそのようにすると、パフォーマンスが低下しますか?
私の関数は次のようになります。
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
ここで、Ps はモデルのパラメーターを持つ Julia 型、Vs は ODE の変数の多次元配列、rhs は ODE の右辺 (部分時間導関数) です。