A spring that stops being simple
A simple harmonic oscillator has a restoring force proportional to displacement, F = −kx, and its motion is a clean, boring sine wave forever. The Duffing oscillator adds one extra term — a cubic βx³ — to model a spring that gets stiffer or softer as it stretches further, plus linear damping δ and a periodic external drive γ·cos(ωt) to keep pumping energy in.
ẍ + δ ẋ + α x + β x³ = γ cos(ωt)
damping linear cubic periodic drive
spring spring
A double-well potential hiding inside
When α is negative and β is positive, the underlying potential energy curve has two dips instead of one — a double-well potential — so the system has two stable resting positions instead of a single equilibrium. A weakly driven oscillator can sit rocking gently in one well, but as the drive amplitude γ grows it eventually has enough energy to hop across the barrier into the other well at unpredictable-looking moments, even though the equation driving it has no randomness in it at all.
From clean cycles to period doubling
Slowly increase the drive amplitude γ from a small value and the oscillator’s long-term motion goes through a well-documented sequence: first it settles into a cycle that repeats every drive period; then, at a critical γ, that cycle splits so the motion only repeats every two drive periods; increase γ further and it splits again to a four-period cycle, then eight, then sixteen — a period-doubling cascade whose critical γ values bunch together geometrically, converging to a finite value beyond which the motion is aperiodic: chaos. This same doubling route to chaos, with the same universal ratio between successive bifurcation gaps (the Feigenbaum constant, ≈ 4.669), shows up in an enormous range of unrelated nonlinear systems, from dripping taps to population models.
Reading the mess with a Poincaré section
A chaotic trajectory plotted directly in position-velocity space is a tangled scribble that is hard to learn anything from. A Poincaré section fixes that by sampling the state only once per drive period — stroboscopically, essentially taking a photo at the same phase of the drive every cycle — which collapses a continuous chaotic trajectory into a discrete sequence of points. For a periodic orbit those points overlap into one dot (or a handful, for a period-n cycle); for chaotic motion they trace out an intricate, self-similar structure called a strange attractor, revealing fractal organisation that was invisible in the raw scribble.
Chaotic does not mean random
Every quantity in the Duffing equation is deterministic — given the exact same starting position, velocity and time, the future is completely determined, with no dice rolls anywhere in the model. What makes it chaotic is sensitive dependence on initial conditions: two trajectories that start immeasurably close together diverge exponentially fast, so any tiny uncertainty in the starting state — including the unavoidable rounding error in a floating-point simulation — grows to dominate the prediction within a short time. That is why chaos looks unpredictable in practice while remaining, in principle, perfectly deterministic.
Frequently asked questions
What actually makes the Duffing oscillator nonlinear, unlike a normal spring?
The cubic term βx³ in its restoring force. A normal spring's force is exactly proportional to displacement (F = −kx); Duffing's force curve bends away from that straight line as displacement grows, which is enough, combined with damping and periodic driving, to produce chaotic behaviour that a linear spring can never show.
What is a Poincaré section actually showing me?
It's a stroboscopic snapshot of the system's state taken once per drive cycle. A simple repeating motion collapses to a single dot or a few dots; chaotic motion instead traces out a rich, fractal-looking scatter of points called a strange attractor — visible structure that's hidden inside the raw, tangled trajectory.
If the equation has no randomness, why does the motion look random?
Because of sensitive dependence on initial conditions: nearby trajectories separate from each other exponentially fast. The system is fully deterministic, but any immeasurably small uncertainty in the starting state — unavoidable in any real measurement or simulation — grows fast enough to make long-term behaviour practically unpredictable.
Try it live
Everything above runs in your browser — open Nonlinear Oscillations and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.
▶ Open Nonlinear Oscillations simulation