# Fifty Shades of J/Chapter 43

Seeds, Cones and Sunflowers

### Principal Topics

Fibonacci sequence, golden ratio, golden angle, spirals

It is well known that the Fibonacci sequence 0,1,1,2,3,5,8,13,21,34, ... in which each number is the sum of its two predecessors exhibits itself in nature in e.g. the arrangements of seeds in the head of a sunflower and the pattern of scales on a cone. In architecture and design it is widely claimed that the most ‘pleasing’ form of rectangle is one in which the ratio of its side approximates to 0.61818... which is the limiting value of the ratio of consecutive values of terms in the series, viz. 2/3, 3/5, 5/8, and so on. If a and b are the lengths of the shortest and longest sides respectively, this limiting value, known as the golden ratio, is that value of a/b, which is also equal to the ratio b/(a+b). An equivalent problem is that of dividing the circumference of a circle into two arcs a and b with a/b=a/(a+b). This is attained when the radius to the dividing point is at an angle, analogously called the golden angle, which is very close to 137.5o degrees (more accurately 137.5078o ­­­­­­­­­ but for practical purposes 137.5o is adequate.) This can readily be checked by observing that 137.5/222.5 = 222.5/360 = 0.618 to 3 significant figure precision.

Why is the golden angle so important in natural growth? Start by looking from above directly down the axis of a growing shoot such as a cone, and projecting the growth points onto a two dimensional plane spiralling outwards, with each new scale emerging at a regular angular displacement. Primordia is a generic noun used to cover the growth embryos characteristic of many plants such as leaves, sepals, florets, etc. It often happens that the angular displacement of successive primordia is the golden angle of 137.5o. Its effect is observable in the series of spirals going in opposite directions which are striking in both the seeds of sunflowers and the scales of cones such as the spruce cone below in which the junction of a steep and a gentler spiral is highlighted. Use J to display and experiment with spirals :

```   evry=.4 : '(0=y|(i.@#)x)#x'
```   spiral=.dyad :0
ang=.dtor 360| y*i=.i.5*x^2        NB. primordial angles in rads
t1=.i*"(1)1 2 o.every<ang          NB. converted to x-y coords
'marker; labels 0' plot <"1 t1 evry"(1)x NB. plot every xth.
)

