← All notes

A Fractal Made of Light and Two Black Holes

Aim a ray of light at a pair of black holes and it can end in one of three ways. It falls into one hole, it falls into the other, or it gets past both and flies off. Most rays decide at once. A few, aimed near the line between two outcomes, get caught circling between the holes before they decide, and those rays have a strange property. However closely you look at the boundary between the outcomes, it keeps breaking into more boundary. That is a fractal, and this one is not a drawing. Every ray in this post was traced through curved spacetime by the engine behind this blog, one at a time.

Two holes that sit still

General relativity has no exact solution for two ordinary black holes side by side, because two masses attract and will not stay put. There is one arrangement that does sit still. Give each hole an electric charge exactly equal to its mass, in the natural units where G and c are 1, and the electric repulsion cancels the gravitational pull at every distance. That solution is called Majumdar-Papapetrou, and the whole metric fits in four lines.

Real black holes carry almost no charge, so this is not a picture of anything in the sky. What it gives is an exact geometry to trace light through, with no approximation except the step size of the integrator. The engine checks it the way it checks everything else. It is not Ricci-flat, because the electric field holding the holes apart has energy. But its Ricci scalar is zero, because that energy's stress is traceless, and the test suite requires both.

Distances here are in units of one hole's mass. For two holes each the mass of the Sun, one unit is 1.48 kilometres, so these holes sit 3 kilometres apart.

What a camera would see

Here is the pair seen from 40 units away, with one ray per pixel: 30,000 rays, each traced until it falls in or leaves. The colour says where it ended.

Two panels. On the left, a map of 200 by 150 pixels, one ray per pixel, for a camera 40 masses from two black holes whose positions are marked by two small white circles near the centre. Two large lobes, orange on the left for rays that fall into the lower hole and blue on the right for the upper hole, sit side by side with a thin dark gap between them. Outside each lobe is a thin crescent of the opposite colour, rays swung round one hole into the other. Around everything is a pale grey ring of rays that escape by being thrown back toward the camera, and outside that dark slate for rays that escape past the holes. A note says each hole catches 3,978 of the 30,000 rays. On the right, six stacked strips zoom in on the region just right of centre, each eight times narrower than the one above: 0.6, 0.075, 0.00938, 0.00117, 1.5 times ten to the minus 4 and 1.8 times ten to the minus 5 masses wide, with 3, 6, 5, 5, 3 and 7 changes of fate. Every strip still contains all three colours. A gold line above each strip, the time each ray spends before deciding, spikes at every boundary. A note says the last window is 32,768 times narrower than the first and still has three outcomes.

Each hole casts its own shadow, the two lobes. Around the outside of each is a thin crescent of the other colour: rays that swung round one hole and fell into the other. The pale ring is light thrown back toward the camera, bent through more than a right angle.

The strips on the right zoom in on the gap between the lobes. Each one is eight times narrower than the one above it, and each is 240 rays across. The last is 32,768 times narrower than the first and still holds all three outcomes, with seven changes of fate across it. For two holes of the Sun's mass that window is 2.7 centimetres wide.

Two rays a hair apart

Chaos in the everyday sense means a tiny difference at the start becomes a big difference at the end. Here is how tiny:

Two light rays traced past two black holes seen from above, with four faint ordinary rays. The two rays arrive together from the left, 7.6 times ten to the minus 8 masses apart, loop several times round both holes along almost the same path, then part. The white one is flung out and back toward the camera's side after an affine length of 148, and the orange one falls into the lower hole after 80. The faint rays are aimed at 0, 0.8, minus 0.8 and 3 masses: the one on the centre line passes straight between the holes, and the others fall straight into the nearer hole without looping. A note says the holes are 2 masses apart, drawn at their capture radius, and that both are the engine's null geodesics on the Majumdar-Papapetrou metric.

These two rays leave the screen 7.6 × 10^-8 units apart, which for Sun-mass holes is a tenth of a millimetre. They travel together, loop round the pair several times on paths you cannot tell apart, and then one is flung away while the other is caught. The four faint rays are what most rays do: they are aimed a little further out and fall straight in, or pass straight through between the holes, without circling at all.

The number after each ending is how long the ray spent in the engine's own measure, its affine length. The rays that decide late are the ones on the boundary, and that turned out to be the most useful fact in the whole investigation.

Here are 36 rays aimed across the last, narrowest window, traced out:

An animation of 36 light rays arriving together from the left as a single grey line, all aimed within 1.8 times ten to the minus 5 masses of each other. Near the holes they spread into a sheaf of loops. As the tracing proceeds, 4 end in the lower hole in orange, 13 in the upper hole in blue, and 19 escape as pale grey curves that fan out to the right and back to the left. A counter at the bottom keeps the tally.

Nineteen escape, thirteen fall into the upper hole and four into the lower, from a spread of aims that for Sun-mass holes is 2.7 centimetres wide.

Try it yourself. The widget fires rays through the same module the engine uses, in your browser. Slide the aim, then zoom in wherever the colours change:

Open in Tofte Simulators

Three wrong places to look

The structure took three attempts to find, and the first wrong answer is the reason this post exists.

The obvious place to look was the edge of a shadow, where the lobes meet the dark. I put the holes eight units apart and fired four thousand rays across one edge. They found eight changes of fate. Box counting, the standard way to measure a fractal's dimension, levelled off at six boxes and reported a dimension of zero: a finite set of points, no fractal at all. That was a well-formed number from a correct method, and it was the wrong answer to the question I was asking. At that distance the holes were too far apart to pass light between them. Each one behaved like a single black hole, and a single hole has one sharp edge and nothing else.

This blog keeps coming back to that shape: a system that returns a sensible-looking answer which happens to be false. The closest sample is not the closest approach was a coarse scan that missed what happened between its samples. This was a coarse scan in the wrong place.

The structure is in the gap between the holes, when they are a couple of units apart and can hand light to each other. What found it was the time a ray spends deciding, the gold line in the first figure. On a scan far too coarse to resolve any boundary, the rays near one still take visibly longer than their neighbours, because they are caught circling. The engine reports that as a dwell profile, and wherever rays linger is where to zoom. Every window it zoomed into from there, down to 1.8 × 10^-5 units, showed more than one outcome.

The structure is certain. The dimension is not.

Those are different claims, and the engine keeps them apart.

That there is structure at every scale it could reach is a direct observation: six nested windows, a factor of 32,768, three outcomes in every one. How much structure, the fractal dimension, is a number the engine measures two independent ways:

  • Box counting over a scan of 600 rays: 0.21, with a spread of 0.10.
  • The uncertainty exponent, which fires 80 pairs of rays a small distance apart and counts how often the two disagree, then watches how that fraction shrinks as the pairs get closer. It uses no grid and counts no boxes. At a separation of 0.02 units, 43 percent of pairs disagreed; at 0.001, 2.5 percent. That gives 0.18, with a spread of 0.29.

The two agree to within 0.035, and one of them has an error bar wider than itself. So the honest statement is that the boundary is a fractal, and its dimension along this line is probably around 0.2, and I do not know it to better than a factor of two. A uniform scan cannot resolve every scale at once, and this boundary keeps going below whatever a scan can afford. The engine never quotes the dimension without that gap attached.

The machinery underneath, geodesics and curvature checked against the great theorems, is in A Klein Bottle Has No Inside. This is the first thing it has found that I could not have drawn by hand.