ODE.jl - backwards (negative in time) integration

134 views
Skip to first unread message

Chris

unread,
Jun 24, 2016, 2:48:32 PM6/24/16
to julia-users
Hello,

I came across this issue (recreated here using example code):

julia> using ODE

julia> function f(t, y)
           # Extract the components of the y vector
           (x, v) = y

           # Our system of differential equations
           x_prime = v
           v_prime = -x

           # Return the derivatives as a vector
           [x_prime; v_prime]
       end;

julia> # Initial condtions -- x(0) and x'(0)
       const start = [0.0; 0.1]
WARNING: redefining constant start
2-element Array{Float64,1}:
 0.0
 0.1

julia> # Time vector going from 0 to 2*PI in 0.01 increments
       time = 0.:-.1:-4pi;

julia> t, y = ode45(f, start, time);

This hangs for a long time (I've waited up to a minute before killing it). Is this a bug, or something I'm doing wrong? I do notice that reversing the time vector (-4pi:.1:0.0) yields a result.

Thanks,
Chris

Mauro

unread,
Jun 24, 2016, 3:50:42 PM6/24/16
to julia...@googlegroups.com
This is a bug, could you file an issue? Thanks! Note that some solvers,
even some of the Runge-Kutta family work, for instance ode78, ode45_fe,
ode21 or ode23s.

Chris

unread,
Jun 24, 2016, 3:55:32 PM6/24/16
to julia-users

Chris Rackauckas

unread,
Jun 27, 2016, 1:15:45 AM6/27/16
to julia-users
Won't some of the Runge-Kutta solvers be really unstable with a small negative Delta t? What happens when you use a fixed time step method: does it run and diverge?

Chris Rackauckas

unread,
Jun 27, 2016, 1:19:55 AM6/27/16
to julia-users
Nevermind, I realize that thought was silly because of how linear stability is defined. Carry on.

Though I would still give a fixed timestep method a try to narrow down the bug to adaptive stepping. There may be some issue somewhere, something weird like how it chooses min/max timesteps?
Reply all
Reply to author
Forward
0 new messages