Skip to content

KaplanYorke

Systems / Maps / Polynomial maps

The Kaplan–Yorke map — a skew product whose fractal dimension is known in closed form.

discrete · map2 dimensionschaotic

KaplanYorke attractor

attractor

Definition

@staticmethod
def _step(X, alpha):
    x, y = X
    # Doubling map on the unit circle. The canonical wrap is mod 1, but the
    # pure doubling map x -> frac(2x) drains a float mantissa one bit per
    # step (2x is an exact shift) and collapses to the x=0 fixed point in
    # ~52 iterations, killing the chaos. Wrapping just below 1 injects a
    # ~5e-8 offset at each fold that keeps the orbit non-degenerate; the
    # dynamics (and Lyapunov exponent ln 2) are unchanged to that tolerance.
    xp = (2 * x) % 0.99999995
    yp = alpha * y + np.cos(4 * np.pi * x)
    return xp, yp

Parameters

Symbol Default Role
alpha 0.2 contraction rate of the y coordinate (0<alpha<1)

State variables: x, y

Properties

Lyapunov spectrum
TODO — lyapunov_spectrum failed: AttributeError
Kaplan–Yorke dimension
TODO — requires a numeric Lyapunov spectrum
Divergence ∇·f
n/a — discrete map — flow divergence undefined (per-step contraction is |det J|)
Equilibria
1 fixed points
0 stable · 1 unstable

Use it in TSDynamics

import tsdynamics as ts

system = ts.systems.KaplanYorke()
traj = system.run(steps=10_000)
ts.plot(traj)

spectrum = ts.analysis.lyapunov_spectrum(system)
ts.analysis.kaplan_yorke_dimension(spectrum)

Reference

Kaplan & Yorke (1979), Functional Differential Equations and Approximation of Fixed Points, Lecture Notes in Mathematics 730, 204-227
doi:10.1007/bfb0064319

BibTeX
@misc{kaplanyorke,
  title = {KaplanYorke system},
  note = {Kaplan & Yorke (1979), Functional Differential Equations and Approximation of Fixed Points, Lecture Notes in Mathematics 730, 204-227},
  doi = {10.1007/bfb0064319}
}