gpt4 book ai didi

function - 有效使用函数作为参数

转载 作者:行者123 更新时间:2023-12-05 09:20:19 25 4
gpt4 key购买 nike

我想用 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 的右侧(偏时间导数)。

最佳答案

执行此操作的标准方法是将函数作为参数传递。自 Julia 0.5 以来,使用高阶函数速度很快。

有很多标准库函数接受函数作为参数(“高阶函数”),所以这种风格在 Julia 中是惯用的。例如,这是 map 函数的一种方法的简单实现:

julia> mymap(f, xs) = [f(x) for x in xs]
mymap (generic function with 1 method)

julia> mymap(sin, [0, π/2, 3π/2])
3-element Array{Float64,1}:
0.0
1.0
-1.0

关于function - 有效使用函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com