Skip to content

Continuous coupled dynamical systems

# CausalityTools.Systems.mediated_linkMethod.

mediated_link(;u₀ = rand(9), ωx = 1, ωy = 1.015, ωz = 0.985,
    k = 0.15, l = 0.2, m = 10.0, 
    c = 0.06) -> ContinuousDynamicalSystem

Initialise a three-subsystem dynamical system where X and Y are driven by Z. At the default value of the coupling constant c = 0.06, the responses X and Y are already synchronized to the driver Z.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} dx_1 &= -\omega_x x_2 - x_3 + c*(z_1 - x_1) \\ dx_2 &= \omega_x x_1 + k*x_2 \\ dx_3 &= l + x_3(x_1 - m) \\ dy_1 &= -\omega_y y_2 - y_3 + c*(z_1 - y_1) \\ dy_2 &= \omega_y y_1 + k*y_2 \\ dy_3 &= l + y_3(y_1 - m) \\ dz_1 &= -\omega_z z_2 - z_3 \\ dz_2 &= \omega_z z_1 + k*z_2 \\ dz_3 &= l + z_3(z_1 - m) \end{aligned}

References

  1. Krakovská, Anna, et al. "Comparison of six methods for the detection of causality in a bivariate time series." Physical Review E 97.4 (2018): 042207

source

Two bidirectionally coupled 3D Lorenz systems

# CausalityTools.Systems.lorenz_lorenz_bidirMethod.

lorenz_lorenz_bidir(; u0 = rand(6), 
    c_xy = 0.2, c_yx = 0.2, 
    a₁ = 10, a₂ = 28, a₃ = 8/3, 
    b₁ = 10, b₂ = 28, b₃ = 9/3) -> ContinuousDynamicalSystem

