KaplanYorke¶
Systems / Maps / Polynomial maps
The Kaplan–Yorke map — a skew product whose fractal dimension is known in closed form.
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
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
