Chaos & Dynamical Systems
April 2026 · 16 min read · Nonlinear Dynamics · Chaos Theory · Canvas 2D

Bifurcation Diagrams: Period-Doubling, Feigenbaum & the Route to Chaos

A bifurcation diagram plots all long-term states of a system against a control parameter — and for the logistic map it reveals one of the most astonishing patterns in mathematics: an infinitely repeated self-similar cascade of period-doublings leading to chaos, governed by the universal constant δ ≈ 4.669 that appears in every smooth unimodal map ever studied.

1. The Logistic Map

The logistic map is the simplest nonlinear difference equation that exhibits the full route from order to chaos:

xₙ₊₁ = r · xₙ · (1 − xₙ) x ∈ [0, 1] : population fraction (0 = extinct, 1 = at carrying capacity) r ∈ [0, 4] : growth rate parameter

Introduced by Robert May (1976) in the context of population dynamics, it models the interaction between reproduction (linear in x) and competition for resources (−x² term). Despite its apparent simplicity, it encodes the entire mathematical structure of one-dimensional chaos.

The key properties of f(x) = rx(1−x):

The bifurcation diagram is constructed by: (1) picking a starting x₀ ≈ 0.5, (2) iterating 1000 times to allow transients to die out, (3) plotting the next 200 iterates as dots at horizontal position r. Repeating this for thousands of r values produces the famous "period-doubling tree".

2. Fixed Points & Stability Analysis

Period-1 Fixed Points

A fixed point satisfies x* = f(x*):

x* = r·x*·(1−x*) → x*(r·(1−x*) − 1) = 0 → x* = 0 or x* = 1 − 1/r

Stability is determined by the derivative |f'(x*)| = |r(1 − 2x*)|:

Loss of Stability at r = 3

At r = 3, the derivative f'(x*) = −1 exactly. The fixed point becomes a period-1 flip saddle. For r slightly above 3, small perturbations grow (alternately above/below x*) and the system settles into a period-2 cycle: a pair of points {x₁, x₂} satisfying x₂ = f(x₁) and x₁ = f(x₂), i.e. x = f(f(x)) = f²(x).

This is a period-doubling (flip) bifurcation: the stable fixed point gives birth to a stable 2-cycle at r = 3, in a process driven by the eigenvalue crossing the unit circle at −1.

3. Period-Doubling Cascade

The period-2 cycle itself loses stability at r₂ ≈ 3.449, spawning a period-4 cycle. The period-4 cycle bifurcates at r₃ ≈ 3.544 to period-8, and so on. The sequence of bifurcation points {rₙ} converges to the accumulation point r∞ ≈ 3.5699456... — the onset of chaos.

n Period 2ⁿ born at rₙ rₙ₊₁ − rₙ δₙ = (rₙ−rₙ₋₁)/(rₙ₊₁−rₙ)
1 Period 2 3.000000 0.449490
2 Period 4 3.449490 0.094757 4.7514
3 Period 8 3.544090 0.020284 4.6558
4 Period 16 3.564407 0.004347 4.6683
5 Period 32 3.568750 0.000930 4.6686
6 Period 64 3.569692 0.000199 4.6692
Chaos onset 3.569946 0 δ = 4.6692...

The ratio δₙ converges to the Feigenbaum constant δ ≈ 4.6692. The gaps between successive bifurcation points shrink geometrically: each interval is approximately 1/δ ≈ 21.4% of the previous. The period-2ⁿ cycle has 2ⁿ branches in the bifurcation diagram, all created by the same flip mechanism.

Self-similarity: the sub-diagram near each bifurcation point r = rₙ is a rescaled copy of the entire diagram. Rescaling the x-axis by factor α ≈ −2.5029 (the second Feigenbaum constant) produces an identical copy. This is the hallmark of a renormalisation group fixed point in function space.

4. Feigenbaum Universality

Mitchell Feigenbaum discovered (1975–1978) that the constant δ ≈ 4.6692 is universal: it appears in every smooth unimodal map with a single quadratic maximum, regardless of the specific formula. The logistic map, the sine map (xₙ₊₁ = r sin(πxₙ)), the tent map, and countless physical systems all produce the same δ.

Feigenbaum constants: δ = lim_{n→∞} (rₙ − rₙ₋₁) / (rₙ₊₁ − rₙ) ≈ 4.669201609... α = lim scaling of x-axis between levels ≈ −2.502907876... Both are transcendental numbers; no closed form is known.

Renormalisation Group Explanation

The period-doubling cascade is a fixed point of the renormalisation operator T acting on function space:

(Tf)(x) = −(1/α) · f(f(−α·x)) // T rescales the function composed with itself // δ is the unstable eigenvalue of DT at the fixed point g = Tg // g(x) ≈ 1 − 1.5276x² + ... (the universal function)

The linearisation of T at the fixed function g has one unstable eigenvalue δ (all others < 1). This single unstable direction explains why all smooth unimodal maps approach the same cascade: they are all attracted to the stable manifold of g, and then travel along the unstable direction with rate δ. The universality class is analogous to universality classes in statistical mechanics near critical points — a deep connection formalised by Wilson's renormalisation group.

Experimental Verification

δ has been measured in physical experiments:

5. Chaos, Periodic Windows & Crises

Beyond r∞ ≈ 3.5699, the system is predominantly chaotic — but not uniformly. The bifurcation diagram past the chaos onset is interspersed with periodic windows: narrow ranges of r where a stable cycle re-emerges from the chaos.

Periodic Windows

The most prominent window near r ≈ 3.828 is the period-3 window. Its existence is guaranteed by the Li-Yorke theorem (1975): "period 3 implies chaos". More precisely, if a continuous map has a period-3 orbit, it has orbits of all periods.

