Nonlinear Dynamics

Poincaré Section

Stop watching the whole orbit. Photograph it once per lap — and the dynamics fall out as dots.

A slice through phase space sampled once per period, reducing a continuous flow to a discrete map that reveals tori, periodicity, and chaos.

  • What it doesTurns an n-D flow into an (n−1)-D return map
  • Periodic motion→ a finite set of fixed points
  • Quasiperiodic motion→ a closed curve (torus cross-section)
  • Chaos→ a fractal scatter, dimension ~1.2–1.5
  • Route to chaosPeriod-doubling, Feigenbaum δ ≈ 4.669
  • OriginHenri Poincaré, three-body problem, 1880s

Interactive visualization

Press play, or step through manually. Watch the trajectory pierce the plane and the section dots accumulate — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

Definition

A Poincaré section is a surface placed transversally across the flow of a dynamical system. You ignore the continuous trajectory and only record where it punctures that surface, always counting crossings in the same direction. The list of crossing points is the Poincaré map (or return map).

The payoff is dimensional reduction. A continuous flow living in an n-dimensional state space becomes a discrete map living on an (n−1)-dimensional surface:

flow in R^n   →   map  P: Σ → Σ   on a surface Σ of dimension n−1

A 3D trajectory you could never quite read becomes a 2D scatter of dots you can read instantly. And the shape of that scatter is a complete diagnosis of the dynamics.

How it works

Pick a surface Σ — say the plane y = 0 — and a crossing direction, say "only count crossings where the trajectory is moving in the +y direction." Integrate the equations of motion. Every time the orbit pierces Σ going the right way, drop a dot at the spot. Then keep integrating and collect thousands of dots.

There are two standard ways to decide when to sample:

  • Geometric section. Sample whenever the state hits the chosen surface (e.g. every time a pendulum passes through vertical moving forward). The surface is fixed in state space; the time between crossings can vary.
  • Stroboscopic section. For a system driven at angular frequency ω, photograph the full state once per drive period, every T = 2π/ω seconds. The clock is the trigger. This is the natural choice for forced oscillators, where the forcing already supplies a period.

Either way, you trade a continuous curve for a sequence of points p₀, p₁, p₂, …, where each point is mapped to the next by the return map pₙ₊₁ = P(pₙ). The continuous problem of solving differential equations becomes the discrete problem of iterating a map — and iterated maps are where chaos is easiest to see and prove.

The three signatures

Here is the headline result, the reason the technique is worth learning:

  • Periodic → fixed point. If the orbit closes after one drive period, every crossing lands in exactly the same spot — a single fixed point. A period-2 orbit visits two points alternately, period-3 visits three, and so on.
  • Quasiperiodic → closed curve. If the motion has two incommensurate frequencies, it wraps around a torus and never exactly repeats. The crossings densely fill a closed curve — the cross-section of that torus.
  • Chaotic → fractal scatter. If the motion stretches and folds phase space, crossings never repeat and never settle. They accumulate into a self-similar fractal cloud with non-integer dimension.

Worked example: the driven, damped pendulum

Take the workhorse of nonlinear dynamics, a pendulum that is both damped and periodically pushed:

θ'' + b·θ' + sin(θ) = A·cos(ω_d · t)

The state space is three-dimensional: angle θ, angular velocity θ′, and the drive phase φ = ωd·t (taken mod 2π). We take a stroboscopic section: record (θ, θ′) once per drive period, every T = 2π/ω_d seconds. Fix the drive frequency at ω_d = 2/3 and the damping at b = 0.5, and sweep the drive amplitude A:

Drive amplitude ALong-term motionSection after 5,000 periodsLargest Lyapunov λ
0.90Period-1 (locks to the drive)1 fixed pointλ < 0
1.07Period-22 pointsλ < 0
1.47Period-44 pointsλ < 0
1.50ChaoticFractal scatterλ ≈ +0.16
1.66Period-3 window3 pointsλ < 0
1.80Strongly chaoticDense fractal sheetλ ≈ +0.45

The same equation, the same machine — only one knob turned — produces a fixed point, then a period-doubling cascade (1→2→4), then a fractal scatter, then a surprising period-3 window of order inside the chaos, then deeper chaos. The Poincaré section is what makes all of this legible. Plotting the continuous (θ, θ′) curves would just give you tangled spaghetti; the stroboscopic dots sort it into a clean diagnosis.

Concretely: at A = 0.90 you watch 5,000 dots pile onto a single pixel. At A = 1.50 those same 5,000 dots fan out into a curved, striated cloud whose box-counting dimension is non-integer — the fingerprint of a strange attractor. The transition between those two pictures happened across a parameter gap so small you would never notice it watching the pendulum swing.

Variants and regimes

Section typeTriggerBest forSection dimension
Geometric surface-of-sectionCrossing a fixed surface in state spaceAutonomous flows (no clock), Hamiltonian systemsn − 1
Stroboscopic sectionOnce per external drive periodPeriodically forced oscillatorsn − 1 (drive phase removed)
First-return mapNext crossing of the same surfaceReducing a flow to map iterationn − 1
Lorenz-style maximum mapSuccessive local maxima of one variableQuasi-1D strange attractors~1 (cusp / tent map)
Energy-restricted sectionFixed surface at fixed energyConservative / KAM systemsn − 2

