The Lattice We BuildEpisode 17 / Mercury precesses on a flat lattice

Turning Episode 3's homework from argument into calculation ── no warping needed. But the finite differences have one condition

Mercury precesses on a flat lattice Episode 3 wrote that "what was missing was a single word, direction-dependent."
That was an argument, and it did not compute anything. Its figure used a weak-field scalar and dodged the discrepancy with a note about "first order."
This time we do it ── get Mercury's perihelion advance without warping the coordinates even once.
42.9807 arcsec/century. Agreeing with observation and with general relativity.

Tools needed: Episode 3 (a flat stage), Bonus ② (ct = constant), numerical integration The core of this episode: without the deviation as the variable, finite differences will not solve it

There is a position this series' readers have taken consistently ── space does not warp; instead the way light travels changes. And the universe can be computed by finite differences.
Episode 3 answered that "with a tensor it stands up," but never stood it up. This episode does. It uses only flat Euclidean coordinates, and the lattice stays orthogonal to the end.
The result splits in two. The physics goes through completely ── 42.9807 arcsec/century, ratio to GR 1.0000.
And the finite differences turned out to have one condition that cannot be skipped. Not a matter of taste but the boundary between solvable and unsolvable in double precision.

◆ ◆ ◆

01Build the stage ── do not warp it

These are the only coordinates. They never change.

$$dx^2+dy^2+dz^2\qquad\text{(Euclidean. an orthogonal lattice. no warping)}$$

Instead of warping, put two functions at each point.

SCHWARZSCHILD IN ISOTROPIC COORDINATES (EXACT)
$$ds^2=-A(\rho)^2\,dt^2+B(\rho)^4\,(dx^2+dy^2+dz^2)$$ $$A=\frac{1-u}{1+u},\qquad B=1+u,\qquad u=\frac{m}{2\rho},\qquad m=\frac{GM}{c^2}$$

\(\rho=\sqrt{x^2+y^2+z^2}\) is just Euclidean distance. This is not an approximation ── it is the Schwarzschild solution rewritten, exactly.

Here is the point. The spatial part stays \(dx^2+dy^2+dz^2\), with only a number \(B^4\) multiplying it. The lattice is not warped. What looks like warping is that the "resistance to travel" sitting on the lattice differs from place to place.

That there are two functions will matter later. The time-side \(A\) and the space-side \(B\) are different functions. That was what Episode 3's "one word" really was.

CONSISTENCY WITH BONUS ② Bonus ② wrote that "read as '\(c\) varies' it dies ── \(c\) carries dimensions, so it has no observer-independent meaning." That is correct, and here too \(c\) is not being moved.
What is being moved is how light travels in the coordinates, \(|d\vec x/dt|=A/B^2\). That is a dimensionless ratio, so it carries meaning. In the language of optics, a refractive index.
◆ ◆ ◆

02Integrate

Written in Hamiltonian form, it lands in a shape easy to discretize. With \(c=1\), \(F=A^{-2}\), \(G=B^{-4}\) ──

EQUATIONS OF MOTION (\(\lambda\) is proper time)
$$H=\tfrac12\bigl(-E^2F+|\vec p\,|^2G\bigr)=-\tfrac12$$ $$\frac{dx_i}{d\lambda}=p_i\,G,\qquad \frac{dp_i}{d\lambda}=-\tfrac12\Bigl(-E^2F'+|\vec p\,|^2G'\Bigr)\frac{x_i}{\rho}$$

\(E\) is a conserved quantity (the momentum in the time direction). Launch tangentially from perihelion, orbit with RK4, and record the azimuth each time perihelion is passed. The azimuth is not folded into \(2\pi\) along the way; it is accumulated from the start ── I actually got this wrong once (see below).

RUN ── MERCURY
# Sun m = GM/c^2 = 1476.6250 m
# Mercury a = 5.790905e10 m, e = 0.2056302, T = 87.9691 days
# weakness measure  m/a = 2.550e-08

general relativity prediction  6 pi m /(a(1-e^2)) = 5.018663e-07 rad/orbit
                                     = 42.9807 arcsec/century

