What a plant might be doing

The neighbourhood was already settled

The previous phase explained a small difference between two kinds of noise by saying a jostle is diluted among some thirty neighbours. Sweep the neighbourhood sixfold and the difference does not move — because past four spacings the rule builds the identical lattice, internode for internode. There was nothing to dilute.

Worth reading first: Where the noise gets in · How far a primordium reaches · A window that makes a pattern.

The previous phase measured three kinds of disturbance and found that a ruler cannot tell them apart. In passing it noticed one small difference — a jostle needs a little more amplitude than a placement displacement to produce the same divergence scatter — and offered a reason in a single clause: a jostled neighbour reaches the argmin through one contribution among some thirty, while placement noise goes into the recorded angle undivided.

It was careful about the difference, calling it one step of the sweep’s grid rather than a finding. It was not careful about the explanation, which was stated as though it needed no test.

The test is one sweep and the explanation does not survive it.

The prediction

If dilution among neighbours is the mechanism, the amount of dilution should depend on how many neighbours there are.

The placement rule has a parameter for exactly that. reach is how far the rule looks, in units of the local spacing between nodes, and the number of nodes it sums over is that reach divided by the square root of the rise — about thirty at reach six at the fine end of these runs, and about a hundred and ninety at reach twelve.

So: a short-ranged rule should convert a jostle into scatter more efficiently than a long-ranged one. Fewer neighbours, less dilution, more damage per degree of displacement.

The sweep

Six neighbourhood sizes, from two spacings to twelve. For each, the excess scatter a jostle adds over the scatter the undisturbed rule already has, divided by the same quantity for a placement displacement of the same size.

A sixfold neighbourhood, and nothing to diluteThe prediction was that a rule with fewer neighbours would convert a jostle into divergence scatter more efficiently. Across a sixfold widening the ratio sits between 0.97 and 1.00, and the one point that differs is the narrowest, at 0.82 — smaller, where the prediction wanted larger. The row underneath is why: past four spacings the rule builds the identical lattice, internode for internode, so there is no neighbourhood left to widen.00.50012346912how far the rule looks, in units of the local spacingscatter a jostle adds, over the scatter the same displacement adds after the choiceequal damage0.82 — the wrong wayinternodes that differ between one neighbourhood and the next422→3113→4none4→6none6→9none9→124 runs per point · window 32–190 nodeseach disagreement is one grid sample
Fig. 1 The ratio the prediction was about, against the neighbourhood size. The prediction wanted the left of this plot higher than the right. Across a sixfold widening the ratio sits between 0.97 and 1.00, and the one point that moves is the narrowest, which moves the wrong way.
reach ratio
2 0.82
3 0.97
4 0.97
6 1.00
9 1.00
12 1.00

The prediction is refuted twice over. The ratio does not move as the neighbourhood widens sixfold; and the one point that differs is the narrowest neighbourhood, where the ratio is smaller — a jostle doing less damage relative to a displacement, where the prediction wanted more.

The identical numbers

At reach six, nine and twelve the ratios are not merely close. The excess scatters behind them are identical to four decimal places: 0.8596° for a jostle and 0.8628° for a placement displacement, three times over.

That is not what an insensitive measurement looks like. An insensitive measurement gives nearby numbers, not the same number.

Grow two stems differing in nothing but reach and compare them internode by internode:

  • reach 4 against reach 12 — 0 of 322 internodes differ
  • reach 3 against reach 4 — 11 of 322 differ
  • reach 2 against reach 3 — 42 of 322 differ

Past four spacings the rule does not build a similar lattice. It builds the same lattice, to the last digit, across a threefold widening of the neighbourhood.

Every disagreement is one sample wide

The internodes that do differ, below four spacings, differ by a specific amount.

The rule chooses an azimuth from a grid of three hundred and eighty-four samples, so the finest distinction it can draw is one step of that grid: 360°/384, which is 0.9375°. Every disagreement between reach two and reach three, and every one between reach three and reach four, is exactly that — 0.9375°, to six decimal places, worst case and typical case alike.

