Chapter 09 · Part III · Complex dynamics

Julia sets

The Mandelbrot set asks one question of every value of c. A Julia set picks a single c and asks a different question, of every starting point. The answer is a new shape for each c: rabbits, cathedrals, lightning, dust. The Mandelbrot set turns out to be the index to all of them.

1918Gaston Julia's memoir on iterating rational functions, which won the Grand Prix of the French Academy of Sciences
2square roots for every point except c itself: the two backward steps that inverse iteration is built on
180°every Julia set of z² + c looks the same after a half-turn about 0, because z and −z square to the same number

Common mix-up: a Julia set is not a zoomed-in piece of the Mandelbrot set. They live in different planes. The Mandelbrot set is drawn over values of c, always starting from z = 0. A Julia set holds c fixed and is drawn over starting values of z. There's one Mandelbrot set and infinitely many Julia sets, one for every c.

Same rule, other plane

Fix c, vary the start

The rule hasn't changed since the last chapter: replace z by z² + c, and repeat. What changes is which number you hold still. For the Mandelbrot set, z always starts at 0 and each pixel is a different c. For a Julia set, you choose one c and keep it, and each pixel is a different starting value z₀.

Some starting points run off to infinity. Others stay bounded forever. The ones that stay form the filled Julia set, written Kc. Its boundary is the Julia set Jc, the thin edge where the behavior switches. Pictures usually show the filled set in black with the escaping points colored by escape time, exactly as in the explorer of the previous chapter. The same escape test works: once |z| passes 2 (or |c|, if that is larger), the orbit is gone.

The Julia set is where the interesting dynamics happen. Start just inside it and your orbit stays bounded; start a hair's breadth outside and it escapes. Points on Jc itself never settle and never escape. Their orbits stay on Jc and wander chaotically over it, and every repelling cycle of the map lies on it. The everywhere-else region, inside and outside, is called the Fatou set, where nearby starting points behave alike.

Kc = { z₀ : the orbit z₀, z₀² + c, … stays bounded }, Jc = ∂Kc
The filled Julia set is every starting point that never escapes. The Julia set is its boundary: the points where an arbitrarily small nudge can change "stays" into "escapes".

Both sets are invariant. Apply z² + c to the whole of Jc and you get Jc back, so the Julia set is built out of copies of itself: every small piece, pushed forward by the map, is stretched into a bigger piece, until some finite number of steps later it covers the whole set. That is where the self-similarity in Julia pictures comes from. It isn't decoration; it's the map acting on its own boundary.

Go deeper: Fatou, Julia and normal families

Pierre Fatou and Gaston Julia developed this theory independently between 1917 and 1919, for any rational function, not just z² + c. The modern definition is due to them: the Fatou set is where the iterates form a normal family in the sense of Paul Montel, meaning that every sequence of iterates has a subsequence that converges nicely on small discs. The Julia set is the complement, where that fails.

For polynomials the definition is equivalent to "the boundary of the set of points that don't escape", which is the one a computer can test. Julia's memoir won the 1918 Grand Prix des Sciences Mathématiques of the Académie des Sciences; Fatou's long papers appeared in the Bulletin de la Société Mathématique de France in 1919 and 1920. Without computers, none of them ever saw the shapes they were describing.

The great divide

One piece, or dust

Fatou and Julia found that a quadratic Julia set comes in only two kinds. Either it is connected, a single piece, however many tendrils it has, or it is a Cantor set, an infinite cloud of points with no two of them joined, often called Fatou dust. There is nothing in between: no Julia set of z² + c has exactly three pieces, or a hundred.

Which kind you get depends on a single orbit, that of the critical point z = 0. It's critical because it is where the derivative 2z vanishes: the only place where the map folds the plane instead of stretching it. The test is simple. Iterate 0. If the orbit stays bounded, Kc is connected. If it escapes, Kc shatters into dust.

Kc connected ⇔ the orbit of 0 under z² + c is bounded
The fundamental dichotomy. Watch one orbit, the one that starts at the critical point, and you know the shape of the whole set. If that orbit escapes, the set is a totally disconnected Cantor set.

Why should one point decide everything? Draw a large disc containing Kc. Running the map backward pulls that disc back to a smaller region that contains Kc. If the critical value c sits inside the disc, the pulled-back region is a single blob; if c has escaped beyond it, the region splits into two separate blobs, because the fold at 0 no longer lands inside. Repeat, and every blob splits into two again, and again: 2, 4, 8, 16 pieces, shrinking toward a dust of points. That's exactly the construction of the middle-thirds Cantor set from Chapter 3, bent into the complex plane.

What the connected sets look like inside depends on where the orbit of 0 goes. If it falls into an attracting cycle, the filled set has fat interior regions, the basin of that cycle. If it lands exactly on a repelling cycle, the set has no interior at all: it's all filaments, a dendrite. In between are the delicate parabolic and Siegel cases on the edges of components, which the table of famous sets below covers.

