我想用 Julia 语言实现一个通用的 Runge-Kutta 阶跃函数。在 Python 中,我可以只传递一个函数作为这个 RK4 函数作为输入的参数之一。如果我在 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 的右手边(部分时间导数)。