Where the angle comes from

The exponent that barely matters

A code comment on this site claimed since its foundation phase that the repulsion's falloff exponent hardly changes the answer. It could not be tested, because the function that would have taken it never passed one down. Tested at last, it is true on a disc — by three and a half degrees across a sixteenfold range — and on a stem it decides whether there is a pattern at all.

Worth reading first: How far a primordium reaches · The angle is an output · The bifurcation diagram.

Here is a sentence that stood in this site’s source for three phases:

Repulsion falls off with distance; the exponent barely matters and the site uses an inverse cube, which is what the original paper’s magnetic droplets actually obey.

It is the kind of remark that gets written while doing something else. It is also a claim about a parameter, in a collection whose stated discipline is state the claim, state the test, report the number — and it had no test.

Worse than that: it had no way to be tested. The function that runs the model, iterate(), took a sample count and a growth parameter and a seed angle and no exponent, and called the step function without one. Every figure and every check on this site had been run at a single point of an argument that a comment made a claim about, and nobody could have varied it without changing the code.

That is now fixed, in the least interesting way — the argument is threaded through — and the claim can be looked at. It turns out to be true on one geometry, false on the other, and true for a reason that is better than the claim.

A rule too long-ranged makes no pattern; every shorter one makes the same patternEach dot is 4 runs from a coarse start at one exponent, separated by 0.2° of placement noise. Below p ≈ 1.1 the divergence scatters by tens of degrees, which is what an arbitrary sequence gives. From p = 1.25 to p = 8 — a sixfold range — every run ends on 8/13 with the scatter between 0.75° and 1.06°.00.50011.50-0.25000.2500.5000.750falloff exponent, log₁₀scatter, log₁₀ degrees00.50011.50-0.25000.2500.5000.750falloff exponent, log₁₀scatter, log₁₀ degreesno latticethe same lattice, whatever pevery runsome runsno runneighbourhood 12/√h · 4 runs per exponenta lattice from p ≈ 1.25 upward
Fig. 1 On a stem: whether the rule produces a lattice at all, against the exponent. Below the shaded band no run orders itself; above it every exponent from 1.25 to 8 produces the same pair at the same angle with the same scatter.

On a stem: the exponent decides whether there is a pattern

Grow a stem from a coarse start, let the rise decline, and count the top blind. Do that at ten exponents, with an ensemble at each — five runs separated by a fifth of a degree of placement noise, which is a twelfth of what a lattice tolerates and enough to make five runs five runs rather than one run reported five times.

The result has three regions and only the middle one is untidy.

Below about 0.9, no run makes a lattice. The divergence scatters over forty degrees, which is what an arbitrary sequence gives. The counter still returns a pair, because a counter always does; the scatter test says there is nothing there for it to have counted.

Above about 1.25, every run makes the same lattice. From p=1.25p = 1.25 to p=8p = 8 — a sixfold range, from a rule whose interaction is barely local to one that is nearly nearest-neighbour — every run ends on 8/13, at a divergence within a degree of 137.5°, with a scatter between 0.72° and 1.01°. The transitions each of them makes land within a twentieth of a rung of where the static ladder puts them, and within that of each other.

Between them is a band, and it is ragged. At 0.9 the share of runs that order themselves is 38 per cent; at 1.0 it is zero; at 1.12 it is 88. It does not move monotonically, and reporting a single critical exponent would be tidier than the measurement supports. A first attempt bisected for one and returned a different answer every time the ensemble size changed, which is what happens when there is nothing there to find.

So on a stem the exponent controls something absolute — whether a lattice exists — and controls nothing else. There is no room in that top region for a lag, a shifted angle, or a different ladder to depend on the range of the interaction, because everything in it is identical.

On a disc: three and a half degrees across a sixteenfold range

The disc model is the one the original comment was about, and there the claim holds.

Sweep the exponent from 0.5 to 8 at a growth parameter of 0.4 and the settled angle runs from 139.50° down to 136.00°. That is a real dependence — it is not noise, it is monotone, and every step of the exponent moves it in the same direction — and it is three and a half degrees, on a branch that is 137.5° wide in the sense that matters. Every exponent tried classifies as the golden angle.

