Lately I’ve become interested in chaos theory. My friend Lark Davis pointed me in the direction of Leonard Smith’s book, Chaos, A Very Short Introduction. It is a short, somewhat technical book, and it dives into the details fast.
An ecologist imagining real fish in a real pond had to find a function that matched the crude realities of life – for example, the reality of hunger, or competition. When the fish proliferate, they start to run out of food. A small fish population will grow rapidly. An overly large population will dwindle (they will starve).
…In the Malthusian scenario of unrestrained growth, the linear growth function rises forever upward. For a more realistic scenario, an ecologist needs an equation with some extra term that restrains growth when the population becomes large. The most natural function to choose would rise steeply when the population is small, reduce growth to near zero at intermediate values,and crash downward when the population is very large. By repeating the process, an ecologist can watch a population settle into its long-term behavior – presumably reaching some steady state. A successful foray into mathematics for an ecologist would let them say something like this: Here’s an equation; here’s a variable representing the reproductive rate; here’s a variable representing the natural death rate; here’s a variable representing the additional death rate from starvation or predation; and look – the population will rise at this speed until it reaches that level of equilibrium.
How do you find such a function? Many different equations might work, and possibly the simplest modification of the linear, Malthusian version is this:
x[next] = rx(1-x)
x[next] is the population next year.
Again, the parameter r represents a rate of growth that can be set higher or lower. The new term, 1-x, keeps the growth within bounds, since as x rises, 1-x falls. Anyone with a calculator could pick some starting value, pick some growth rate, and carry out the arithmetic to derive next year’s population.
For convenience, in this highly abstract model, “population” is expressed as a fraction between zero and one, zero representing extinction, one representing the greatest possible population of the pond.
So begin: Choose an arbitrary value for r, say, 2.7, and a starting population of .02. One minus .02 is .98. Multiply by 0.02 and you get .0196. Multiply that by 2.7 and you get .0529. The very small starting population has more than doubled. Repeat the process, using the new population as the seed, and you get .1353. The population rises to .3159, then .5835, then .6562 – the rate of increase is slowing. Then, as starvation overtakes reproduction, .6092. Then .6428, then .6199, then .6362, then .6249. The numbers seem to be bouncing back and forth, but closing in on a fixed number: .6328, .6273, .6312, .6285, .6304, .6291, .6300, .6294, .6299, .6295, .6297, .6296, .6296, .6296, .6296, .6296, .6296. Success!
[skipping to page 69]
Robert May was a biologist. His interests at first tended toward the abstract problems of stability and complexity, mathematical explanations of what enables competitors to coexist. But he soon began to focus on the simplest ecological questions of how single populations behave over time.
…Once, in fact, on a corridor blackboard he wrote the equation out as a problem for the graduate students. It was starting to annoy him. “What the Christ happens when lambda gets bigger than the point of accumulation?” What happened, that is, when a population’s rate of growth, its tendency toward boom and bust, passed a critical point. By trying different values of this nonlinear parameter, May found that he could dramatically change the system’s character. Raising the parameter meant raising the degree of nonlinearity, and that changed not just the quantity of the outcome, but also it quality. It affected not just the final population at equilibrium, but also whether the population would reach equilibrium at all.
When the parameter was low, May’s simple model settled at a steady rate. When the parameter was higher, the steady state would break apart, and the population would oscillate between two alternating values. When the parameter was very high, the system – the very same system – seemed to behave unpredictably. Why? What exactly happened at the boundaries between the different kinds of behavior? May couldn’t figure it out. (Nor could the graduate students.)
May carried out a program of intense numerical exploration into the behavior of this simplest of equations… It seemed incredible that its possibilities for creating order and disorder had not long since been exhausted. But they had not. He investigated hundreds of different values of the parameter, setting the feedback loop in motion and watching to see where – and whether – the string of numbers would settle down to a fixed point. He focused more and more closely on the critical boundary between steadiness and oscillation. It was as if he had his own fish pond, where he could wield fine mastery over the “boom-and-bustiness” of the fish. Still using the logistic equation x[next] = rx(1-x), May increased the parameter as slowly as he could. If the parameter was 2.7, then the population would be .6292. As the parameter rose, the final population rose slightly too, making a line that rose slightly as it moved left to right on the graph.
Suddenly, though, as the parameter passed 3, the line broke in two. May’s imaginary fish population refused to settle down to a single value, but oscillated between 2 points in alternating years. Starting at a low number, the population would rise and then fluctuate until it was steadily flipping back and forth. Turning up the knob a bit more – raising the parameter a bit more – would split the oscillation again, producing a string of numbers that settled down to four different values, each returning every fourth year. Now the population rose and fell on a regular four-year schedule. The cycle had doubled again – first from yearly to every two years, and now to four. Once again, the resulting cyclical behavior was stable; different starting values for the population would converge on the same four year cycle.
With parameters of 3.5, say, and a starting value of .4, then May would see a string of numbers like this:
.4000, .8400, .4704, .8719,
.3908, .8332, .4862, .8743,
.3846, .8284, .4976, .8750,
.3829, .8270, .4976, .8750,
.3829, .8270, .5008, .8750,
.3828, .8269, .5009, .8750,
.3828, .8269, .5009, .8750,
.3828, .8269, .5009, .8750.
As the parameter rose further, the number of points doubled again, then again, then again. It was dumbfounding – such a complex behavior, and yet so tantalizingly regular. “The snake in the mathematical grass,” as May put it. The doublings themselves were bifurcations, and each bifurcation meant that the pattern of repetition was breaking down a step further. A population that had been stable would alternate between different levels every other year. A population that had been alternating on a two year cycle would now vary on the third and fourth years, thus switching to period 4.
These bifurcations would come faster and faster – 4, 8, 16, 32… – and suddenly break off. Beyond a certain point, the “point of accumulation,” periodicity gives way to chaos, fluctuations that never settle down at all. Whole regions of the graph are completely blacked in. If you were following an animal population governed by this simplest of nonlinear equations, you would think the changes from year to year were absolutely random, as though blown about by environmental noise. Yet in the middle of this complexity, stable cycles suddenly return. Even though the parameter is still rising, meaning that the nonlinearity is driving the system harder and harder, a window will suddenly appear with a regular period: an odd period, like 3 or 7. The pattern of changing population repeats itself on a three year or seven year cycle. Then period doubling bifurcations begin again, at a faster rate, rapidly passing through cycles of 3, 6, 12… or 7, 14, 28…, and then breaking off once again to renewed chaos.