So even the rule cut down to two spacings is not building a different pattern. It is choosing the adjacent grid point, on about one placement in eight, and the effect on the finished lattice is a scatter of one grid step distributed over a few dozen internodes.

That is worth knowing for two reasons. It says the convergence is orderly rather than a coincidence of averages — the narrow rule is not making different decisions, it is making the same decisions marginally. And it puts a floor under what any sweep of this parameter could ever show: a difference smaller than one grid step is not representable, so a study of the far field’s influence at this resolution can only report zero.

How the excess is measured, and why in quadrature

One design choice in the sweep is load-bearing and would change the answer if made carelessly.

The undisturbed rule already scatters its divergences, by about half a degree, because it is chasing a moving equilibrium — that is the previous essays’ subject. A disturbed run scatters by about a degree. The quantity the prediction is about is the amount the disturbance added, not the total.

The two contributions are independent, so they add in quadrature and the excess is sloud2squiet2\sqrt{s_{\text{loud}}^2 - s_{\text{quiet}}^2}. Taking the totals raw instead would understate the ratio by about a quarter — and, worse, would understate it differently at each neighbourhood, because the quiet run’s own scatter changes slightly with the reach at the narrow end. A sweep of a difference between two kinds, contaminated by a baseline that also moves, is a sweep of nothing in particular.

The baseline is measured at every reach and reported alongside. It is 0.491° at reach two and 0.498° at every reach above it — which is itself the same convergence, showing up in the control.

Why the far field does nothing

The repulsion falls as the inverse cube of distance, and the site measured two phases ago that an inverse-cube rule is effectively local — that was the explanation offered for why a grown pattern never lags the static ladder.

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. 2 The reason, from an earlier thread. How much of the total repulsion at a candidate azimuth comes from the nearest shell of neighbours, the next, and the rest — and how quickly the contributions stop mattering.

The nodes past about three spacings contribute a sum that is smooth around the circumference: they are far enough away that moving the candidate azimuth barely changes their distances, so they add nearly the same amount at every sample.

And the rule takes an argmin. An argmin is blind to a constant. Adding a nearly constant background to a profile does not move its minimum, and here it does not move it even by one sample of a three-hundred-and-eighty-four-point grid — which is what “zero internodes differ” means.

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. 3 How many nodes lie within a given distance on a cylinder, which is the count reach controls. The number grows steadily; what it buys the argmin does not.

So the neighbourhood the model has is already at its floor at four spacings. The neighbourhood the loop sums over goes on growing, and nothing downstream can tell.

A parameter of the model and a parameter of the loop

This is the same distinction the cut-off thread was written to make, arrived at from the other side, and the pair of results is worth putting together.

That thread found that reach is a recency cut — it takes the most recently placed nodes, so a node one row up and a node half a turn away at the same distance are treated differently because one was placed later. Nothing in a plant works that way. It replaced it with a falloff of distance at a stated width, which makes the width a hypothesis an experiment could put a number to.

Three cut-offs at the same nominal width of 3 spacingsThe weight the interaction is multiplied by, against distance. They halve at 2.08 (exponential), 2.50 (gaussian), 3.00 (hard) spacings — so a rule described as "cut off at 3 spacings" is three different rules until the falloff is named. Every later figure is read in half-weight radii for that reason.00.2500.5000.7501012345distance from the candidate, in local spacingsweight the interaction is multiplied byhalf weightweight = f(d / 3√h)window runs to 4 widths
Fig. 4 The replacement: a weight that falls with distance at a stated width and shape, rather than a window on placement order. That thread’s point was that the recency cut is a property of the program; this one’s is that above a certain size it is not even that.

This thread finds that above four spacings the recency cut is not a property of anything. It does not shape the pattern, because it is not binding; the interaction has already fallen to where the argmin cannot see it.

Both are the same lesson about sweeping. The site’s own notes record raising maxWindow from 120 to 480 and finding nothing change, and reading that as a converged answer when the parameter had never been binding. The defence used here is the one that lesson recommends: check that the parameter being swept is doing something before concluding from the fact that it isn’t. The figure’s window sizes are stated, the cap is checked not to be clipping any of them, and the sweep is therefore of the neighbourhood rather than of the cap.

