# solving DiffEq on Complex Arrays

**URL:** <https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600>\
**Category:** General Usage\
**Tags:** diffeq\
**Created:** [May 25, 2019, 2:40pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600 "2019-05-25T14:40:40Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![balintradics](https://avatars.discourse-cdn.com/v4/letter/b/3da27b/32.png) [@balintradics](https://discourse.julialang.org/u/balintradics)\
**Post date:** [May 25, 2019, 2:40pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/1 "2019-05-25T14:40:40Z")

</div>

Dear Julia,  
Following some examples, I am trying to solve a system ODE diff. eqs. on complex numbers, for which I have to use Complex array types. I have tried this from an example but it fails for me with Julia 1.0.3. Normal real/float ODE works fine, but when I try to use Complex array types I get such a problem (pls see below).

Could you please advise what I am doing wrong here?

Thanks a lot!

Best regards,  
Balint

```julia
using DifferentialEquations
E = 200.0
function Eq(t::Float64, u::Array{Complex{Float64},1}, du::Array{Complex{Float64},1})
    du[1] = -im * E * u[1]
    du[2] = -im * E * u[2]
end

u = [1.0 + 0.0im, 1.5 + 0.0im]
T = 1000.0
prob = ODEProblem(Eq, u, (0, T))
prob.u0[1] = u[1]; prob.u0[2] = u[2]
sol = solve(prob; save_everystep=true, dense=false)

Stacktrace:
 [1] (::ODEFunction{false,typeof(Eq),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing})(::Array{Complex{Float64},1}, ::Nothing, ::Vararg{Any,N} where N) at /Users/balintradics/.julia/packages/DiffEqBase/s4c9b/src/diffeqfunction.jl:188
 [2] ode_determine_initdt(::Array{Complex{Float64},1}, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::typeof(DiffEqBase.ODE_DEFAULT_NORM), ::ODEProblem{Array{Complex{Float64},1},... (very long stack trace)

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 25, 2019, 7:18pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/2 "2019-05-25T19:18:11Z")

</div>

Welcome to the community! I see you found a very old code snippet. For the master resource you should consult [docs.juliadiffeq.org](http://docs.juliadiffeq.org). For example, you’d solve the equation with:

```julia
using DifferentialEquations
function Eq(du,u,p,t)
    E = 200.0
    du[1] = -im * E * u[1]
    du[2] = -im * E * u[2]
end

u = [1.0 + 0.0im, 1.5 + 0.0im]
T = 1000.0
prob = ODEProblem(Eq, u, (0, T))
sol = solve(prob; dense=false)

```

---

<div class="post-metadata">

**Author:** ![balintradics](https://avatars.discourse-cdn.com/v4/letter/b/3da27b/32.png) [@balintradics](https://discourse.julialang.org/u/balintradics)\
**Post date:** [July 4, 2019, 8:18am UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/3 "2019-07-04T08:18:51Z")

</div>

I am sorry for my very late answer. Thanks a lot, it worked perfectly! 🙂

---

<div class="post-metadata">

**Author:** ![paolob](https://avatars.discourse-cdn.com/v4/letter/p/f0a364/32.png) [@paolob](https://discourse.julialang.org/u/paolob)\
**Post date:** [August 26, 2019, 1:51pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/4 "2019-08-26T13:51:20Z")

</div>

Hi! I’m definetely a newbie of Julia  
I’m trying to solve systems of ODE with complex numbers. I tried both the snippets reported above but none worked (yes, I installed the package and it works with real numbers… 😉 ).  
Using the latter I get the following error:

MethodError: no method matching isless(::Float64, ::Complex{Float64})

I’m using Julia 1.2.0 on win8.1  
Could anyone suggest me where I’m wrong?

Thanks!  
Paolo

---

<div class="post-metadata">

**Author:** ![BeastyBlacksmith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/beastyblacksmith/32/4741_2.png) [@BeastyBlacksmith](https://discourse.julialang.org/u/BeastyBlacksmith)\
**Post date:** [August 26, 2019, 2:01pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/5 "2019-08-26T14:01:28Z")

</div>

Choosing a solver algorithm by hand works:

```julia
using DifferentialEquations
function Eq(du,u,p,t)
    E = 200.0
    du[1] = -im * E * u[1]
    du[2] = -im * E * u[2]
end

u = [1.0 + 0.0im, 1.5 + 0.0im]
T = 1000.0
prob = ODEProblem(Eq, u, (0, T))
sol = solve(prob, Tsit5(); dense=false)

```

---

<div class="post-metadata">

**Author:** ![paolob](https://avatars.discourse-cdn.com/v4/letter/p/f0a364/32.png) [@paolob](https://discourse.julialang.org/u/paolob)\
**Post date:** [August 26, 2019, 2:17pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/6 "2019-08-26T14:17:49Z")

</div>

Ou! I didn’t though about this…

Really thanks!  
P.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 26, 2019, 3:12pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/7 "2019-08-26T15:12:59Z")

</div>

Can you open an issue with your example? Sounds like the default algorithm chooser is trying to see if your state value is less than ? for choosing an appropriate method

---

<div class="post-metadata">

**Author:** ![paolob](https://avatars.discourse-cdn.com/v4/letter/p/f0a364/32.png) [@paolob](https://discourse.julialang.org/u/paolob)\
**Post date:** [August 26, 2019, 3:25pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/8 "2019-08-26T15:25:48Z")

</div>

what’d I do to open an issue?  
I simply copy&paste the snippet above.  
Do you want me to report the entire error message?

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 26, 2019, 3:27pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/9 "2019-08-26T15:27:07Z")

</div>

The snippet above works. What we need is your snippet that doesn’t work. We need the example that doesnt work so we can run it to fix it.

---

<div class="post-metadata">

**Author:** ![paolob](https://avatars.discourse-cdn.com/v4/letter/p/f0a364/32.png) [@paolob](https://discourse.julialang.org/u/paolob)\
**Post date:** [August 26, 2019, 3:30pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/10 "2019-08-26T15:30:56Z")

</div>

here it is…

```julia
using DifferentialEquations
function Eq(du,u,p,t)
    E = 200.0
    du[1] = -im * E * u[1]
    du[2] = -im * E * u[2]
end

u = [1.0 + 0.0im, 1.5 + 0.0im]
T = 1000.0
prob = ODEProblem(Eq, u, (0, T))
sol = solve(prob; dense=false)

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 26, 2019, 4:06pm UTC](https://discourse.julialang.org/t/solving-diffeq-on-complex-arrays/24600/11 "2019-08-26T16:06:58Z")

</div>

Thanks! This PR fixes it: [https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/905](https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/905)