In a conservative (Hamiltonian) system, energy is fixed, so a 4D phase space collapses to a 2D section. There you see the famous mixed picture of the KAM theorem: nested closed curves (surviving invariant tori) interleaved with chaotic seas where the tori have broken up. In a dissipative system, trajectories settle onto an attractor, so the section shows only the attractor: a point, a loop, or a strange fractal.

JavaScript — building a stroboscopic section

// Driven damped pendulum: θ'' + b·θ' + sin θ = A·cos(ω_d t)
// State y = [θ, ω, φ]; φ is the drive phase. We strobe once per drive period.
function derivs(y, p) {
  const [theta, omega, phi] = y;
  return [
    omega,
    -p.b * omega - Math.sin(theta) + p.A * Math.cos(phi),
    p.wd,
  ];
}

function rk4(y, dt, p) {
  const add = (a, b, s) => a.map((v, i) => v + b[i] * s);
  const k1 = derivs(y, p);
  const k2 = derivs(add(y, k1, dt / 2), p);
  const k3 = derivs(add(y, k2, dt / 2), p);
  const k4 = derivs(add(y, k3, dt), p);
  return y.map((v, i) => v + (dt / 6) * (k1[i] + 2 * k2[i] + 2 * k3[i] + k4[i]));
}

function poincareSection(p, periods = 5000, steps = 400) {
  const T = (2 * Math.PI) / p.wd;     // one drive period
  const dt = T / steps;
  let y = [0.2, 0, 0];                 // initial angle, velocity, phase
  const points = [];
  for (let n = 0; n < periods; n++) {
    for (let s = 0; s < steps; s++) y = rk4(y, dt, p);
    // Strobe: wrap θ into (−π, π], record (θ, ω)
    const theta = ((y[0] + Math.PI) % (2 * Math.PI) + 2 * Math.PI) % (2 * Math.PI) - Math.PI;
    if (n > 200) points.push([theta, y[1]]); // drop the transient
  }
  return points;
}

// Period-1: dots collapse to a single fixed point
console.log("A=0.90 →", classify(poincareSection({ b: 0.5, wd: 2/3, A: 0.90 })));
// Chaos: dots form a fractal scatter
console.log("A=1.50 →", classify(poincareSection({ b: 0.5, wd: 2/3, A: 1.50 })));

// Crude classifier: how many distinct clusters do the late points fall into?
function classify(pts) {
  const tail = pts.slice(-200);
  const clusters = [];
  for (const q of tail) {
    if (!clusters.some(c => Math.hypot(c[0]-q[0], c[1]-q[1]) < 0.02)) clusters.push(q);
  }
  if (clusters.length === 1) return "periodic → fixed point";
  if (clusters.length <= 8) return `period-${clusters.length}`;
  return "quasiperiodic curve or chaotic scatter (check dimension)";
}

The whole method is in that poincareSection loop: integrate for exactly one period, then snapshot. Discarding the first couple hundred periods (the transient) is what lets the steady-state structure emerge cleanly.

Numerics and how to read the result

A few practical numbers govern whether your section is trustworthy:

  • Integrator accuracy. Chaotic orbits have positive Lyapunov exponent λ, so error grows like e^(λt). With λ ≈ 0.16, a 1e−8 rounding error becomes order-1 after about ln(10^8)/0.16 ≈ 115 time units. You cannot trust the exact orbit that long — but you can trust the section's geometry, because the strange attractor's shape is what stays invariant even as individual points decorrelate.
  • Transient removal. Always discard the first 100–500 crossings. The attractor only shows once the trajectory has been pulled onto it.
  • Point count. A fixed point needs ~10 crossings to confirm; a torus curve needs a few thousand to fill in; a fractal needs 10⁴–10⁵ before its fine striations resolve.
  • Dimension as a verdict. Box-counting the section gives the diagnosis numerically: dimension 0 (a point) means periodic, dimension 1 (a curve) means quasiperiodic, and a non-integer dimension (commonly 1.2–1.5 for a 2D section) means a strange attractor — chaos.

This is the deep value of the method. The continuous orbit is unpredictable beyond a short horizon, yet the Poincaré section captures a structure that is completely predictable in its statistics and geometry. Chaos is unpredictable in detail and lawful in shape, and the section is the picture that shows both truths at once.

