Skip to content

MultiChua

Systems / ODEs / Chaotic attractors

A ring of Chua circuits coupled through their x-variables — multi-scroll chaos and synchronization from linked double-scroll units.

continuous · ODE9 dimensionschaotic

projection (x, y, z)
projection (x, w, y6)

Interactive: drag to rotate

Definition

@staticmethod
def _equations(Y, t, *, alpha, beta, m0, m1, kappa, n_circuits):
    """
    Right-hand side of the MultiChua model.

    X: State vector [x1, y1, z1, x2, y2, z2, ..., xn, yn, zn]
    """
    dim = 3 * n_circuits
    dXdt = [None] * dim

    for i in range(n_circuits):
        # Extract indices for the current circuit
        x_idx = 3 * i
        y_idx = x_idx + 1
        z_idx = x_idx + 2

        # State variables for this circuit
        x = Y(x_idx)
        y = Y(y_idx)
        z = Y(z_idx)

        # Coupled neighbor indices (periodic boundary conditions)
        x_prev = Y((x_idx - 3) % dim)  # Previous x (cyclic indexing)
        x_next = Y((x_idx + 3) % dim)  # Next x (cyclic indexing)

        # Nonlinear Chua diode function
        ramp_x = m1 * x + 0.5 * (m0 - m1) * (abs(x + 1) - abs(x - 1))

        # Chua equations with coupling
        xdot = alpha * (y - x - ramp_x) + kappa * (x_next - x_prev)
        ydot = x - y + z
        zdot = -beta * y

        # Assign derivatives
        dXdt[x_idx] = xdot
        dXdt[y_idx] = ydot
        dXdt[z_idx] = zdot

    return dXdt

Parameters

Symbol Default Role
alpha 15.6 Chua circuit parameter
beta 28 Chua circuit parameter
m0 -1.143 inner slope of the Chua diode
m1 -0.714 outer slope of the Chua diode
kappa 0.1 ring coupling strength
n_circuits 3 number of circuits in the ring (structural — changing it recompiles)

Properties

Lyapunov spectrum
TODO — dim 9 > 6 — full spectrum too slow
Kaplan–Yorke dimension
TODO — requires a numeric Lyapunov spectrum
Divergence ∇·f
n/a — non-smooth right-hand side — divergence is piecewise (defined almost everywhere)
Equilibria
TODO — dim 9 > 8 — equilibrium search skipped

Define it in TSDynamics

import tsdynamics as ts

sys = ts.systems.MultiChua()
traj = sys.integrate(final_time=100.0, dt=0.01)

exps = sys.lyapunov_spectrum()
ts.kaplan_yorke_dimension(exps)

Reference

Yalçın, Suykens & Vandewalle (2005), Cellular Neural Networks, Multi-Scroll Chaos and Synchronization, World Scientific

BibTeX
@misc{multichua,
  title = {MultiChua system},
  note = {Yalçın, Suykens & Vandewalle (2005), Cellular Neural Networks, Multi-Scroll Chaos and Synchronization, World Scientific}
}