Where 0's orbit goesShape of KcExample
Attracting cycleConnected, with fat interiorRabbit, basilica, airplane
Parabolic cycleConnected, petals pinched at cuspsSan Marco (c = −¾), cauliflower (c = ¼)
Rotates on a Siegel discConnected, a rotating disc insideGolden-mean Siegel disc
Lands on a repelling cycleConnected, no interior: a dendritec = i
EscapesCantor dustc = 0.285 + 0.01i
The index

The Mandelbrot set is a map

Put the dichotomy next to the definition of the Mandelbrot set and they line up exactly. M is the set of c for which the orbit of 0 stays bounded. That orbit staying bounded is precisely the condition for Kc to be connected. So the Mandelbrot set is the catalog of connected Julia sets: c is black in the Mandelbrot picture exactly when the Julia set for c is in one piece.

The relation goes further than yes or no. Within one bulb of M, every Julia set has the same basic structure, because the orbit of 0 settles into a cycle of the same period. Pick c in the period-3 bulb and the filled Julia set has interior pieces meeting three at a time, like the rabbit's ears. Move to the period-5 bulbs and they meet five at a time. Near the boundary of M the resemblance becomes literal. Tan Lei proved in 1990 that at Misiurewicz points, zooming into the Mandelbrot set near c and zooming into the Julia set near the point c show asymptotically the same picture. Adrien Douady used to sum the method up as plowing in the parameter plane and harvesting in the dynamical plane: you learn about M by looking at the Julia sets it indexes.

JellyDazzle's Julia morph mode uses this map directly: it glides c between hand-picked values inside and near M, so the shape on screen flows from one connected form to the next.

Instrument 1

The linked pair

Click or drag on the small Mandelbrot set to choose c. The large panel draws the Julia set for that c, live: a coarse pass first so it keeps up with your finger, then sharper passes when you stop. Drag from the black body out into the colored region and watch the Julia set crack and scatter as c leaves M. Turn on "orbit of 0" to see the critical orbit that decides it.

–

starting
c, real–
c, imaginary–
Orbit of 0–
Render–

Use the arrow keys on the small panel to nudge c by small steps. The Julia view shows −1.6 to 1.6 vertically; every quadratic Julia set fits within |z| ≤ 2.

A gallery

Famous faces

Some values of c have become landmarks, named for what their Julia sets look like or who studied them. Every one is a preset in the linked pair above.

The Douady rabbit, named after Adrien Douady, sits at the center of the period-3 bulb at the top of the Mandelbrot set, c ≈ −0.1226 + 0.7449i. There the orbit of 0 is a perfect 3-cycle: 0 → c → c² + c → 0. The interior is the basin of that cycle, made of countless blobs, and at each junction exactly three of them meet: a body and two ears, repeated at every scale.

The basilica is c = −1, the center of the period-2 disc, where 0 and −1 swap forever. Its interior blobs meet in pairs, strung along the real axis like domes. Benoit Mandelbrot called the parabolic set at c = −¾, where the disc touches the cardioid, the San Marco dragon, after the basilica in Venice. There the attracting cycle has only just been born, and orbits creep toward it so slowly that pictures need many more iterations.

At c = i you get a dendrite: a set with no inside at all, nothing but branching filaments. The orbit of 0 goes 0 → i → −1 + i → −i → −1 + i → −i, landing after two steps on a repelling 2-cycle. With no attracting cycle there is no basin to fill, so the filled Julia set and the Julia set are the same thing.

The Siegel disc is subtler. Choose c on the edge of the main cardioid where the multiplier turns by the golden ratio of a turn, θ = (√5 − 1)/2. The fixed point there neither attracts nor repels; around it, in a whole disc, the map simply rotates points by θ forever, never repeating. Carl Ludwig Siegel proved in 1942 that such rotation discs exist for angles like this one that are badly approximated by fractions. In the picture, the black interior is that disc and its preimages.

NamecFate of 0Looks like
Douady rabbit−0.12256 + 0.74486iExact 3-cycleBlobs meeting three at a time
Basilica−1Exact 2-cycle: 0, −1Domes strung on a line
San Marco−0.75Parabolic: creeps toward −½Petals pinched at cusps
Cauliflower0.25Parabolic: creeps toward ½One bulb with a cusp
Airplane−1.75488Exact 3-cycle on the real lineWings along the real axis
DendriteiLands on a repelling 2-cycleBranches only, no interior
Siegel disc−0.39054 − 0.58679iRotates forever, never settlesSwirl around a rotating disc
Fatou dust0.285 + 0.01iEscapes after 18 stepsDisconnected specks
Go deeper: how rough are Julia sets?

At c = 0 the Julia set is the unit circle, dimension exactly 1. Move c a little and the circle crinkles into a fractal curve. For small c, David Ruelle showed in 1982 that its Hausdorff dimension is approximately 1 + |c|²/(4 ln 2), so the roughness grows with the square of the distance from 0.