Initialise a bidirectionally coupled Lorenz-Lorenz system, where each subsystem is a 3D Lorenz system [1]. Default values for the parameters a₁, a₂, a₃, b₁, b₂, b₃ are as in [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -a_1 (x_1 - x_2) + c_{yx}(y_1 - x_1) \\ \dot{x_2} &= -x_1 x_3 + a_2 x_1 - x_2 \\ \dot{x_3} &= x_1 x_2 - a_3 x_3 \\ \dot{y_1} &= -b_1 (y_1 - y_2) + c_{xy} (x_1 - y_1) \\ \dot{y_2} &= -y_1 y_3 + b_2 y_1 - y_2 \\ \dot{y_3} &= y_1 y_2 - b_3 y_3 \end{aligned}

References

  1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.

source

Two bidirectionally coupled 3D Lorenz systems forced by another 3D Lorenz system

# CausalityTools.Systems.lorenz_lorenz_lorenz_bidir_forcedMethod.

lorenz_lorenz_lorenz_bidir_forced(; u0 = rand(9), 
    c_xy = 0.1, c_yx = 0.1,
    c_zx = 0.05, c_zy = 0.05, 
    a₁ = 10, a₂ = 28, a₃ = 8/3,
    b₁ = 10, b₂ = 28, b₃ = 8/3,
    c₁ = 10, c₂ = 28, c₃ = 8/3)

Initialise a system consisting of two bidirectionally coupled 3D Lorenz systems forced by an external 3D Lorenz system, giving a 9D system.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= - a_1 (x_1 - x_2) + c_{yx}(y_1 - x_1) + c_{zx}(z_1 - x_1) \\ \dot{x_2} &= - x_1 x_3 + a_2 x_1 - x_2 \\ \dot{x_3} &= x_1 x_2 - a_3 x_3 \\ \dot{y_1} &= -b_1 (y_1 - y_2) + c_{xy} (x_1 - y_1) + c_{zy}(z_1 - y_1) \\ \dot{y_2} &= - y_1 y_3 + b_2 y_1 - y_2 \\ \dot{y_3} &= y_1 y_2 - b_3 y_3 \\ \dot{z_1} &= - c_1 (z_1 - z_2) \\ \dot{z_2} &= - z_1 z_3 + c_2 z_1 - z_2 \\ \dot{z_3} &= z_1 z_2 - c_3 z_3 \end{aligned}

References

  1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.

source

Three transitively connected 3D Lorenz systems

# CausalityTools.Systems.lorenz_lorenz_lorenz_transitiveMethod.

lorenz_lorenz_lorenz_transitive(;uᵢ=rand(9),
            σ₁ = 10.0, σ₂ = 10.0, σ₃ = 10.0,
            ρ₁ = 28.0, ρ₂ = 28.0, ρ₃ = 28.0,
            β₁ = 8/3,  β₂ = 8/3,  β₃ = 8.3,
            c₁₂ = 1.0, c₂₃ = 1.0) -> ContinuousDynamicalSystem

Initalise a dynamical system consisting of three coupled Lorenz attractors with a transitive causality chain where X₁ → X₂ and X₂ → X₃. In total, the three 3D-subsystems create a 9-dimensional dynamical system.

The strength of the forcing X₁ → X₂ is controlled by the parameter c₁, and the forcing from X₂ → X₃ by c₂. The remaining parameters are the usual parameters for the Lorenz system, where the subscript i refers to the subsystem Xᵢ.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= \sigma_1(y_1 - x_1) \\ \dot{y_1} &= \rho_1 x_1 - y_1 - x_1 z_1 \\ \dot{z_1} &= x_1 y_1 - \beta_1 z_1 \\ \dot{x_2} &= \sigma_2 (y_2 - x_2) + c_{12}(x_1 - x_2) \\ \dot{y_2} &= \rho_2 x_2 - y_2 - x_2 z_2 \\ \dot{z_2} &= x_2 y_2 - \beta_2 z_2 \\ \dot{x_3} &= \sigma_3 (y_3 - x_3) + c_{23} (x_2 - x_3) \\ \dot{y_3} &= \rho_3 x_3 - y_3 - x_3 z_3 \\ \dot{z_3} &= x_3 y_3 - \beta_3 z_3 \end{aligned}

Usage in literature

This system was studied by Papana et al. (2013) for coupling strengths c_{12} = 0, 1, 3, 5 and c_{23} = 0, 1, 3, 5.

References

  1. Papana et al., Simulation Study of Direct Causality Measures in Multivariate Time Series. Entropy 2013, 15(7), 2635-2661; doi:10.3390/e15072635

source

Two bidirectionally coupled 3D Rössler systems

# CausalityTools.Systems.rossler_rossler_bidirMethod.

rossler_rossler_bidir(; u0 = rand(6), 
    ω₁ = 1.015, ω₂ = 0.985, 
    c_xy = 0.1, c_yx = 0.1, 
    a₁ = 0.15, a₂ = 0.2, a₃ = 10,
    b₁ = 0.15, b₂ = 0.2, b₃ = 10)

Initialise a system of two bidirectionally coupled 3D Rössler systems. This system has been modified from [1] to allow other parameterisations, but default parameters are as in [1].

The X and Y subsystems are mostly synchronized for c_xy > 0.1 or c_yx > 0.1.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -\omega_1(x_2 + x_3) + c_{yx}(y_1 - x_1) \\ \dot{x_2} &= \omega_1 x_1 + a_1 x_2 \\ \dot{x_3} &= a_2 + x_3 (x_1 - a_3) \\ \dot{y_1} &= -\omega_2 (y_2 + y_3) + c_{xy}(x_1 - y_1) \\ \dot{y_2} &= \omega_2 y_1 + b_1 y_2 \\ \dot{y_3} &= b_2 + y_3 (y_1 - b_3) \end{aligned}

References

  1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.

source

Two bidirectionally coupled 3D Rössler systems forced by another 3D Rössler system

# CausalityTools.Systems.rossler_rossler_rossler_bidir_forcedMethod.

rossler_rossler_rossler_bidir_forced(; u0 = rand(9), 
    ω₁ = 1.015, ω₂ = 0.985, ω₃ = 0.95,
    c_xy = 0.1, c_yx = 0.1,
    c_zx = 0.05, c_zy = 0.05, 
    a₁ = 0.15, a₂ = 0.2, a₃ = 10,
    b₁ = 0.15, b₂ = 0.2, b₃ = 10,
    c₁ = 0.15, c₂ = 0.2, c₃ = 10)

Equations of motion for a system consisting of three coupled 3D Rössler systems (X, Y, Z), giving a 9D system [1]. The external system Z influences both X and Y (controlled by c_zx and c_zy). Simultaneously, the subsystems X and Y bidirectionally influences each other (controlled by c_xy and c_yx).

The X and Y subsystems are mostly synchronized for c_xy > 0.1 or c_yx > 0.1.

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x_1} &= -\omega_1 (x_2 + x_3) + c_{yx}(y_1 - x_1) + c_{zx}(z_1 - x_1) \\ \dot{x_2} &= \omega_1 x_1 + a_1 x_2 \\ \dot{x_3} &= a_2 + x_3 (x_1 - a_3) \\ \dot{y_1} &= -\omega_1 (y_2 + y_3) + c_{xy}(x_1 - y_1) + c_{zy}(z_1 - y_1) \\ \dot{x_2} &= \omega_2 y_1 + b_1 y_2 \\ \dot{x_3} &= b_2 + x_3 (y_1 - b_3) \\ \dot{y_1} &= -\omega_2 (z_2 + z_3) \\ \dot{x_2} &= \omega_2 z_1 + c_1 z_2 \\ \dot{x_3} &= c_2 + z_3 (z_1 - c_3) \end{aligned}

