93a*_*93a 3 visualization ode julia plots.jl differentialequations.jl
我有一个朱莉娅代码:
\n\nusing DifferentialEquations\nusing Plots\nusing ParameterizedFunctions\nplotly()\nlorenz = @ode_def Lorenz begin\n dx = \xcf\x83*(y-x)\n dy = \xcf\x81*x-y-x*z\n dz = x*y-\xce\xb2*z\nend \xcf\x83 = 10. \xce\xb2 = 8./3. \xcf\x81 => 28.\nu0 = [1., 5., 10.]\ntspan = (0., 2.)\nprob = ODEProblem(lorenz, u0, tspan)\nsol = solve(prob,save_timeseries=true)\nplot(sol,vars=(:x,:y,:z))\n
Run Code Online (Sandbox Code Playgroud)\n\n其结果是:\n下一个图\n
\n我如何为该图制作动画,以便它可以从 REPL 和 jupyter 运行?
对于 DifferentialEquations.jl,有一个内置的动画函数可以处理这个问题。不幸的是,我意识到我忘记将它放在最后一个版本中。当它发布时,语法将是(稍微简化你的代码):
\nusing DifferentialEquations\nusing Plots\nusing ParameterizedFunctions\npyplot()\nlorenz = @ode_def Lorenz begin\n dx = \xcf\x83*(y-x)\n dy = \xcf\x81*x-y-x*z\n dz = x*y-\xce\xb2*z\nend \xcf\x83 = 10. \xce\xb2 = 8./3. \xcf\x81 => 28.\nu0 = [1., 5., 10.]\ntspan = (0., 2.)\nprob = ODEProblem(lorenz, u0, tspan)\nsol = solve(prob)\nanimate(sol,vars=(:x,:y,:z),xlims=(-20,20),ylims=(-15,20),zlims=(10,40))\n
Run Code Online (Sandbox Code Playgroud)\n有几件事:animate
可以执行任何正常的绘图命令。但是,它在从开始到i
第 步绘制的每一帧中,这意味着您可能需要手动设置轴以使它们不会移动。另一件需要注意的事情是我将后端切换到了 PyPlot。Plotly 后端不能做动画。也许 PlotlyJS 可以?动画功能记录在此处。
使用该命令将是迄今为止最简单的方法,但您可以使用集成器界面“更手动”地执行此操作。本质上,您可以使用它绘制每个步骤间隔并最终到达相同的位置。您必须使用 Plots.jl 的动画界面。
\n编辑:如果你Pkg.update()
现在应该可以工作了。