Where the angle comes from

The exponent that barely matters

An unchecked claim, repeated since the first essays, held 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 a long time:

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 pattern. Each 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°.
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 answer. The 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 rounds of work with no way to run it.
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 the work here 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.

A rule too long-ranged makes no pattern; every shorter one makes the same pattern. Each dot is 3 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.72° and 1.11°.
Fig. 3 The same sweep over a wider neighbourhood. Whether the rule produces a lattice at all is what the exponent is being asked about, and the answer barely moves.

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: a generator only ever run at one point of its own argument space is a generator whose assertions have only ever seen that point. An earlier repair pass 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 rounds of work 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 note left with it: 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.

A rule too long-ranged makes no pattern; every shorter one makes the same pattern. Each dot is 3 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.72° and 1.11°.
Fig. 4 Three runs rather than four at the working neighbourhood. The spread between runs is what any claim about the exponent has to beat.

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 rounds of work later, because the earlier work’s negative result about lags needed a long-range rule to test against.

That suggests a modest general rule, and it is the one the work here 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 earlier in this collection.

A rule too long-ranged makes no pattern; every shorter one makes the same pattern. Each 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°.
Fig. 5 A narrower neighbourhood. Cutting the loop bound changes what the rule sees and still leaves the exponent doing very little.

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 earlier work 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 the work here 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.

A rule too long-ranged makes no pattern; every shorter one makes the same pattern. Each 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°.
Fig. 6 Between the two. The sweep is over the exponent at each of these settings, and none of them turns it into a knob that matters.

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 goes. Each 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.
Fig. 7 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.

There is a version of the original remark that survives all of this, and it is worth writing down in place of the one that did not. The exponent barely matters above about 1.25 and matters absolutely below it. Between an inverse first power and an inverse 1.25 power the rule goes from producing no pattern at all to producing a lattice every time; from 1.25 to an inverse eighth power — a range of more than six — the settled angle moves by a degree or two. So the parameter has a threshold and a plateau, and the comment was describing the plateau while the interesting behaviour sat just off the end of it.

That is what the contrast measurement makes precise: the exponent controls how much of the placement profile’s variation the nearest ring of neighbours owns, and once that share is large enough the rule is placing a node against its immediate neighbours whatever the tail is doing.

A rule too long-ranged makes no pattern; every shorter one makes the same pattern. Each 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°.
Fig. 8 And the widest at four runs. Six sweeps across three neighbourhoods is what the title is measured on.

What links here

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

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