在Julia中为ODE的解决方案设置动画

在Julia中为ODE的解决方案设置动画,julia,visualization,ode,plots.jl,differentialequations.jl,Julia,Visualization,Ode,Plots.jl,Differentialequations.jl,我有一个朱莉娅密码: using DifferentialEquations using Plots using ParameterizedFunctions plotly() lorenz = @ode_def Lorenz begin dx = σ*(y-x) dy = ρ*x-y-x*z dz = x*y-β*z end σ = 10. β = 8./3. ρ => 28. u0 = [1., 5., 10.] tspan = (0., 2.) prob = ODEPro

我有一个朱莉娅密码:

using DifferentialEquations
using Plots
using ParameterizedFunctions
plotly()
lorenz = @ode_def Lorenz begin
  dx = σ*(y-x)
  dy = ρ*x-y-x*z
  dz = x*y-β*z
end σ = 10. β = 8./3. ρ => 28.
u0 = [1., 5., 10.]
tspan = (0., 2.)
prob = ODEProblem(lorenz, u0, tspan)
sol = solve(prob,save_timeseries=true)
plot(sol,vars=(:x,:y,:z))
其结果是:

如何设置此绘图的动画,使其可以从REPL和jupyter中工作?

对于Differentialsequations.jl,有一个内置的动画功能可以处理此问题。不幸的是,我意识到我忘了把它放在上一个版本中。发布后,语法将是(稍微简化代码):

有几件事:
animate
可以执行任何正常的绘图命令。但是,它会在从开始到第i步的每一帧上打印,这意味着您可能需要手动设置轴,使其不四处移动。另外需要注意的是,我将后端切换到PyPlot。Plotly后端无法制作动画。也许PlotlyJS可以

使用该命令将是迄今为止最简单的方法,但您可以使用“更手动”的。基本上,您可以使用该图绘制每个步骤间隔,并最终到达相同的位置。你必须使用Plots.jl的


编辑:如果你
Pkg.update()
,现在应该可以了。

你想解释一下
微分方程之间的区别吗。jl
内置
animate()
@animate
@gif
。后者在和中记录得相当好。语法不同。您能简要描述一下如何保存gif吗?您是否只需在
animate()
函数中添加
filename=“mygif.gif”
?谢谢此外,您的答案中的一些URL不再工作。修复,谢谢。DiffEq one只是比Plots.jl的一些东西早了一点,这几天可能会更灵活一些。明白了,谢谢Chris!
using DifferentialEquations
using Plots
using ParameterizedFunctions
pyplot()
lorenz = @ode_def Lorenz begin
  dx = σ*(y-x)
  dy = ρ*x-y-x*z
  dz = x*y-β*z
end σ = 10. β = 8./3. ρ => 28.
u0 = [1., 5., 10.]
tspan = (0., 2.)
prob = ODEProblem(lorenz, u0, tspan)
sol = solve(prob)
animate(sol,vars=(:x,:y,:z),xlims=(-20,20),ylims=(-15,20),zlims=(10,40))