Skip to content

Synthetic coupled dynamical systems

Two coupled Henon maps

For this example, we'll consider set of unidirectionally coupled Henon maps, given by the difference equations

where the parameter c controls how strong the dynamical forcing is.

Where has the system been used?

This system was investigated by Krakovská et al. (2018) to study the performance of different causality detection algorithms.

Represent as a DiscreteDynamicalSystem

We first define the equations of motion.

function eom_henon2(x, p, n)
    c = p[1]
    x₁, x₂, y₁, y₂ = (x...,)
    dx₁ = 1.4 - x₁^2 + 0.3*x₂
    dx₂ = x₁
    dy₁ = 1.4 - (c * x₁ * y₁  +  (1 - c)*y₁^2) + 0.3*y₂
    dy₂ = y₁
    return SVector{4}(dx₁, dx₂, dy₁, dy₂)
end

To make things easier to use, we create function that generates a DiscreteDynamicalSystem instance for any coupling strength c and initial condition u₀.

function henon2(;u₀ = rand(4), c = 0.1)
    p = [c]
    return DiscreteDynamicalSystem(eom_henon2, u₀, p)
end

By tuning the coupling strength c, we may control the strength of the influence $x$ has on $y$. An example realization of the system when the coupling strength is c = 0.5 is:

s = henon2(c = 0.5)
orbit = trajectory(s, 100)
x, y = orbit[:, 1], orbit[:, 2]
plot(x, label = "x", lc = :black)
plot!(y, label = "y", lc = :red)
xlabel!("Time step"); ylabel!("Value")

Predefined system

This system is predefined in CausalityTools.Systems, and can be initialized using the henon2 function.

References

Krakovská, A., Jakubík, J., Chvosteková, M., Coufal, D., Jajcay, N., & Paluš, M. (2018). Comparison of six methods for the detection of causality in a bivariate time series. Physical Review E, 97(4), 042207. https://journals.aps.org/pre/abstract/10.1103/PhysRevE.97.042207