Sixteen-fold in the exponent, 3.5° in the answerThe angle Douady and Couder's rule settles on, on a disc at a growth parameter of 0.4, with the repulsion exponent swept from 0.5 to 8. It runs from 139.50° down to 136.00° — never leaving the golden branch, and never staying still either. The claim that the exponent barely matters was in this site's code for three phases with no way to run it.136138140-0.25000.2500.5000.750falloff exponent, log₁₀settled angle (°)137.51°meristem growth 0.4 · 130 elements · 720 samples3.50° across p = 0.5 to 8
Fig. 2 The angle the disc model settles on, against the exponent, at a fixed meristem growth. Sixteen-fold in the parameter, three and a half degrees in the answer, and never off the golden branch.

“Barely matters” is a fair description of that. What is worth more than the description is the reason, which the comment did not have and which the previous essay in this ladder supplies.

In the disc model the elements drift outward exponentially with age — an element of age kk sits at radius eGke^{Gk} — so the number within a distance grows like the logarithm of that distance. Every neighbourhood is effectively local whatever the exponent, because the elements that would have made a long-range rule long-ranged are exponentially far away. The disc model cannot tell a long-range rule from a short-range one because its geometry does not deliver enough distant neighbours for the difference to show.

That also disposes of the natural worry about the sweep. If the rule can only see a fixed number of neighbours, a long-range rule is being truncated into a short-range one and the insensitivity is an artefact of the window. Measured, it is not: widening the window from eight elements to a hundred and forty changes the settled angle at p=0.5p = 0.5 by nothing at all, to the resolution of the sample grid. The window is not binding because the geometry has already made it irrelevant.

What the drift is, since it is not zero

Three and a half degrees is small and it is not nothing, and a monotone dependence is the sort of thing worth having an account of rather than filing under noise.

The direction is that a shorter-range rule settles on a smaller angle: 139.50° at p=0.5p = 0.5, 137.00° at p=3p = 3, 136.00° at p=8p = 8. The golden angle sits at 137.5077°, so the sweep passes through it somewhere between 2 and 3 rather than sitting on it.

That is what one would expect from a discrete model and it is worth spelling out, because it is easy to read a curve passing through the famous number as a confirmation of something. The golden angle is the limit of an infinite process — the divergence at which no family of parastichies ever lines up, reached by a tree of forks with infinitely many levels. A model with a finite number of elements, each placed among a finite number of neighbours, is working with the first few levels of that tree only, and where it settles depends on how many levels its neighbourhood spans. A shorter-range rule sees fewer of them.

So the drift is a finite-size effect rather than a physical dependence, and the honest statement of the disc result is slightly weaker than “the exponent barely matters”: the exponent moves the answer by about as much as the model’s own finiteness does, and in the direction finiteness would move it. It happens to cross the golden angle inside the range because the range includes the exponent this site has always used, which is a coincidence of the sweep’s bounds rather than a finding.

Two organs, one rule, opposite answers

Putting the two together gives the finding this ladder is really about.

The same rule with the same exponent is nearly parameter-free on a disc and sits on a cliff edge on a stem. Nothing about the rule changed between those two sentences. What changed is how fast the organ delivers neighbours with distance, and that is a growth law rather than a shape.

The consequence for this collection is a licence and a warning in the same breath.

The licence: every result on this site that came out of the disc model — the golden angle as an attractor, the bifurcation diagram, the whorled regimes at large growth — is robust to the one arbitrary constant in the rule. That is worth knowing, and it had been assumed rather than known.

The warning: those results were obtained in the geometry where the exponent cannot matter, and carrying them to a stem without checking is exactly the move this phase has now measured to be unsafe. The stem results at p=3p = 3 are fine — 3 is comfortably inside the region where nothing depends on it — but the reasoning “the exponent barely matters, so the choice of 3 is harmless” was a disc argument being applied to a cylinder, and it happened to land inside the safe region rather than being shown to.

What made the claim untestable, and why that is the real defect

The sentence was wrong about a stem and right about a disc. That is a smaller problem than the fact that nobody could have found out.

iterate() did not take an exponent. settle() passed its options through to iterate(), so it did not either. bifurcation() called settle() with a sample count and a run length, and so the whole of this site’s central figure — the one the collection is arranged around — had been produced at exactly one value of a parameter its own docstring described as unimportant.

