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:
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):
- It is unimodal: one local maximum at x* = 1/2, value f(1/2) = r/4
- For r ≤ 4, f maps [0,1] into [0,1] (forwards invariance)
- The critical point x = 1/2 plays a special role: its orbit determines the bifurcation structure
- For r > 4 some orbits escape to −∞ (chaotic transients)
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*):
Stability is determined by the derivative |f'(x*)| = |r(1 − 2x*)|:
- x* = 0: f'(0) = r. Stable for r < 1, unstable for r > 1.
- x* = 1 − 1/r: f'(x*) = 2 − r. Stable for |2 − r| < 1, i.e. 1 < r < 3.
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 δ.
Renormalisation Group Explanation
The period-doubling cascade is a fixed point of the renormalisation operator T acting on function space:
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:
- Rayleigh-Bénard convection (Libchaber & Maurer, 1980): δ measured in a mercury cell with good agreement
- Nonlinear electrical circuits (Linsay, 1981): period-doubling in driven RLC circuit
- Acoustic turbulence: Feigenbaum cascade in driven fluid cavitation
- Laser oscillations: modulated CO₂ laser exhibiting universal cascade
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:
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):
When overlaid on the bifurcation diagram:
- λ = 0 exactly at each bifurcation point r₁, r₂, r₃, ... — a sharp signature
- λ < 0 throughout each periodic window — deepening toward the centre of each window
- λ → −∞ at the super-stable orbits (where f'(x*) = 0, i.e. the orbit passes through x = 1/2)
- λ > 0 in chaotic bands — largest value at r = 4 where λ = ln 2 ≈ 0.693
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 |
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.
// 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();
}
}