# step-size convergence (exact Schwarzschild, 4 orbits)
  steps/orbit = 2000     42.9860   GR ratio 1.000124   (0.1 s)
  steps/orbit = 5000     42.9808   GR ratio 1.000004   (0.2 s)
  steps/orbit = 10000    42.9807   GR ratio 1.000000   (0.4 s)
  steps/orbit = 20000    42.9806   GR ratio 0.999999   (0.9 s)

# the real run (10000 steps/orbit, 6 orbits)
  exact Schwarzschild (isotropic coords)   42.9807 arcsec/century   GR ratio 1.0000

There it is. The coordinates were never warped. All we did was put \(A\) and \(B\) on a Euclidean lattice and integrate the geodesic.

◆ ◆ ◆

03What happens if you drop the "one word"?

Let us verify Episode 3's claim ── how far off do you land if you drop the space-side function?

Written in PPN form it becomes exactly one knob. With \(U=m/\rho\),

$$ds^2=-\bigl(1-2U+2\beta U^2\bigr)dt^2+\bigl(1+2\gamma U\bigr)\bigl(dx^2+dy^2+dz^2\bigr)$$

\(\gamma\) is "the space-side word." \(\gamma=0\) means returning space to plain Euclidean ── the most naive reading of "variable speed of light," where only the rate of time varies with place. General relativity has \(\gamma=1\).

RUN ── SWEEP \(\gamma\)
  model                        perihelion advance   GR ratio
 -----------------------------------------------------
  exact Schwarzschild         42.9807 arcsec/century  1.0000
  PPN  gamma = 1              42.9807                 1.0000
  PPN  gamma = 0.5            28.6538                 0.6667
  PPN  gamma = 0              14.3269                 0.3333

  analytic formula (2 + 2 gamma - beta)/3 :
    gamma=1   -> 1.0000    42.9807
    gamma=0.5 -> 0.6667    28.6538
    gamma=0   -> 0.3333    14.3269      agrees to all digits

Drop the space side and the answer becomes a third. 14.33 arcsec/century. Mercury's perihelion advance has been measured since the nineteenth century, with a history of every explanation other than general relativity failing ── a third is on the failure side.

And \(\gamma\) has been measured independently. From Cassini's radio delay,

$$\gamma-1=(2.1\pm2.3)\times10^{-5}$$

Measured against that error, \(\gamma=0\) is more than 40,000σ away. The reading "only time varies and space stays plain" is crushed by observation. Episode 3's "one word" was a genuinely necessary word.