At the other extreme, Shishikura's 1998 paper, the same one that proved the boundary of the Mandelbrot set has dimension 2, also showed that there are values of c whose Julia sets have dimension 2. They lie on the boundary of M, which fits the picture: the closer c is to the edge of M, the more convoluted its Julia set.

Built-in balance

Why every Julia set is symmetric

Look at any picture in this chapter and turn it upside down: it is unchanged. The reason is one line of algebra. The point −z has the same square as z, so after one step their orbits merge: (−z)² + c = z² + c. If z escapes, so does −z; if z stays, so does −z. Every filled Julia set of z² + c is therefore symmetric under a half-turn about 0.

A second symmetry comes from conjugation. Replacing c by its mirror image c̄ mirrors every orbit across the real axis, so the Julia set for c̄ is the mirror image of the Julia set for c. When c is real, c̄ = c, and the set is symmetric both ways: mirror and half-turn. That's why the basilica, San Marco and the airplane look balanced left to right and top to bottom, while the rabbit only has the half-turn.

Kc = −Kc, Kc̄ = conj(Kc)
Half-turn symmetry for every c; mirror symmetry when c is real. The rabbit's three-way look is not a symmetry at all: its ears are distorted copies, not rotations.

The renderer above doesn't exploit either symmetry, so you can check them for yourself: every pixel is computed independently.

Another way to draw

Running the rule backward

Escape-time pictures paint the filled set by testing every pixel. There is a second, older way to draw the Julia set itself, and it comes from running the rule in reverse. If w = z² + c, then z = ±√(w − c). Every point has two preimages, one for each square root.

Going backward swaps attracting and repelling. The Julia set repels orbits going forward, so it attracts them going backward. Start anywhere, take the square root of (z − c), choose one of the two signs at random, and repeat. Within a dozen steps your point is indistinguishable from a point on Jc, and every later point lands on the Julia set too. Plot thousands of them and the set appears out of the scatter. This is the inverse iteration method.

If that sounds familiar, it should: it's the chaos game from Chapter 4, with two curved maps in place of the fern's four affine ones. The Julia set is the attractor of those two square-root maps, exactly as the fern is the attractor of its four.

zₙ₊₁ = ±√(zₙ − c)
Inverse iteration. Each step picks one of the two square roots at random. Because Jc repels forward orbits, it attracts these backward ones, and the visited points pile up on it.

The catch is that the points don't spread out evenly. They follow a definite distribution, which Hans Brolin identified in 1965: it equals the harmonic measure of the set, the chance that a particle wandering in from far away at random would first touch the set at that spot. Exposed tips get hit constantly. Deep, narrow crevices are almost never reached, so the random method leaves them blank long after the tips are saturated. The dendrite at c = i shows this badly, as do sets with deep fjords like San Marco.

The cure, described by Heinz-Otto Peitgen, Hartmut Jürgens and Dietmar Saupe, is the modified inverse iteration method. Instead of following one random path, explore the whole tree of preimages, both branches every time, but stop following a branch when it lands in a pixel that has already been visited a few times. Over-visited tips get pruned early, and the search spends its effort where the picture is still thin.

Instrument 2

The backward-orbit drawer

Each frame takes thousands of backward steps and adds them to a density map: the brighter a pixel, the more often it has been hit. Click anywhere to plant a fresh starting point and watch its first dozen backward steps, numbered, jump onto the Julia set. Compare the random method with the capped tree, and watch the "busiest 10%" readout: with random steps, a small set of exposed pixels soaks up most of the hits.

Points plotted0
Pixels lit0
Hits on busiest 10%–
Most hits on one pixel–

With evenly spread points, the busiest tenth of lit pixels would hold about 10% of the hits. The random method usually concentrates far more there; the capped tree keeps it close to even.

Cheat sheet

Terms from this chapter

Filled Julia set Kc
Every starting point z₀ whose orbit under z² + c stays bounded.
Julia set Jc
The boundary of the filled Julia set, where the dynamics is chaotic.
Fatou set
Everything not on the Julia set: regions where nearby points behave alike.
Critical point
z = 0, where the derivative of z² + c is zero. Its orbit decides connectedness.
Cantor dust
A totally disconnected Julia set, produced when the orbit of 0 escapes.
Parameter plane
The plane of c values, where the Mandelbrot set lives.
Dynamical plane
The plane of z values for one fixed c, where a Julia set lives.
Parabolic
A cycle whose multiplier is a root of unity: orbits approach it very slowly.
Siegel disc
A region where the map acts as an irrational rotation, around a neutral fixed point.
Dendrite
A Julia set with no interior, all branches, such as c = i.
Inverse iteration
Drawing Jc by repeating z → ±√(z − c), which converges onto the Julia set.
Harmonic measure
The distribution inverse iteration follows: how likely a random walker from far away is to hit each part of the set first.
Where this comes from

Sources