HomeArticlesJulia Set

Julia Sets: Complex Dynamics and the Mandelbrot Connection

One iterated formula, z² + c, splits the complex plane into escaping and bounded points — and links every Julia set back to a single point on the Mandelbrot set.

mysimulator teamUpdated June 2026≈ 7 min read▶ Open the simulation

One formula, iterated forever

Both the Julia set and the Mandelbrot set come from the same absurdly short recipe: pick a complex number z, repeatedly replace it with z² + c, and watch what happens. For the Julia set of a fixed parameter c, you scan the plane of starting points z₀ and ask, for each one, whether its orbit stays bounded forever or eventually escapes to infinity. For the Mandelbrot set, you instead fix the starting point at z₀ = 0 and scan the plane of parameters c, asking the same escape question about each one.

z₀ = (starting point, Julia)  or  0 (Mandelbrot)
z_{n+1} = z_n² + c
if |z_n| > 2 for some n, the orbit escapes — it will diverge to infinity

The escape-time algorithm

In practice no computer iterates forever. The simulation caps the count at some maximum (a few hundred iterations), and for every pixel it iterates the formula until either the magnitude of z exceeds 2 — past that radius the orbit is provably doomed to diverge — or the iteration budget runs out, in which case the point is assumed to belong to the bounded set. Colouring each escaped pixel by how many iterations it survived rather than a flat black-or-white turns the boundary into the smooth, richly banded image everyone recognises.

for each pixel (x, y):
  z = complex(x, y)          // Julia: fixed c, varying z0
  for n in 0..maxIter:
    if |z| > 2: colour(pixel, n); break
    z = z*z + c
  else: colour(pixel, "in set")
live demo · escape-time iteration over the complex plane● LIVE

Why the two sets are linked

The connection is not a coincidence: for a given c, the Julia set is connected (one solid blob) exactly when the orbit of 0 under z² + c stays bounded — in other words, exactly when c itself belongs to the Mandelbrot set. Pick c from deep inside the Mandelbrot set and its Julia set is a single connected shape; pick c from outside and the Julia set shatters into an infinite, disconnected dust of points, technically called a Cantor set. This is why clicking around the Mandelbrot set to choose c, as the simulation lets you do, is really choosing which of two qualitatively different families of Julia set you get to see.

Self-similarity without repetition

Zooming into either set never bottoms out into a repeating pattern the way a regular tiling would. Because the iteration is the same nonlinear map applied at every scale, structures near the boundary echo the whole set’s shape in miniature, distorted a little differently each time — the defining signature of a fractal boundary, and the reason both sets look inexhaustibly detailed no matter how far you zoom.

Frequently asked questions

What is the actual relationship between the Julia set and the Mandelbrot set?

The Mandelbrot set is a map of parameters c: for each c you ask whether the Julia set built from that c is one connected piece or scattered dust. A c chosen from inside the Mandelbrot set always gives a connected Julia set; a c chosen from outside always gives a disconnected, dust-like one.

Why do some Julia sets look like a solid blob and others look like scattered dust?

It depends only on whether the orbit of 0 under z² + c stays bounded (c inside the Mandelbrot set, connected Julia set) or escapes to infinity (c outside, disconnected dust). There is no in-between — every Julia set is one or the other.

Why does the escape test use a radius of 2 specifically?

It can be proven that once |z| exceeds 2 under this particular map, the magnitude is guaranteed to grow without bound on every subsequent step, so the orbit can never come back — 2 is the smallest radius for which that guarantee holds, which makes it the cheapest safe cutoff.

Try it live

Everything above runs in your browser — open Julia Set and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Julia Set simulation

What did you find?

Add reproduction steps (optional)