References

  1. Amigó, José M., and Yoshito Hirata. "Detecting directional couplings from multivariate flows by the joint distance distribution." Chaos: An Interdisciplinary Journal of Nonlinear Science 28.7 (2018): 075302.

source

Unidirectonal forcing from a 3D Rössler system to a 3D Lorenz system

# CausalityTools.Systems.rossler_lorenzMethod.

rossler_lorenz(;u₀ = rand(6), a₁ = -6, a₂ = 6, a₃ = 2.0, 
    b₁ = 10, b₂ = 28, b₃ = 8/3, c_xy = 1) -> ContinuousDynamicalSystem

Initialise a Rössler-Lorenz system consisting of two independent 3D subsystems: one Rössler system and one Lorenz system. They are coupled such that the second component (x₂) of the Rössler system unidirectionally forces the second component (y₂) of the Lorenz system.

The parameter c_xy controls the coupling strength. The implementation here also allows for tuning the parameters of each subsystem by introducing the constants a₁, a₂, a₃, b₁, b₂, b₃. Default values for these parameters are as in [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot x_1 &= a_1(x_2 + x_3) \\ \dot x_2 &= a_2(x_1 + 0.2x_2) \\ \dot x_3 &= a_2(0.2 + x_3(x_1 - a_3)) \\ \dot y_1 &= b_1(y_2 - y_1) \\ \dot y_2 &= y_1(b_2 - y_3) - y_2 +c_{xy}(x_2)^2 \\ \dot y_3 &= y_1 y_2 - b_3y_3 \end{aligned}

with the coupling constant c_{xy} \geq 0.

References

  1. Krakovská, Anna, et al. "Comparison of six methods for the detection of causality in a bivariate time series." Physical Review E 97.4 (2018):042207. https://journals.aps.org/pre/abstract/10.1103/PhysRevE.97.042207

source

N-scroll Chua attractors

# CausalityTools.Systems.chuacircuit_nscroll_sineMethod.

chuacircuit_nscroll_sine(;u₀ = [0.0, 0.0, 0.28695],
    α = 10.814, β = 14, γ = 0, a = 1.3, b = 0.11, c = 2,
    σx = 0.0, σy = 0.0, σz = 0.0)

Initialise an adjusted Chua system giving rise to n-scroll attractors [1].

Equations of motion

The dynamics is generated by the following vector field

\begin{aligned} \dot{x} = \alpha (y - fx) + \eta x \\ \dot{y} = x - y + z + \eta y \\ \dot{z} = -\beta y - \gamma z + \eta z \end{aligned}

where \eta x, \eta z, and \eta z are drawn independently from normal distributions with zero mean and standard deviations σx, σy and σz at each iteration.

fx is given by the following conditions:

n::Int = c + 1

if x >= 2*a*c
    fx = (b*pi/2*a)*(x - 2*a*c)
elseif -2*a*c < x < 2*a*c
    d = ifelse(isodd(n), pi, 0)
    fx = -b*sin((pi*x/2*a) + d)
elseif x <= -2*a*c
    fx = (b*pi/2*a)*(x + 2*a*c)
end

References

  1. Tang, Wallace KS, et al. "Generation of n-scroll attractors via sine function." IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications 48.11 (2001): 1369-1372.

source