In the last tutorial,
we wrote some Python programs to generate the Fibonacci sequence
(0,1,1,2,3,5,8,13,21,34 etc.). It may have seemed that this was a rather
dry exercise in coding with no relevance to reality. But in fact, the
Fibonacci sequence and the Golden Ratio turn up unexpectedly in many
places across the natural world. For example, sunflowers, which have opposing spirals of seeds, use
the Fibonacci sequence to efficiently distribute their seeds in the
most compact space (see here).
Recall that the ratio of neighbouring elements in the Fibonacci sequence approaches the famous Golden Ratio: i.e., 34/21 = 1.6190..., 55/34 = 1.6176..., 89/55 = 1.6182..., etc. If we split a circle up into two parts in the ratio 1:1.618..., then angle subtended by the smaller part is called the Golden Angle. The smaller part (in red) of the circle is the fraction The Golden Angle is f x 360 degrees. ## ChromospiralsA beautiful image like the pattern above may be generated with a
simple algorithm, which draws a filled circles using a loop.
Let's call the loop variable j. Then, on the jth step: - Draw a circle of diameter
`phi` , at a distance`sqrt(j)` from the centre of the disk, and at an angle`j` x`a` degrees.
Here " `a` " is an angle, which we may choose. Rather wonderfully, if we choose a = f x 360 degrees, i.e. the Golden Angle, then
the arrangement of circles turns out be very closely-packed: the
circles are close together but do not overlap. This turns out to be an
excellent arrangement for (e.g.) seeds in a sunflower head. ## A programAttached to this page is the Python program `chromoSpirals.py` which was used to generate plots such as the image above. The program was written by Peter Derlien, a researcher in the School of Mathematics and Statistics at University of Sheffield. He calls these patterns "Chromospirals". ## Install MatplotlibTo use the program, you will need to have installed the `numpy` and `matplotlib` package. On a Raspberry Pi, the `numpy` package is installed by default on Raspbian. To install `matplotlib` , you need your RPi to have a network connection. Open a terminal (e.g. LXTerminal), and at the prompt, type:`sudo apt-get install python-matplotlib` On Windows / Mac OS X, installing matplotlib is a bit more complicated. Please see this page for details. ## Getting and running the programYou can download the program by clicking on it in the web browser (e.g. Midori on the Raspberry Pi). Save it. Open IDLE. From the menu, choose File -> Open and select chromoSpirals.py. The code should appear in a new window. To run the code press F5, or, from the menu, choose Run -> Run Program. The program asks for three values: the number of disks, the number of colours, and the offset to the Golden Angle. To generate the plot above, I entered 2000, 13 and 0. Try experimenting with different values. There are many lines of code in this program which may be unfamiliar to you. However, you may be able to deduce what some of them do. For example, can you find the lines which read the user's input? (Look out for the Try a range of choices for the number of disks, colours and offset. Have fun! Please send your most beautiful pictures to pi3challenge@sheffield.ac.uk |

Tutorials >