# Kuramoto model using DifferentialEquations.jl

**URL:** https://discourse.julialang.org/t/kuramoto-model-using-differentialequations-jl/68641
**Category:** General Usage
**Tags:** diffeq
**Created:** [September 23, 2021, 6:52pm UTC](https://discourse.julialang.org/t/kuramoto-model-using-differentialequations-jl/68641 "2021-09-23T18:52:31Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![VMHidalgo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vmhidalgo/32/23055_2.png) [@VMHidalgo](https://discourse.julialang.org/u/VMHidalgo)
#### Post date: [September 23, 2021, 6:52pm UTC](https://discourse.julialang.org/t/kuramoto-model-using-differentialequations-jl/68641/1 "2021-09-23T18:52:31Z")

</div>

Hi everyone,

I wonder if you can help me with this one.

I am trying to model a simple Kuramoto model using OrdinaryDiffEq and I get an error because the code is trying to Float a complex number. Sorry if I am too ignorant.

Here is the code:

```julia
function parametrized_kuramoto(du,u,p,t)
    # NumberOfOscillators, CouplingConstant, and NaturalFreqs
    N,K,w = p
    # Centroid
    u[1] = 0
    for i in 1:N
        u[1] += cos(u[i+1]) + sin(u[i+1])*im ## This seems to be the problem
    end
    u[1] = u[1]/N
    r = abs(u[1])
    ψ = angle(u[1])
    # Oscillators
    for i in 1:N
    	du[i+1] = w[i] + K*r*sin(ψ-u[i+1])
    end
end

fs = 250 #Sampling frequency
N = 20 # NumberOfOscillators
tspan = (0.0,1.0) #Time
u0 = zeros(N+1) #initial conditions
p = (N=N, K=0.1, w=rand(Uniform(0,10),N)) # just wrap everything up
prob = ODEProblem(parametrized_kuramoto,u0,tspan,p)
sol = solve(prob,RK4(),saveat=collect(0:1/fs:T),progress=true)

```

and I get : ` InexactError: Float64(0.9999935742904003 + 0.0035848818543689786im)`

If I change `u[1] += cos(u[i+1]) + sin(u[i+1])*im` for anything Real it works.

Can I run a system with Complex and real variables together?  
Or should i separate the real and imaginary parts to simulate only real variables?

Thank you.

---

<div class="post-metadata">

### Author: ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)
#### Post date: [September 23, 2021, 7:37pm UTC](https://discourse.julialang.org/t/kuramoto-model-using-differentialequations-jl/68641/2 "2021-09-23T19:37:52Z")

</div>

`u0` is a vector of `Float64`. Therefore, you can’t store `Complex` numbers in it. If you make `u0 = zeros(Complex{Float64}, N+1)`, it would work.

---

<div class="post-metadata">

### Author: ![VMHidalgo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vmhidalgo/32/23055_2.png) [@VMHidalgo](https://discourse.julialang.org/u/VMHidalgo)
#### Post date: [September 23, 2021, 7:57pm UTC](https://discourse.julialang.org/t/kuramoto-model-using-differentialequations-jl/68641/3 "2021-09-23T19:57:38Z")

</div>

Thanks @Oscar_Smith . I knew it was me.