What was measured before the comparison was right

The first version of the internode comparison reported that reach six and reach twelve differ in 246 placements out of 315 — the opposite of the result above, and a number that would have been published as a finding.

The two runs do have different azimuths at almost every node. What they do not have is different lattices. One built the pattern left-handed and the other right-handed: every divergence has the same magnitude and the opposite sign.

Nothing in the rule prefers a chirality. Which one a run falls into is decided by arithmetic far below the level of anything physical — the sample index that happens to win the first contested argmin — and it is not a property of the lattice, the divergence, the counts or the scatter. A plant has a handedness too, and it is famously not predicted by anything about its phyllotaxis.

So the comparison is of divergence magnitudes, and it is worth recording that the raw comparison was tried first and gave a confident wrong answer. The error is the same shape as the one this essay is about: a quantity that varies between runs, is easy to measure, and is not the quantity in question.

The same stem, not unrolled33 of the 64 nodes face the reader and 31 are behind the stem, drawn open. The count is 2 and 3 either way; the unrolling changes nothing but the visibility.near facefar face64 nodes at 137.51°2 and 3, both faces
Fig. 5 The object whose handedness is not a property of it. The same lattice, built either way round, gives the same counts and the same angles up to a sign.

What the small difference actually is

Refuting the explanation leaves the observation, and it is worth saying what is left of it.

At reach two the ratio is 0.82, so there is a regime in which the neighbourhood size matters — it is just far narrower than anything the model was ever run at, and the effect goes the other way. A rule looking two spacings out has fewer than a dozen neighbours at the fine end, its energy profile is dominated by two or three of them, and the difference between disturbing a neighbour and disturbing the node is not what it is in the converged regime.

At every neighbourhood the model has actually been run at, the difference between a jostle and a placement displacement is 3% or less in excess scatter, which is well inside the step of the amplitude grid the previous phase reported it from. The honest statement is that the difference is at or below the resolution of the measurement that found it, and that the explanation attached to it was about a mechanism the model does not have.

Three kinds of noise, matched at 0.75° of divergence scatterThe amplitudes differ — field 0.0056 (fraction of the barrier), jostle 0.15 (degrees of azimuth), placement 0.18 (degrees of azimuth) — and are in different units, so they cannot be compared directly. What can be compared is what they produce, and matched here they are within 27% of one another. Everything a finished pattern records about its noise is shared between the three.field — before the choice0.92°amplitude 0.0056jostle — before the choice0.70°amplitude 0.15placement — after it0.79°amplitude 0.183 runs each, at the amplitude that reaches 0.75°27% apart on the ruler
Fig. 6 The result that stands. Three kinds of disturbance matched at the scatter a ruler reports, indistinguishable there — which was the previous phase’s finding and is unaffected by any of this.

What it says about every figure on this site

There is a consequence for the collection itself, and it cuts two ways.

Every grown-stem figure here uses a reach of six. On the strength of this measurement, four would produce byte-identical output and would cost a third less to compute — the inner loop runs over the window, so the saving is direct, and grown-stem ensembles are the most expensive things in the build.

That is not a change worth making, and the reason is the more interesting half. A parameter set safely above where it stops mattering is doing a job: it is the margin that makes the results insensitive to it. Trimming it to the edge of the converged region would save build time and would mean that the next change to the rule — a different exponent, a cut-off, a coarser sample grid — could quietly move the convergence point past the setting without anything failing.

The right response to “this parameter does not matter” is to record where it stops mattering, not to move to the boundary. So the reach stays at six, and the number four is now written down.

What the measurement does license is a claim the site has been making loosely. Several essays describe the rule as local, on the strength of the inverse-cube exponent and the partial-sums figure. That was an argument about how the energy converges. This is the statement in the form that matters for a model: the arrangement is unchanged by anything past four spacings, which is stronger than saying the energy has converged, because a converged energy could still move an argmin.

What is left to sweep

The prediction was cheap and it was worth testing, and its refutation closes a direction rather than opening one. If a jostle is not diluted by the number of neighbours, then the small difference between the two kinds is set by something else — the shape of the profile near its minimum, most likely, which is a property of the falloff exponent rather than of the range.

