2

我创建了一个阻尼摆的相平面的gif。 为此,我使用包装DifferentialEquations.jl进行整合,将Plots.jl与绘图后端和ImageMagick.jl一起用于绘图和动画。要做到这一点,我将函数集成到不同的初始值中,并且每个函数都进行了很多次,因此我得到了一些小片段,它们以gif的形式一起形成最终的绘图。代码如下:Julia中的不一致分割错误

using DifferentialEquations 
using Plots ; default(size=(1000,700)) 
pyplot() 
using ImageMagick 

x = linspace(0.0,50.0,101) 
tfinal = collect(x) 
b = 0.2 
p = plot() 
u0vals = ([pi,-2.41],[2.0*pi,-2.41],[-2.0*pi,-3.0],[-2pi,3.0]) 
anim = @animate for j=1:endof(tfinal) 
    for i=1:endof(u0vals) 
     f = function(t,u,du) 
     du[1] = u[2] 
     du[2] = -b*u[2] -sin(u[1]) 
     end 
     u0 = u0vals[i] 
     tspan=(0.0,tfinal[j]) 
     prob = ODEProblem(f, u0, tspan) 
     sol = solve(prob) 
     plot!(p, sol, vars=(1,2),arrow=true,legend = false, titlefont=font(15, "cursive"),title = "STRO Figure 6.7.7", linewidth=1,linecolor=:"black",xlims=(-15.0,10.0),border=false,ticks=nothing,grid=false) 
    end 
end 
gif(anim, "STRO_6_7_7_GIF_.gif",fps=5) 

这段代码在我第一次运行它时运行的很好。但是,我试图再次运行它更改tfinal,它显示:signal (11): Segmentation fault: 11(这只是茱莉亚消息的第一行)。然后我试着再次运行最初的代码,并得到相同的消息。重新启动朱莉娅和电脑后,我得到了同样的信息。我再次更改tfinal,它再次运行,并且每个tfinal我想使用。我有我想要的输出。然而,它让我困惑,茱莉亚对我的代码的“反应”是不一致的。如果需要,我可以粘贴完整的错误,但很长。

编辑:以下是完整的错误消息

signal (11): Segmentation fault: 11 
while loading no file, in expression starting on line 0 
ode_interpolation at /Users/pacagal/.julia/v0.5/OrdinaryDiffEq/src/dense/generic_dense.jl:134 
[inlined] 
InterpolationData at /Users/pacagal/.julia/v0.5/OrdinaryDiffEq/src/interp_func.jl:20 
unknown function (ip: 0x32b584519) 
macro expansion at /Users/pacagal/.julia/v0.5/DiffEqBase/src/solutions/solution_interface.jl:72 [inlined] 
apply_recipe at /Users/pacagal/.julia/v0.5/RecipesBase/src/RecipesBase.jl:238 
unknown function (ip: 0x32b5808c6) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9 x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
jl_apply at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia.h:1392 [inlined] 
jl_f__apply at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/builtins.c:547 
_process_userrecipes at /Users/pacagal/.julia/v0.5/Plots/src/pipeline.jl:73 
_plot! at /Users/pacagal/.julia/v0.5/Plots/src/plot.jl:171 
unknown function (ip: 0x32b57bbed) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
#plot!#266 at /Users/pacagal/.julia/v0.5/Plots/src/plot.jl:151 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
jl_apply at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia.h:1392 [inlined] 
jl_f__apply at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/builtins.c:547 
#plot! at ./<missing>:0 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
macro expansion; at ./REPL[10]:11 [inlined] 
macro expansion; at /Users/pacagal/.julia/v0.5/Plots/src/animation.jl:154 [inlined] 
anonymous at ./<missing> (unknown line) 
unknown function (ip: 0x32b5566ff) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_toplevel_eval_flex at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/toplevel.c:569 
jl_toplevel_eval_in_warn at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/builtins.c:590 
eval at ./boot.jl:234 
jlcall_eval_19752 at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
eval_user_input at ./REPL.jl:64 
unknown function (ip: 0x3192d9e66) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
macro expansion at ./REPL.jl:95 [inlined] 
#3 at ./event.jl:68 
unknown function (ip: 0x3192d30df) 
jl_call_method_internal at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia_internal.h:189 [inlined] 
jl_apply_generic at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/gf.c:1942 
jl_apply at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/./julia.h:1392 [inlined] 
start_task at /Users/osx/buildbot/slave/package_osx10_9-x64/build/src/task.c:253 
Allocations: 40525029 (Pool: 40521241; Big: 3788); GC: 71 

[Proceso completado] 
+0

使用不同的后端,或者如果你真的想使用PyPlot,请参阅:https://github.com/JuliaPy/PyPlot.jl/issues/234 –

+0

@TomBreloff它既不能用于'plotly()','' plotlyjs()','pgfplots()','inspectdr()'。 'gr()'它首先为'x = linspace(0.0,50.0,101)'工作,但不适用于'x = linspace(0.0,50.0,201)'。我再次用'gr()'和'x = linspace(0.0,50.0,101)',它没有奏效。 – Pau

+0

这是在Windows上吗? ImageMagick在Windows上有一些问题。你能否包含完整的错误信息?有几件事情可能会发生,没有它就很难知道。 –

回答

1

段故障是因为你的时间跨度是微不足道的。

x = linspace(0.0,50.0,101) 
tfinal = collect(x) 

通知那么tfinal[1]=0.0,所以第一时间跨度是(0.0,0.0)。它正在做的是给出一个微不足道的解决方案,然后试图绘制它,结束了一个边界错误,但边界检查被关闭。哎哟。我提交了一个提交,这样下一个补丁将会引发一个错误,提醒用户时间不重要。

这意味着,解决这个问题的方法是删除第一时间点:

x = linspace(0.0,50.0,101) 
tfinal = collect(x)[2:end] 

这会做得很好。

你可能也想看看提供的animation interface。不知道它是否可以按照所需的顺序轻松制作动画:可能需要更多Plots.jl控件。

+0

之后,它仍然没有工作,所以我决定清除朱莉娅和家酿。现在使用你的改变它完美的作品。它仍然困扰我不一致,我在这个问题上评论。为什么使用完全相同的代码和相同的“环境”(不运行其他任何东西或类似的东西)有时会工作,有时不用。另外,我无法安装ImageMagick软件包(我正在获取分段错误)。可能是因为你提到的那个界限错误而产生的? – Pau

+1

关于Homebrew出现问题的全部事情是因为它意外地改变了我想的一些状态。看到我关联的问题,但这是一个单独的问题,开发人员应尽快整理。 –