Each periodic window itself undergoes a sub-cascade of period doublings, leading to its own mini-chaos regime. The pattern repeats at every scale — a fractal structure in parameter space. Windows of all periods appear, ordered by the Sharkovskii ordering:

Sharkovskii order: 3 ≻ 5 ≻ 7 ≻ ... ≻ 6 ≻ 10 ≻ ... ≻ 2·3 ≻ 2·5 ≻ ... ≻ 4 ≻ 2 ≻ 1 // If f has a period-n orbit and n ≻ m, then f also has a period-m orbit

Interior Crises

At certain r values the chaotic attractor changes in size suddenly — an interior crisis. At the famous r ≈ 3.6786 the attractor expands from two disjoint intervals to a single interval, driven by the unstable period-3 orbit colliding with the basin boundary. These transitions (Grebogi, Ott & Yorke, 1982) are abrupt but structurally understandable via unstable periodic orbits.

6. Lyapunov Exponent Overlay

The Lyapunov exponent λ(r) quantifies average exponential divergence and distinguishes order (λ < 0) from chaos (λ > 0):

λ(r) = lim_{N→∞} (1/N) · Σᵢ ln|f'(xᵢ)| = lim_{N→∞} (1/N) · Σᵢ ln|r(1 − 2xᵢ)| λ < 0 : stable periodic orbit (exponential contraction) λ = 0 : bifurcation point exactly λ > 0 : chaotic attractor (exponential divergence)

When overlaid on the bifurcation diagram:

At r = 4 the logistic map is conjugate to the tent map T(x) = 1 − |2x − 1| via the change of variables x = sin²(πθ/2). The tent map is piecewise linear with slope ±2 everywhere, giving λ = ln 2 exactly. This is the maximum possible Lyapunov exponent for this family.

7. Classification of Bifurcation Types

The logistic map's period-doubling is one of several canonical bifurcation types that appear throughout dynamical systems:

Discrete Maps (1D)

Bifurcation Mechanism What appears Example
Period-doubling (flip) Eigenvalue crosses −1 Stable 2-cycle from fixed point Logistic at r=3
Tangent (saddle-node) Eigenvalue crosses +1 Pair (stable + unstable) created Period-3 window onset
Transcritical Eigenvalue = +1, exchange Stability transfer between two branches x*=0 losing stability at r=1

Flows (ODEs, 2D+)

Bifurcation Mechanism What appears Example
Saddle-node Real eigenvalue crosses 0 Pair of equilibria created/destroyed Fold in vector field
Pitchfork Real eigenvalue crosses 0 with symmetry Symmetric pair of stable branches Lorenz at ρ=1
Hopf Complex pair crosses imaginary axis Limit cycle born from equilibrium Van der Pol, Lorenz at ρ≈24.7
Period-doubling Floquet multiplier = −1 Limit cycle doubles its period Rössler at c≈4
Torus (Neimark-Sacker) Complex Floquet pair on unit circle Invariant torus born from limit cycle Quasi-periodic route to chaos
Routes to chaos: The period-doubling cascade (Feigenbaum) is just one of three classical routes to chaos. The Ruelle-Takens route proceeds via a fixed point → limit cycle → torus → chaos (strange attractor destroys the torus). The Pomeau-Manneville route proceeds via intermittency: long near-periodic laminar phases interrupted by bursts of chaos, with mean laminar length diverging as (r* − r)^(−1/2).

8. Interactive Bifurcation Diagram

The renderer below plots the logistic map bifurcation diagram in real time. Drag the range sliders to zoom into any region — the self-similar structure is visible at every scale.

Blue dots = orbits  |  Red line = Lyapunov exponent (when enabled)
// Core bifurcation diagram renderer
function renderBifurcation(canvas, rMin, rMax, showLyap) {
  const ctx  = canvas.getContext('2d');
  const W    = canvas.width, H = canvas.height;
  const N_r  = W * 2;          // r samples (2 per pixel)
  const WARM = 500;            // transient iterations to discard
  const PLOT = 300;            // iterations to plot per r value

  ctx.fillStyle = '#0a0a14';
  ctx.fillRect(0, 0, W, H);

  for (let i = 0; i < N_r; i++) {
    const r = rMin + (rMax - rMin) * (i / N_r);
    const px = (i / N_r) * W;

    let x = 0.5;
    // Burn-in transients
    for (let k = 0; k < WARM; k++) x = r * x * (1 - x);

    // Collect orbit and Lyapunov sum
    let lyapSum = 0;
    for (let k = 0; k < PLOT; k++) {
      const deriv = Math.abs(r * (1 - 2 * x));
      lyapSum += deriv > 1e-12 ? Math.log(deriv) : -30;
      x = r * x * (1 - x);

      // Plot orbit point
      const py = H - x * H;
      ctx.fillStyle = 'rgba(99,102,241,0.35)';
      ctx.fillRect(px, py, 1.5, 1.5);
    }

    // Optional Lyapunov exponent overlay
    if (showLyap) {
      const lam = lyapSum / PLOT;
      const lamPy = H / 2 - lam * (H / 4);  // scale: -2..+2 → H..0
      ctx.fillStyle = lam > 0 ? 'rgba(239,68,68,0.7)' : 'rgba(34,197,94,0.6)';
      ctx.fillRect(px, Math.min(Math.max(lamPy, 0), H - 1), 1.5, 1.5);
    }
  }

  // Zero-line for Lyapunov reference
  if (showLyap) {
    ctx.strokeStyle = 'rgba(255,255,255,0.15)';
    ctx.beginPath(); ctx.moveTo(0, H / 2); ctx.lineTo(W, H / 2); ctx.stroke();
  }
}