8 spiral 137.5```

What causes these spirals to be so readily observable? Consider that every third primordium is a member of a spiral sequence, so that, subtracting out multiples of 360o, the third, sixth, ninth, twelfth and fifteenth primordia develop at angles of

```   360|137.5*(i.20)evry 3
0 52.5 105 157.5 210 262.5```

degrees forming what will be called a 3-spiral. The difference of 52.5 between successive terms makes the spiral easy to spot by eye. Analogously a 5-spiral begins with the fifth, tenth and fifteenth primordium. These values are

```   360|137.5*(i.20)evry 5
0 327.5 295 262.5```

and the differences of 32.5 are again easy for the eye to spot. Since the fifth angle in the 3-spiral and the third angle in the 5-spiral both correspond to the 15th primordium these values necessarily coincide.

Now extend the 5-spiral to eight terms and the 8-spiral to five terms

```   360|137.5*(i.45)evry 5
0 327.5 295 262.5 230 197.5 165 132.5 100
360|137.5*(i.48)evry 8
0 20 40 60 80 100```

Arguing as above, these necessarily coincide in their final items which correspond to the 40th primordium. The difference of 20 between successive terms of the 8-spiral make it easy to pick out like the 3- and 5-spirals.

Now use J to generate a plots of these spirals, extending spiral to show a pair of spirals.

```   spi2=.dyad :0
ang=.dtor 360| y*i=.i.2*>:*/x
x1=.(2 o.ang)*i  [ y1=.(1 o.ang)*i
x3=.x1 evry{:x  [ x2=.x1 evry{.x
y3=.y1 evry{:x  [ y2=.y1 evry{.x
'marker; labels 0'plot (x2,:x3);(y2,:y3)
)```

The plot below shows a 5-spiral radiating out anticlockwise from the centre and an 8-spiral radiating clockwise with the two meeting at the 40th primordium at the circled point at the top centre of the plot.

`   5 8 spi2 137.5`

The area bounded by the two paths to the circled point is a two-dimensional representation of spiral patterns which stand out on the pine cone below :

Next consider the first eight terms of the 13-spiral which are

```   360|137.5*(i.105)evry 13
0 347.5 335 322.5 310 297.5 285 272.5 260```

Following the reasoning above, 260 must be the value of the thirteenth term of the 8-spiral. The small value, -12.5, of the differences in the 13-spiral, make it readily observable. Also while the differences for the 3- and 5-spirals are positive, those for the 8- and 13-spirals are negative. This means that when successive spirals in the 3, 5, 8, 13 sequence meet at their common point, the 104th primordium, this will be the junction of two spirals going in opposite directions.

Fibonacci numbers are instantly recognisable in the above discussion. These Fibonacci based spirals are the only ones where the differences are sufficiently small for the spirals to be eye-catching. For example the differences for the 4-, 6-, 7- and 9-spirals are -170, 105, -117.5, and 157.5. In the context of the cone this would mean that after at most two scales, the observer would have to turn the cone over repeatedly to trace the spiral. Also with higher order Fibonacci numbers the differences shrink towards zero, for example for the 233-spiral the difference is less than one degree. This corresponds to the manner in which the Fibonacci sequence itself converges to the golden ratio. Of course not many plants manage to generate 233 primordia on a single axis! The golden angle has a a further property, namely that it is that angle which brings about the most efficient use of the circular plane of the flower-head, in other words which packs the seeds together as closely as possible.

The verb floret and plot below illustrate how the seeds position themselves given a primordial angle of 137.5o :

```   floret=.dyad :0
ang=.dtor 360 | y*i=.i.10*>./x
x1=.(2 o.ang)*i [ y1=.(1 o.ang)*i
'marker; labels 0'plot x1;y1
)

5 floret 137.5
```

If the primordial angle were to change to 138.5o spaces between the spirals begin to be apparent :

`   5 floret 138.5`

If nature had chosen 135o all the seeds would eventually be laid on the radial zero axis, leaving most of the flower-head as empty space!

The above discussion demonstrates why simpler spiral sequences are readily observable in scales, petals, flower-heads and so on, but does not address the more fundamental question of why primordia pop out at the golden angle with such regularity. Amazingly, although everything that has gone before has been known and observed for centuries, it is only within the last thirty years or so that mathematicians have developed explanatory models which show that these patterns are inevitable if it assumed that developing primordia compete for space behave like identical atoms emitting mutually repelling electrical charges. Each sunflower seed for example behaves in its own self-interest, and the result is an equilibrium state which requires complex mathematics to work out from first principles. It seems a logical conclusion that every sunflower seed emerges as if had solved all these equations in the moment it bursts out from the bud. Or was the formula solved once and for all back in distant aeons and transmitted through the plant’s DNA, so that each seed knows at birth exactly the spot to go to on the flower-head?

Nature constantly stretches man’s powers of wonderment. The patterns of 3. 5, 8, 13 etc. are elementary manifestations of much deeper matters which are only beginning to be understood. How nature must scorn mankind’s as yet primitively simple mind; this is not just intelligent design, but super-, even super-super-intelligent design. Every glance at a sunflower, cone or floret should thus bring out profound sense of humility in the observer!

### Code Summary

```evry=: 4 : '(0=y|(i.@#)x)#x'
dtor=: 180%~o.                             NB. degrees to radians

ang=. dtor 360| y*i=. i.5*x^2              NB. primordial angles in rads
t1=. i*"(1)1 2 o.every<ang                 NB. converted to x-y coords
'marker; labels 0;' plot <"1 t1 evry"(1)x  NB. plot every xth.
)

ang=. dtor 360| y*i=. i.2*>:*/x
x1=. (2 o.ang)*i [ y1=. (1 o.ang)*i
x3=. x1 evry{:x [ x2=. x1 evry{.x
y3=. y1 evry{:x [ y2=. y1 evry{.x
'marker; labels 0;'plot (x2,:x3);(y2,:y3)
)