Applications

  • Celestial mechanics. Poincaré invented the method for the three-body problem; today sections map the stable and chaotic zones of asteroid orbits, ring gaps, and spacecraft trajectories through libration points.
  • Plasma and accelerator physics. Magnetic field lines in a tokamak are traced as a Poincaré plot on a poloidal plane — nested curves mean confinement, scattered points mean field-line chaos and leaking plasma.
  • Cardiac and neural dynamics. Return maps of heartbeat intervals expose period-doubling that precedes fibrillation; the section is a diagnostic for the onset of arrhythmia.
  • Mechanical and structural engineering. Forced beams, gear rattle, and ship roll under waves are diagnosed by stroboscopic sections to detect the transition from safe periodic response to chaotic, fatigue-inducing motion.
  • Fluid mixing. Sections of advected tracer particles reveal islands of poor mixing (closed curves) embedded in chaotic, well-mixed seas — directly guiding micro-mixer design.
  • Laser and circuit dynamics. Chaotic Chua circuits and class-B lasers are characterized by their return maps before being harnessed for chaos-based secure communication.

Common mistakes and misconceptions

  • Not fixing the crossing direction. If you record crossings in both directions, you double the points and smear the structure. Count only one direction (e.g. θ′ > 0 through the surface).
  • Forgetting the transient. Including the early settling-down points adds spurious dots that are not on the attractor and can fake a "scatter" where there is really a fixed point.
  • Confusing a long period with chaos. A scatter that is actually a high-period orbit will, given enough points, reveal a finite set. True chaos keeps generating fractal structure forever and has λ > 0. Always back up the picture with a Lyapunov or dimension estimate.
  • Choosing a tangent surface. The section must be transverse to the flow. If the trajectory grazes the surface tangentially, crossings are ill-defined and the map becomes singular. Place Σ where the flow clearly cuts through it.
  • Reading a 2D section of a 3D attractor as the attractor itself. The section is a slice; the attractor's fractal dimension is one greater than the section's. A section dimension of ~1.26 corresponds to an attractor dimension of ~2.06.
  • Strobing at the wrong period. For a forced system, strobe at the drive period, not some multiple. Strobing at 2T will turn a genuine period-2 orbit into a fake fixed point and hide a period-doubling.

Frequently asked questions

What is a Poincaré section?

A Poincaré section is a lower-dimensional surface placed across the flow of a dynamical system. Every time the trajectory crosses that surface in a chosen direction, you record the crossing point. The resulting cloud of points is the Poincaré map. A continuous flow in n dimensions becomes a discrete map in n−1 dimensions, which is far easier to analyze — periodicity, stability, and chaos all become visible at a glance.

How does the section reveal whether motion is periodic, quasiperiodic, or chaotic?

The geometry of the dots tells you everything. Periodic motion returns to the same place, so it lands on a finite set of fixed points (one point for period-1, two for period-2, and so on). Quasiperiodic motion winds around a torus with two incommensurate frequencies, so its crossings trace out a closed curve. Chaotic motion never repeats and stretches-and-folds phase space, so its crossings form a fractal scatter with self-similar structure and non-integer dimension.

What is the difference between a Poincaré section and a stroboscopic section?

They are two ways to choose when to sample. A geometric Poincaré section records crossings of a fixed surface in state space (for example, every time x passes through zero moving upward). A stroboscopic section samples at fixed time intervals — once per drive period for a periodically forced system. For a system driven at angular frequency ω, you photograph the state every T = 2π/ω seconds. Both produce a discrete return map; the stroboscopic version is the natural choice for forced oscillators because the forcing already defines a period.

Why does a torus show up as a closed curve in the section?

Quasiperiodic motion lives on the surface of a 2-torus (think of a donut) embedded in phase space. A plane slicing a donut intersects it in a closed loop — one or two ovals. Each return crossing lands somewhere on that loop, and because the two frequencies are irrationally related, the points never exactly repeat; they densely fill the loop over time. So the closed curve is literally the cross-section of the torus the trajectory is wrapped around.

How do you tell chaos from just-very-long-period motion?

Both can look like a scatter at first. The distinguishing test is structure and dimension. A long-period orbit eventually closes and its section is a finite point set. A chaotic section keeps filling out fractal structure forever — zoom in and you see the same striations repeating, the box-counting dimension comes out non-integer (often around 1.2 to 1.5 for a 2D section of a strange attractor), and the largest Lyapunov exponent is positive, meaning nearby points separate exponentially. Genuine chaos has sensitive dependence; a long cycle does not.

Who was Poincaré and why does this carry his name?

Henri Poincaré introduced the surface-of-section idea in the 1880s while studying the three-body problem for a prize set by King Oscar II of Sweden. Unable to find closed-form solutions, he turned to qualitative geometry: rather than tracking the full continuous orbit, he studied where it pierced a surface and how those crossings mapped to one another. In doing so he discovered homoclinic tangles — the first glimpse of what we now call chaos — decades before computers made the pictures visible.

What does it mean when the section points split from one dot into two?

That is a period-doubling bifurcation. As you turn a control parameter (drive amplitude, damping, forcing frequency), a single fixed point can lose stability and give birth to a period-2 orbit that visits two points alternately. Push further and 2 becomes 4, then 8, 16, and so on, with the parameter gaps shrinking by the universal Feigenbaum ratio of about 4.669. The cascade accumulates at a finite parameter value, beyond which the section becomes a fractal scatter — the system has gone chaotic by period doubling.