# DifferentialEquations can solve backward?

**URL:** <https://discourse.julialang.org/t/differentialequations-can-solve-backward/62072>\
**Category:** General Usage\
**Tags:** diffeq\
**Created:** [May 30, 2021, 4:51am UTC](https://discourse.julialang.org/t/differentialequations-can-solve-backward/62072 "2021-05-30T04:51:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![cpraveen](https://avatars.discourse-cdn.com/v4/letter/c/f07891/32.png) [@cpraveen](https://discourse.julialang.org/u/cpraveen)\
**Post date:** [May 30, 2021, 4:51am UTC](https://discourse.julialang.org/t/differentialequations-can-solve-backward/62072/1 "2021-05-30T04:51:06Z")

</div>

Using DifferentialEquations, I am solving a simple first order ODE backwards which should work, right ? But the solver fails. I can solve this using my own forward Euler scheme without any problem.

Note that the interval is (Rp, Rm) and Rp \> Rm.

```julia
using DifferentialEquations

beta = 0.07
Rp = sqrt(2.0)
Rm = 0.08
Cf = 0.0036
g = 9.81
q0 = 1.2e-3
h0 = 0.003

# Radial velocity at r = Rp
u0 = -q0/(h0 * Rp)

# p is extra parameters: not used
function rhs(r, p, u)
   num = u * ( Cf * abs(u) * u^3 * r^3
              - u * g * q0 * r^2 * tan(beta)
              - q0^2 * g )
   den = q0 * r * (r * u^3 + q0 * g)
   return num/den
end

rspan = (Rp, Rm)
prob = ODEProblem(rhs, u0, rspan)
sol = solve(prob, Tsit5(), reltol=1e-8, abstol=1e-8

```

---

<div class="post-metadata">

**Author:** ![ranocha](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ranocha/32/35588_2.png) [@ranocha](https://discourse.julialang.org/u/ranocha)\
**Post date:** [May 30, 2021, 6:48am UTC](https://discourse.julialang.org/t/differentialequations-can-solve-backward/62072/2 "2021-05-30T06:48:10Z")

</div>

Did you mess up the order of arguments of the ODE right-hand side? It must be `u, p, t` for out-of-place problems (or `du, u, p, t` for in-place problems), see [Ordinary Differential Equations · DifferentialEquations.jl](https://diffeq.sciml.ai/latest/tutorials/ode_example/#Example-1-:-Solving-Scalar-Equations). Here, `u` is the ODE solution (dependent variable), `p` are possible parameters, and `t` is the time (independent variable).

```julia
julia> using OrdinaryDiffEq # ODE part of DifferentialEquations

julia> f(u, params, time) = u
f (generic function with 1 method)

julia> ode_forward = ODEProblem(f, 1.0, (0.0, 1.0));

julia> sol_forward = solve(ode_forward, Tsit5());

julia> sol_forward.u[end], exp(1)
(2.718281708773342, 2.718281828459045)

julia> ode_backward = ODEProblem(f, 1.0, (0.0, -1.0));

julia> sol_backward = solve(ode_backward, Tsit5());

julia> sol_backward.u[end], exp(-1)
(0.3678795934275483, 0.36787944117144233)

```
