Theory

The Lorenz system is one of the classic examples of deterministic chaos. It originated from Edward Lorenz’s simplified model of atmospheric convection and was pioneering work in the development of chaos theory. Small changes in the initial condition lead to very different long-term motion, even though the equations themselves are completely deterministic.

The Lorenz system is governed by this set of differential equations:

dxdt=σ(yx)\frac{dx}{dt} = \sigma (y - x)

dydt=x(ρz)y\frac{dy}{dt} = x(\rho - z) - y

dzdt=xyβz\frac{dz}{dt} = xy - \beta z

and the standard parameter choice which demonstrates chaos is

σ=10,ρ=28,β=83.\sigma = 10, \qquad \rho = 28, \qquad \beta = \frac{8}{3}.

What makes this system especially interesting in hardware is that the equations map naturally onto analog computing blocks. Voltages represent the state variables x(t)x(t), y(t)y(t), and z(t)z(t). Op-amp integrators and summing stages implement the linear pieces of the dynamics, while analog multipliers generate the nonlinear xyxy and xzxz terms. With the right scaling, the circuit continuously solves the differential equations in real time.

The Build

My build is based off of the design discussed in this video and the associated article by Paul Horowitz at Harvard University.

Paul Horowitz Lorenz attractor analog circuit schematic
Lorenz attractor analog circuit schematic. Original circuit credit: Paul Horowitz.

I’d recommend seeing the linked resources for more detail on how it works, but I’ll describe it briefly here. Each differential equation in the system is implemented as op-amp circuit combining an integrator and an inverting summing circuit. The output voltage of each op-amp corresponds to x, y, and z. The product terms xyxy and xzxz require two analog multipliers.

I used an AD633 rather than the MPY634 in the original schematic — it dropped in as a direct replacement with no modifications needed. For the op-amps, I used a single TL084CN which contains 4 op-amps internally. The multipliers are the most expensive component in the build at around $11 each, but the rest of the circuit is just standard resistors, capacitors, and the quad op-amp. It’s remarkable how few components it takes to continuously solve the Lorenz equations in real time.

For power, I used two 12V DC adapters with their negative and positive terminals connected together to form a common ground, giving the three voltage levels needed for the op-amp and multiplier rails: −12V, 0V, and +12V.

Breadboard analog circuit implementing the Lorenz equations
The Lorenz system on a breadboard.

Oscilloscope Capture

Once the circuit is wired correctly, the nicest view is the oscilloscope in XY mode. That projection gives the familiar butterfly shape of the Lorenz attractor:

Oscilloscope showing the Lorenz attractor in XY mode
The XZ projection on the oscilloscope showing the classic butterfly shape.

I captured the three state voltages on my Rigol DHO804 via its rear USB port using pyvisa to pull the raw waveform data, then plotted them directly as a rotating 3D reconstruction of the attractor.

Animated 3D Lorenz attractor reconstructed from oscilloscope waveform capture
Animated 3D trace reconstructed from the scope capture, with the camera orbiting the attractor.