Julia的新手,试图测试ODE求解器的速度.我在教程中使用了Lorenz方程
using DifferentialEquations
using Plots
function lorenz(t,u,du)
du[1] = 10.0*(u[2]-u[1])
du[2] = u[1]*(28.0-u[3]) - u[2]
du[3] = u[1]*u[2] - (8/3)*u[3]
end
u0 = [1.0;1.0;1.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob,reltol=1e-8,abstol=1e-8,saveat=collect(0:0.01:100))
Run Code Online (Sandbox Code Playgroud)
加载软件包的开始时间约为25秒,代码在Jupyter笔记本电脑的Windows 10四核笔记本电脑上运行了7秒.我知道Julia需要先预编译包,这就是加载时间这么长的原因吗?我发现25秒难以忍受.此外,当我使用不同的初始值再次运行求解器时,运行时间(~1s)要少得多,为什么会这样?这是典型的速度吗?
在R中,您可以在myfun = function(a = NULL,b,c)之类的函数中使用NULL参数,您可以在Julia中做到这一点吗?我问是因为我想将变量a作为条件:如果a = NULL,请这样做,否则请这样做。我当然可以编写不同的功能,但是它们通常会相互重复。我也可以分配任意数字,但使用NULL似乎更清楚。谢谢!。