Figure: the lattice stays straight and unwarped. Instead of warping, the orbit rotates. Lower \(\gamma\) and the rotation slows; at \(\gamma=0\) it is a third. \(m/a\) is exaggerated to make the effect visible (Mercury's actual value is \(2.55\times10^{-8}\), i.e. \(0.1\) arcsec per orbit). The readout's "ratio" departing from 1 by a few percent is because PPN is a first-order approximation, and it returns to 1 as you weaken the exaggeration ── at Mercury's actual value it is 1.0000 (§02)
the unwarped orthogonal lattice the orbit the position of perihelion

Look closely at the lattice lines. Not one of them is bent. What is rotating is only the orbit.

◆ ◆ ◆

04Can light decide it? ── a correction

When planning this episode I thought "light only sees the ratio \(F/G\), so it cannot decide \(\gamma\)." That was wrong. Compute it and light sees \(\gamma\) too.

light bending (solar limb)Mercury's perihelion
form of the weight\(\dfrac{1+\gamma}{2}\)\(\dfrac{2+2\gamma-\beta}{3}\)
\(\gamma=1\) (GR)1.75120″(theory 1.75119)42.98″
\(\gamma=0\)0.87560″ (exactly half)14.33″ (exactly a third)

Both respond to \(\gamma\), but with different weights. And light does not see \(\beta\) at all ── \(\beta\) does not appear in the light formula. So separating \(\gamma\) from \(\beta\) requires both light and Mercury. Why there are two kinds of observation falls out of the formulae.

HOW THIS DIFFERS FROM EPISODE 3'S "LIGHT HAPPENS TO HIT" Episode 3 wrote that "the reason light alone comes out right is that null geodesics are conformally invariant." That is about the expanding universe (FRW). FRW is conformally flat, so multiplying everything by a conformal factor is invisible to light ── which is why "flat spacetime × a scale factor" gets light exactly right.
\(\gamma\), by contrast, is not a conformal factor. It multiplies time and space by different coefficients, so light sees it too. The two were different stories. I had conflated them, so I note it here.
◆ ◆ ◆

05The main subject ── can it be solved by finite differences?

This is the most practical part of the episode.

The equations of motion above contain \(F'\) and \(G'\). We have already seen that it goes through with analytic derivatives. So what happens if we replace them with central differences? That is the most straightforward test of the claim "the universe can be computed by finite differences."

TRY IT NAIVELY ── central-difference \(F,G\) directly
  frac (step / rho)       perihelion advance   GR ratio
 -------------------------------------------------
  1e-08              -135214.89 arcsec  -3145.94
  1e-06                 9168.33           213.31
  1e-04                 -153.46            -3.57
  1e-03                   22.49             0.52
  1e-02                   18.28             0.42

  No step size works. Not even the sign is right.

Broken to the point of flipping sign. This is not physics but precision. Estimate the reason and it becomes clear.

WHY IT BREAKS
① the perihelion advance is a very small correction

A relative correction of \(m/a=2.55\times10^{-8}\) against the main term (Newtonian gravity). To get it to 1%, the relative error of the derivative must be \(\eta\lesssim2.5\times10^{-10}\).

② but \(F\) is close to 1

\(F-1\simeq2m/\rho=5.1\times10^{-8}\). Differencing numbers of order 1 in double precision carries an absolute error \(\varepsilon\simeq2.2\times10^{-16}\), so

$$\eta\;\simeq\;\frac{\varepsilon}{4\,(m/\rho)\,\mathrm{frac}}\;=\;\frac{2.2\times10^{-9}}{\mathrm{frac}}$$
③ the two requirements are incompatible

Rounding demands \(\mathrm{frac}>8.5\). Truncation (\(\sim2\,\mathrm{frac}^2\)) demands \(\mathrm{frac}<1.1\times10^{-5}\).

The step must be both 8.5 times and \(10^{-5}\) times the radius ── impossible.

THE DOUBLE-PRECISION WALL

With the naive approach of differencing the metric directly, Mercury's perihelion advance cannot be computed in double precision.

No choice of step works. What is needed is about six extra digits of precision ── go to quadruple precision and it goes through, but that is a price.

◆ ◆ ◆

06How to get past it ── make the deviation the variable

The fix is what numerical relativity actually does. Write "the deviation from 1" in a closed form with no cancellation.

SUBTRACT THE 1 ALGEBRAICALLY, IN ADVANCE
$$F-1=\frac{4u}{(1-u)^2},\qquad G-1=\frac{-u\,(4+6u+4u^2+u^3)}{(1+u)^4},\qquad u=\frac{m}{2\rho}$$

Neither right-hand side contains "a subtraction of two nearly equal ones." So even when \(u\) is \(10^{-8}\), all the significant digits survive.

Difference these and the rounding error becomes relative not to "1" but to "\(F-1\simeq5\times10^{-8}\)" ── a gain of 8 digits.

DIFFERENCE THE DEVIATION
  frac (step / rho)       perihelion advance   GR ratio
 -------------------------------------------------
  1e-09                    42.9533       0.999361
  1e-07                    42.9826       1.000042
  1e-06                    42.9812       1.000010
  1e-05                    42.9808       1.000000
  1e-04                    42.9807       0.999999
  1e-03                    42.9811       1.000009

  It goes through. And stable across four decades of step size.
  (the estimate gave a window of 4e-7 to 1e-5, 1.4 decades, so the estimate was conservative)
CONCLUSION

A flat lattice + two refractive-index functions = general relativity. Exactly.

No warping needed. It can be solved by finite differences. Mercury precesses at 42.9807 arcsec/century.

But make "the deviation from 1" the variable. This is not a stylistic preference but the boundary between solvable and unsolvable in double precision. That numerical relativity uses deviation variables (carrying \(h_{ij}\) in \(\gamma_{ij}=\delta_{ij}+h_{ij}\), and so on) is for exactly this reason.

THE HOLE I FELL INTO IN THIS EPISODE My first implementation gave \(-5.4\times10^{8}\) arcsec/century. The cause was folding the perihelion azimuth into \(\pi\), so a whole \(2\pi\) per orbit was being dropped.
I could catch it because light bending already matched 1.75119 ── knowing the integrator and the metric were right narrowed the rest to the recording side. This is when a positive control earns its keep. (The same tool that caught the \(\sqrt{12}\) in Episode 11.)
◆ ◆ ◆

07What can be shown, and what remains

result
does GR come out on an unwarped lattice?yes. 42.9807″/century, GR ratio 1.0000. the coordinates stay Euclidean to the end
is the "one word" really needed?yes. drop it and you get a third (14.33″). more than 40,000σ from Cassini's \(\gamma-1=(2.1\pm2.3)\times10^{-5}\)
can finite differences solve it?yes, provided the deviation is the variable (naively it is impossible in double precision)
global structureout of reach. horizons and topology cannot be written by re-covering with coordinates (Episode 3's price, unchanged)
can the flat background be observed?no. so it cannot serve as a preferred frame ── it does not cause Episode 2's 18-order problem either, but it is not a physical lattice

The last row is the heart of this position. A flat lattice works perfectly as "a lattice for computing" and never becomes "a lattice as the basic structure of the world." And if computing is all you want, that suffices ── numerical relativity does it every day.

What Episode 16 investigated was the case where the spacing is physical. There Lorentz violation appears and a symmetry mechanism is required. What this episode did is the case where the spacing is numerical. There, there was no obstacle at all.

WORK IT BY HAND
  1. Put \(\gamma=0,\beta=1\) into \((2+2\gamma-\beta)/3\) and compute what 42.98 arcsec/century becomes.
    show the answer
    \((2+0-1)/3=1/3\). Hence \(42.9807/3=\mathbf{14.3269}\) arcsec/century. Agreeing to all digits with the numerical integration in the text. With "only time varies and space stays plain," Mercury's answer becomes a third ── nowhere near the 43 arcsec nineteenth-century observers were chasing.
  2. With \(u=m/2\rho\), compute \(A^{-2}-1\) by hand and verify it equals \(4u/(1-u)^2\).
    show the answer
    \(A^{-2}=\left(\frac{1+u}{1-u}\right)^2\), so \(A^{-2}-1=\frac{(1+u)^2-(1-u)^2}{(1-u)^2}=\frac{4u}{(1-u)^2}\). The point is that the \(1\) has cancelled in the numerator. Computing \((1+u)^2\) and \((1-u)^2\) separately and subtracting loses digits, but in this form \(4u\) comes out directly and the significant digits survive. Doing the subtraction algebraically in advance — that alone separated solvable from unsolvable in double precision.
  3. From the relative smallness of the perihelion advance \(m/a=2.55\times10^{-8}\) and double precision's \(\varepsilon=2.2\times10^{-16}\), derive the lower bound on the step needed for a naive difference (1% accuracy, \(\eta\simeq\varepsilon/(4(m/\rho)\,\mathrm{frac})\)).
    show the answer
    The required accuracy is \(\eta<0.01\times2.55\times10^{-8}=2.55\times10^{-10}\). From the formula, \(\mathrm{frac}>\frac{2.2\times10^{-16}}{4\times2.55\times10^{-8}\times2.55\times10^{-10}}\simeq\mathbf{8.5}\). A step 8.5 times the radius. Meanwhile truncation error demands \(\mathrm{frac}<1.1\times10^{-5}\). Incompatible ── that is the content of "a naive difference is impossible in principle in double precision."

What we learned in this episode

General relativity stands up as it is on an unwarped lattice. The coordinates stay \(dx^2+dy^2+dz^2\) throughout. All we put on them were the two functions \(A(\rho)\) and \(B(\rho)\) (Schwarzschild in isotropic coordinates, exact). Integrating the geodesic with RK4 gives 42.9807 arcsec/century, GR ratio 1.0000. Convergence confirmed from 2000 to 20000 steps/orbit.

Episode 3's "one word" really was necessary. PPN's \(\gamma\) is the space-side word. Drop it (\(\gamma=0\), space back to plain Euclidean) and you get 14.3269 arcsec/century = exactly 1/3. \(\gamma=0.5\) gives 2/3. Agreeing to all digits with the analytic \((2+2\gamma-\beta)/3\). From Cassini's \(\gamma-1=(2.1\pm2.3)\times10^{-5}\), \(\gamma=0\) is more than 40,000σ away.

Light can decide it too ── my planning assumption was wrong. I thought "light only sees \(F/G\), so it cannot decide \(\gamma\)," but light bending is 1.75120″ at \(\gamma=1\) and 0.87560″ at \(\gamma=0\) (exactly half). Only the weights differ, \(\frac{1+\gamma}{2}\) versus \(\frac{2+2\gamma-\beta}{3}\). But light does not see \(\beta\), so separating \(\gamma\) from \(\beta\) needs both light and Mercury. Episode 3's "light hits because it is conformally invariant" was about FRW and was a different story.

Finite differences do solve it. But naively it is impossible in double precision. Central-differencing \(F,G\) directly gets not even the sign right at any step size. The reason: the perihelion advance is a correction of \(m/a=2.55\times10^{-8}\) against the main term while \(F-1\) is only \(5.1\times10^{-8}\). Rounding demands \(\mathrm{frac}>8.5\), truncation demands \(\mathrm{frac}<1.1\times10^{-5}\) ── incompatible.

The way past is "make the deviation the variable." Write \(F-1=\frac{4u}{(1-u)^2}\) and \(G-1=\frac{-u(4+6u+4u^2+u^3)}{(1+u)^4}\), subtracting the 1 algebraically in advance. Rounding then becomes relative to \(5\times10^{-8}\), a gain of 8 digits, and the GR ratio stays within 1.00001 over the wide range frac \(10^{-7}\)–\(10^{-3}\). Not a stylistic preference but the boundary between solvable and unsolvable. This is why numerical relativity uses deviation variables.

And what remains. Global structure (horizons, topology) is out of reach ── Episode 3's price, unchanged. And the flat background cannot be observed, so it cannot serve as a preferred frame. Which is to say this lattice is perfect as "a lattice for computing" and never becomes "a lattice as the basic structure of the world". What Episode 16 investigated was the latter (the spacing being physical), which needs a symmetry mechanism. For the former, there was no obstacle at all.

This document is Episode 17 of the "Lattice We Build" series, a reading piece for high-school and university students who love physics. Where the sister series "That Clicks" explains known physics, this series shows the work itself ── including the bugs I stepped in and where my planning assumptions were wrong.

Established material: the Schwarzschild solution in isotropic coordinates; the PPN formalism and \(\gamma,\beta\); the \(\frac{1+\gamma}{2}\) dependence of light bending and the \(\frac{2+2\gamma-\beta}{3}\) dependence of the perihelion advance; general relativity's perihelion advance \(6\pi GM/(c^2a(1-e^2))\); Mercury's orbital elements; Cassini's \(\gamma-1=(2.1\pm2.3)\times10^{-5}\) (Bertotti–Iess–Tortora 2003); and light bending at the solar limb, \(4GM/c^2R_\odot=1.751''\).
The numbers in this article (42.9807 arcsec/century, 28.6538 and 14.3269 at \(\gamma=0.5,0\), the light values 1.75120 and 0.87560, the step-convergence table, and the finite-difference tables) are the output of an RK4 integration code written by the author. Comparisons with the analytic formulae are given alongside throughout, and those are the arbiters. The estimates of the \(\eta\) and frac needed for 1% accuracy are order-of-magnitude arguments, with the coefficients 4 and 2 approximate (as the text shows, the measured tolerance window is wider than the estimate).
The statement "a flat lattice + two functions = general relativity" is not this article's original claim ── isotropic coordinates have been known for a century, and numerical relativity routinely solves on orthogonal lattices. What this article did was actually run the part Episode 3 left as an argument, confirm it numerically, and quantify the cancellation condition that shows up when you do.
That global structure is out of reach and that the flat background cannot be observed are as in Episode 3, and this episode does not improve on them.

Main series: Episode 1Episode 2Episode 3Episode 4Episode 5Episode 6Episode 7Episode 8Episode 9Episode 10Episode 11Episode 12Episode 13Episode 14Episode 15Episode 16 | bonus: ── to print, use your browser's "Print" → "Save as PDF."

Print / PDF: ⌘+P (Ctrl+P on Windows). In the figure you can confirm that only the orbit rotates while the lattice stays unwarped.