There is a name for the shape of this on this fleet: a generator only ever run at one point of its own argument space is a generator whose assertions have only ever seen that point. The standard pass in a previous phase found forty-six of them here and made every one take the argument its essays are about. This is the same defect one level up — not a figure run at one point of its parameter, but a model run at one point of its own, with a comment asserting that the point did not matter.

The repair is three characters of plumbing in two functions. The reason it went three phases without being made is that nothing was missing: every gate passed, every figure was correct, and the claim was in a comment rather than in an assertion. A claim in a comment is not gated by anything, and this collection’s habit of writing the reasoning down beside the code has the side effect of producing a great many of them.

The rule that follows, and it is now recorded in the phase plan: if a comment makes a claim about a parameter, the parameter should be reachable and the claim should be a check. Where it cannot be — because the claim is about intent rather than behaviour — it should say so.

Why an untestable claim is worse than a wrong one

It is tempting to file this as a small error corrected. The error is small; what it sat inside is not.

A wrong claim that can be tested is a temporary condition. Somebody runs the test, the claim changes, and the collection is better off — which is most of what the essays here consist of, since a great many of them exist to report that a famous statement is out by a factor of two or true of a branch rather than of plants.

A claim that cannot be tested is a permanent condition, and it is invisible in every way this collection normally notices things. Every gate passed. Every figure was correct at the point it was drawn. The claim was accurate about the model as it stood, in the sense that varying the parameter was not something the model did. Nothing anywhere was inconsistent, because a claim about behaviour that cannot be exhibited cannot be inconsistent with anything.

The only thing that would have surfaced it is somebody wanting to vary the parameter for another reason — which is what happened, two phases later, because the scale phase’s negative result about lags needed a long-range rule to test against.

That suggests a modest general rule, and it is the one this phase has adopted. A parameter a comment makes a claim about should be reachable from outside. Not necessarily swept, not necessarily gated — reachable, so that the claim is the kind of thing somebody could check on an afternoon when they have a reason to. The cost of that here was two function signatures.

The stronger version — every claim in a comment should be an assertion — is not adopted, because most comments make claims about intent, history and design, and those are not testable in the sense meant. What is adopted is the narrower rule about parameters, which covers this case exactly and would have covered it three phases ago.

What is left over

Two things this measurement does not settle, both recorded rather than glossed.

The disc sweep is at one growth parameter. At G=0.4G = 0.4 the drift with exponent is 3.5°, and towards the coarse end of the range the model’s own resolution is a couple of degrees, so what is being measured near the edges is partly the sampling. The claim holds across the range where the model converges cleanly, and the essays about that range already state where it is.

The stem sweep is at one rate and one starting rise. The runs all decline from 0.4 to 0.004 at seventy nodes per rung, which is a configuration chosen because the previous phase established that the ladder is walked cleanly there. Whether the band sits at the same exponents when the stem is hurried, or carried further, is not measured. The direction that would be worth checking is the fast one: a hurried stem has fewer placements in which to establish the contrast between its nearest neighbours and the rest, and the band might widen.

And the stem’s ragged band is not explained. Between 0.9 and 1.25 the share of runs that order themselves goes 38 per cent, zero, 88 per cent, which is not monotone and is not noise in the ensemble — the same ensembles repeated give the same shares. Something structural is happening in that band and this phase does not know what. It is written down here because a band reported as a band, with its non-monotonicity visible, is honest, and a critical exponent quoted to three decimals from a bisection through it would not have been.

One guess is available and it is only a guess. The shell measurement puts the ratio between the nearest neighbours’ influence and the next shell’s at 8.2 at p=1p = 1 and 20.9 at p=1.25p = 1.25, and a lattice forms reliably at the upper figure. In between, the rule is placing each element with respect to its immediate neighbours most of the time and with respect to a broader neighbourhood the rest. A pattern assembled that way would order itself when the early placements happen to fall the right way and not otherwise, which would produce shares between zero and one that depend on the history of the run rather than smoothly on the exponent — and shares that do not move monotonically, because the histories at neighbouring exponents are unrelated to each other.