That is a different sweep, over a parameter this site has already established matters a great deal, and it is not attempted here. What this essay establishes is that the obvious sweep has been done and the obvious answer is not there.

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. 7 The parameter that does move things. Where the range does nothing above four spacings, the exponent decides whether there is a lattice at all — which is where a next attempt at the small difference would have to look.

The general form, which is the reason to record a refutation

A refuted prediction is worth an essay only if the way it failed generalises, and this one does.

The explanation offered was mechanistic and plausible and untested: a jostle is diluted among thirty neighbours, therefore fewer neighbours means less dilution. Every step of that reads as physics. What it assumed, without saying so, is that the thirty neighbours are thirty contributors — that each of them is doing a comparable share of the work of choosing the azimuth.

They are not. Four or five of them decide it and the rest supply a background the argmin cannot see. So “one contribution among thirty” was a description of the loop’s bounds rather than of the rule’s arithmetic, and the ratio it predicted was a ratio between two numbers that were never both real.

The tell, available in advance, is that the explanation named a quantity — thirty — that came from a parameter rather than from a measurement. Nothing had ever counted how many neighbours matter. The count of thirty is reach divided by the square root of the rise, which is to say it is the loop bound, and using a loop bound in a physical argument is the error the cut-off thread exists to prevent in its other form.

Where a mechanism’s explanation contains a number, ask which measurement produced it. Here the answer was none, and the sweep that would have produced one is the sweep that refutes the explanation.

That is the third prediction this collection has tested and refuted rather than confirmed, and all three failed the same way: the observation was right, the mechanism attached to it was a story about the program. A truncated loop was fragile and the fragility belonged to the boundary rather than to the short range. A statistic was called the sequence’s own memory and belonged to the rise. A difference between two noises was attributed to a neighbourhood that turns out not to exist above four spacings.

The pattern in the pattern is worth stating: the explanations that fail are the ones that reach for a quantity in the implementation. The ones that survive — a lattice fails at a degree and a half of scatter, the peak in a sequence sits at the parastichy number — are stated in quantities a plant could have.

The same rule at p = 1, cut off at two distancesThe top 220 nodes of two stems grown by an identical rule whose energy does not converge. Allowed to see 3/√h neighbours it produces 8/13 at 137.62° with 0.58° of scatter — a lattice no test on this site would question. Allowed 12/√h it produces 44° of scatter and no pattern. The truncation was doing the work.cut at 3/√h8/13 at 137.62°0.58° of scattercut at 12/√hno divergence angle43.86° of scatterexponent 1 · identical but for the neighbourhood0.58° against 43.9°
Fig. 8 What the loop bound does when it IS binding. At a long-ranged exponent the truncation manufactures a pattern outright, which is the case this essay’s parameter is safely far from.
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. 9 The same locality from the disc’s side. An inverse-cube rule’s far field is a smooth background there too, and an argmin is blind to a smooth background.

Shares its objects with

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

  • The sequence has a memory — both name cylinder, discretisation, divergence angle, ensemble, equilibrium, lattice offset, measurement, noise, the placement rule, self correction
  • The order carries the count — both name cylinder, discretisation, divergence angle, ensemble, equilibrium, lattice offset, measurement, noise, the placement rule
  • A counter that sees no positions — both name cylinder, discretisation, divergence angle, ensemble, equilibrium, lattice offset, measurement, noise
  • A shoot too fast to remember — both name cylinder, divergence angle, ensemble, equilibrium, measurement, noise, the placement rule, self correction
  • The memory was the rise — both name cylinder, divergence angle, ensemble, equilibrium, measurement, noise, the placement rule, self correction
  • What the protractor has to be — both name cylinder, discretisation, divergence angle, ensemble, equilibrium, measurement, noise, the placement rule

Named objects

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

Cut offCylinderDiscretisationDivergence angleEnsembleEquilibriumHandednessThe range of the interactionLattice offsetThe local exponentMeasurementNoiseThe placement ruleSelf correction