Diagrams Drawn By Use Of Mathematical Software
Various diagrams, above, were drawn by use of mathematical software (Maple). To what extent should the students be engaged in drawing diagrams of this kind? There is a spectrum of possibilities (for an elementary project or a more advanced project). At one end of the spectrum, all diagrams are given to the student. At the other end of the spectrum, the students produce most produce most of the diagrams (with hints and help from the teacher). In my view, the closer the students are to the active end of the spectrum, the bettrer. The reason for this is that producing and studying the diagrams is an important part of a scientific investigation of the spiral structures in plants. Allow me to explain this by referring to my own experience. In Stewart's book (see the references near the beginning of this presentation), pages 124-127 explain that (for sunflower, for example)
(*) the observed spirals are a purely geometric consequence of the biologically more fundamental generative spiral.
The diagrams Stewart provides are helpful but certainly not adequate.
Hence in order to investigate (*), I drew a couple diagrams for myself
by hand, using a ruler, compasses and protractor. This was tedious. Obviously,
one should use mathematical software for this. Maple is an obvious choice,
since it is widely used by college students (at least, that is my impression).
After looking through the manual for awhile, the
beginner will find out how to produce a continuous generative spiral. (See
the procedure genSpir below). For the beginner, the problem of producing
a discrete generative spiral is more challenging.; fortunately,
the example provided in Knott's website indicates what should be done (11/4/99:
beware the missing brackets). See the procedure pointSpir, below.
Several diagrams can be superimposed by including their procedures in a
single display command.
With this much alone, one is in a position to explore
a wide variety of features of the mathematical model and to see to what
extent the mathematical model provides a good description of the biological
phenomena. The procedure FibSpirals (see below) is also useful.
Thus I found the use of mathematical software to
be of substantial help in the scientific investigation I was carrying out.
It would be good if the student could have this sort of experience. It
is not neccesary that all the students be active in producing the diagrams;
there could be a division of labor. If circumstances prevent the students
from taking an active role, it would be good if the students could see
the teacher producing the diagrams.
Since Maple is quite simialr to Wolfram's Mathematica
software, it should be easy enough to convert the Maple procedures (or
programs or processes - whatever they would be called in Mathematica).
A certain amount can be done by use of "turtle geometry" software.
Since I do not know what software is available in
the high schools, or to what extent the students would be able to draw
the diagrams, I would appreciate information about this (wahow@uic.edu).
Some Maple Procedures
This is for Maple V, Release 5. The argument seedcount
occurs in most of these programs. This is just the number of biological
elements we want the generative spiral to contain. (We are thinking of
the case of a sunflower, where the biological elements ultimately evolve
into seeds.) Thus the generative spiral will turn through a total a total
angle of seedcount*gold radians, where gold is just the radian measure
of the golden angle phi which plays a basic role in this project.
We make systematic use of the option scaling = constrained.
Hence Maple chooses the scale factor so as to make the diagram fit into
a 4 inch square. Thus in the procedure pointSpir(seedcount) which implements
the discrete spiral (1) - (2), above, where n = seedcount, Maple automatically
chooses the constant c so that c = 2/(gold*seedcount).
To run the following procedures, it is necessary
first to execute the commands
with(plots):
gold:=2*Pi*(2 - (sqrt(5)+1)/2):
1. The simplest procedure genSpir applies to the argument seedcount and produces the corresponding continuous generative spiral.
genSpir:=proc(seedcount)
polarplot([(seedcount*gold - t, t),
t=0...evalf(seedcount*gold0], axes=none,
scaling=constrained)
end:
To get the generative spiral corresponding to 100 seedpoints, just execute genSpir(100).
2. The procedure pointSpir applies to the argument seedcount and produces the corresponding discrete generative spiral.
pointSpir:=proc(n) local i,r,theta,s;
s:=NULL;
for i from 0 to n do
theta:=gold*i; r:=gold*(n-i);
s:=s,[evalf(r), evalf(theta)];
od;
polarplot([s], style=point, axes=none, scaling=constrained,
symbol=circle)
end:
3. Higher order Fibonacci spirals
For concreteness, consider the spiral of order 8 going through seedpoint
# 1 (corresponding to i = 0 in the program for pointSpir). It will also
go through point # 9, by traveling along the generative spiral through
an angle of 8*gold degrees. But 8*gold = 2*p*3
+
B, where B is approximately = (32.5)*p/180.
Thus, in traveling along the spiral from point # 1 to point # 9, the angle
q
of the polar coordinates increases from 0 to B, and the radius decreases
from gold*seedcount to gold*(seedcount -8). The next point on the spiral
is point 9+8 = 17; and, by the same reasoning, this point lies at an angle
B counterclockwise from point # 9. Thus we find:
| Point no | q | r |
| 1 | 0 | gold*seedcount |
| 9 | B | gold*(seedcount-8) |
| 17 | 2*B | gold*(seedcount-16) |
| ... | ... | ... |
| 1+h*8 | h*B | gold*(seedcount-h*8) |
| ... | ... | ... |
More generally, for the Fibonacci spiral of order k through point # 1: if point k+1 makes an angle ang with point # 1, where
(3.1) -p < ang < p
then point 1 + h*k has polar coordinates
(3.2) r = gold*(seedcount - h*k)
(3.3) q = h*ang
Here h ranges over all integers such that
(3.4) 0 < h < seedcount/k
Parametric equations for this Fibonacci spiral are obtained from (3.2) - (3.4) simply by replacing the integer variable h by a continuous variable t.
There are k Fibonacci spirals of order k. For n = 0,1,...,k-1, the parametric equations for the m-th spiral of order k are obtained by replacing seedcount by seedcount -min the above discussion. We get:
(3.5) r = (seedcount-m-t*k)*gold
(3.6) q = m*gold + t*ang
(3.7) 0 < t < (seedcount - m)/k
To find ang, let j = floor((k*gold)/(2*p)). Then the angle of pint 1+k is alpha = k*gold - j*2*p. But alpha is between 0 and 2p. The equivalent angle ang between -p and p is obtained from the conditions
alpha, if 0 < alpha < p
(3.8) ang =
alpha - 2*p,
if p <
alpha < 2p
Since, I do not, at present (11/9/99) know enough about Maple to incorporate the Boolean conditions (3.8) into a program, I shall resort to the following trick. Let d = floor((k*gold)/p - j*2). Then
(3.9) ang = (1-d)*(k*gold - j*2*p) + d*(k*gold - (j+1)*2*p).
We can now implement (3.5 - (3.7), getting a procedure that plots the m-th Fibonacci spiral of order k.
FibSpirOne:=proc(seedcount,k,m)
local j, d, ang;
j:=floor(k*gold/2*Pi)):
d:=(k*gold/Pi-j*2):
ang:=(1-d)*(k*gold-j*2*Pi)+d*(k*gold-(j+1)*2*Pi):
polarplot([((seedcount-m-t*k)*gold, m*gold+t*ang),
t=0..evalf((seedcount-m)/k],scaling=constrained,
axes=none);
end:
It must be possible to use FibSpirOne to obtain a procedure FibSpirals that plots all k spirals of order k simultaneously, but I don't know how to do it. So I kacked it out by use of two auxiliary procedures. Don't forget to execute them beofre using FibSpirals.
FibSpirAux:=proc(seedcount,k,m)
local j, d, ang;
j:=floor(k*gold/(2*Pi)):
d:=floor(k*gold/Pi - j*2):
ang:=(1-d)*(k*gold-j*2*Pi)+d*(k*gold-(j+1)*2*Pi):
[(seedcount-m-t*k)*gold, m*gold+t*ang,
t=0..evalf((seedcount-m)/k)];
end:
FibSpirsAux:=proc(seedcount,k)
seq(FibSpiralsAux(seedcount,k,m),m=0..k-1):
FibSpirals:=proc(seedcount,k)
polarplot([FibSpiralsAux)seedcount,k)],
scaling=constrained, axes=none):
end:
Advice During any session with Maple, before executing any procedure or command, you need to execute all definitions and programs upon which it depends. This can be done in any worksheet in the file. Hence it is a good policy to create a special worksheet for this purpose; the entire worksheet can be executed from the EDIT menu.