That is consistent with what is measured and it predicts something checkable: in the band, the outcome should depend strongly on the starting divergence, where above the band it does not depend on it at all. The starting divergence is already a parameter of the runs and the check is an afternoon’s work. It is not done here, and it is the first thing to do if this band is ever worth resolving.

Which neighbours decide where an element goesEach line is one exponent: how much each shell of neighbours makes the energy profile vary around the circumference, divided by what the nearest shell contributes. At p = 0.5 the nearest shell leads the next by a factor of 1.1 and a node is placed against the whole neighbourhood at once. At p = 3 it leads by 9.7e+3, and a node is placed against its immediate neighbours — which is what a lattice is.-8-6-4-20distance from the tip, in node spacingsvariation ÷ nearest shell, log₁₀0–22–44–88–1616–3232–64a golden-angle stem at a rise of 0.004 · shells in units of √hnearest shell dominates by 1.1× at p = 0.5, 9733× at p = 3
Fig. 3 The quantity the band is presumably about: how far the nearest neighbours dominate the profile’s variation, at each exponent. Twenty is where a lattice becomes reliable, eight is where it is intermittent, and one is where there is no pattern at all.
A stem gathers neighbours linearly; a growing disc barely gathers them at allOn a cylinder of circumference 1 with a rise of 0.02, the nodes within distance d number 2d/0.02 once d exceeds one turn — a fitted exponent of 1.020 and 100 per unit against the 100 the geometry fixes. In the disc model an element of age k sits at radius e^(0.4k), so each doubling of the distance adds the same two or three neighbours rather than twice as many.123-0.50000.50011.50distance from the node, log₁₀neighbours, log₁₀a stemslope 1a disca logarithmrise 0.02 · 6000 nodes · meristem growth 0.4slope 1.020 against slope 1
Fig. 4 Why the two organs answer differently. A stem gathers neighbours linearly with distance and a growing disc gathers them logarithmically, so the same exponent leaves the disc with nothing far away to be long-ranged about.
Whether the rule's energy has a value at allThe sum of d⁻ᵖ over every node within a distance, divided by its value at one circumference, for seven exponents. Above p = 1 the curve flattens — the last doubling of the range adds 0.0 per cent at p = 3. Below it the sum keeps climbing however far the rule is allowed to see, so there is no total to take a minimum of.2468012345range looked at, log₂ turnsenergy ÷ first turna golden-angle stem at a rise of 0.02 · 20000 nodesconverges above p = 1
Fig. 5 And the calculation that first looked like the explanation. The total energy converges above an exponent of one, the measured band straddles one, and the agreement is a coincidence — an argmin cannot see a term that is the same at every azimuth.
What the model settles on, against how fast the meristem growsA broad golden branch, a transition, and then the two-whorl regime at exactly half a turn. 12 of 40 converged settings land within 4° of the golden angle; 23 land more than 20° away.1001251501750.50011.50growth parameter Gangle the model settles on (°)goldentwo-whorlfilled: converged · hollow: still wanderingone rule, one knob
Fig. 6 The figure the whole collection is arranged around, produced at one point of a parameter its own docstring called unimportant. The sweep here is the growth parameter; the other knob was unreachable.
Two runs of the same rule from unrelated starting anglesBoth settle at 137.0°, within 0.5° of the golden angle, from seeds 166° apart.120130140150020406080stepdivergence angle produced at that step (°)golden anglegrowth 0.40settled spread 0.00°
Fig. 7 The rule settling, at the exponent the ferrofluid supplies. Sixteen-fold changes in that exponent move where it settles by three and a half degrees.
The heads three settings of the one knob produceG=0.3 → 139.2° · G=0.62 → 143.0° · G=1.1 → 180.0°. The model was not told any of these angles.G = 0.30139.2° — goldenG = 0.62143.0° — otherG = 1.10180.0° — whorled (half)one rule, three growth ratesthe angle is an output
Fig. 8 The regimes the sweep passes through. Every one of them was measured at an inverse cube and none of them depends on it, which is a licence rather than a coincidence.

What links here

Computed from the collection, not written here: the essays that point at this one.

Reads more easily once this is understood

Essays that name this one as worth reading first.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

BranchCylinderDivergence angleEnsembleLadderMeristemNearest neighbourNoiseThe placement ruleRepulsionRiseUntested claim