The Azimuth Project
Blog - week 309 (changes)

Showing changes from revision #10 to #11: Added | Removed | Changed

This page is a blog article in progress, written by John Baez. For the final polished version, go to the Azimuth Blog.

This Week’s Finds (Week 309)

In the next issues of This Week’s Finds, I’ll return to interviewing people who are trying to help humanity face some of the risks we face.

First I’ll talk to the science fiction author and astrophysicist Gregory Benford. I’ll ask him about his ideas on "geoengineering" — proposed ways of deliberately manipulating the Earth’s climate to counteract the effects of global warming.

After that, I’ll spend a few weeks asking Eliezer Yudkowsky about his ideas on rationality and "friendly artificial intelligence". Yudkowsky believe that the possibility of dramatic increases in intelligence, perhaps leading to a technological singularity, should command more of our attention than it does.

Needless to say, all these ideas are controversial. They’re exciting to some people — and infuriating, terrifying or laughable to others. But I want to study lots of scenarios and lots of options in a calm, level-headed way without rushing to judgement. I hope you enjoy it.

This week, I want to say a bit more about the Hopf bifurcation! Last week I talked about applications of this mathematical concept to climate cycles like the El Niño - Southern Oscillation. But over on the Azimuth Project, Graham Jones has explained an application of the same math to population biology:

Quantitative ecology, Azimuth Project.

So, I’d like to take advantage of his hard work and show you how a Hopf bifurcation shows up in a simple model of predator-prey interactions.

Suppose we have some rabbits that reproduce endlessly, with their numbers growing at a rate proportional to their population. Let x(t)x(t) be the number of animals at time tt. Then we have:

dxdt=rx \frac{d x}{d t} = r x

where rr is the growth rate. This gives exponential growth: it has solutions like

x(t)=x 0e rt x(t) = x_0 e^{r t}

To get a slightly more realistic model, we can add ‘limits to growth’. Instead of a constant growth rate, let’s try a growth rate that decreases as the population increases. Let’s say it decreases in a linear way, and drops to zero when the population hits some value KK. Then we have

dxdt=r(1x/K)x \frac{d x}{d t} = r (1-x/K) x

This is called the "logistic equation". KK is known as the <a href = “”> carrying capacity“</b>. The idea is that the environment has enough resources to support this population. If the population is less, it’ll grow; if it’s more, it’ll shrink.

If you know some calculus you can solve the logistic equation by hand by separating the variables and integrating both sides; it’s a textbook exercise. The solutions are called "logistic functions", and they look sort of like this:

The above graph shows the simplest solution:

x=e te t+1x = \frac{e^t}{e^t + 1}

of the simplest logistic equation:

dxdt=(1x)x \frac{ d x}{d t} = (1 - x)x

Here the carrying capacity is 1. Populations less than 1 sound a bit silly, so think of it as 1 million rabbits. You can see how the solution starts out growing almost exponentially and then levels off. There’s a very different-looking solution where the population starts off above the carrying capacity and decreases. There’s also a silly solution involving negative populations. But whenever the population starts out positive, it approaches the carrying capacity.

The solution where the population just stays at the carrying capacity:

x=1 x = 1

is called a “stable equilibrium”, because it’s constant in time and nearby solutions approach it.

But now let’s introduce another species: some wolves, which eat the rabbits! So, let xx be the number of wolves, and yy the number of rabbits. Before the rabbits meet the wolves, let’s assume they obey the logistic equation:

dxdt=x(1x/K) \frac{ d x}{d t} = x(1-x/K)

And before the wolves meet the rabbits, let’s assume they obey this equation:

dydt=y \frac{ d y}{d t} = -y

so that their numbers would decay exponentially to zero if there were nothing to eat.

So far, not very interesting. But now let’s include a term that describes how predators eat prey. Let’s say that on top of the above effect, the predators grow in numbers, and the prey decrease, at a rate proportional to:

xy/(1+x).x y/(1+x).

For small numbers of prey and predators, this means that predation increases nearly linearly with both xx and yy. But if you have one wolf surrounded by a million rabbits, the rate at which it eats rabbits won’t double if you double the number of rabbits! So, this formula includes a limit on predation as the number of prey increases.

Okay, so let’s try these equations:

dxdt=x(1x/K)4xy/(x+1) \frac{ d x}{d t} = x(1-x/K) - 4x y/(x+1)


dydt=y+2xy/(x+1) \frac{ d y}{d t} = -y + 2x y/(x+1)

The constants 4 and 2 here have been chosen for simplicity rather than realism.

Before we plunge ahead and get a computer to solve these equations, let’s see what we can do by hand. Setting dx/dt=0d x/d t = 0 gives the interesting parabola

y=14(1x/K)(x+1)y = \frac{1}{4}(1-x/K)(x+1)

together with the boring line x=0x = 0. (If you start with no prey, that’s how it will stay: it takes bunny to make bunny.)

Setting dy/dt=0d y/d t = 0 gives the interesting line


together with the boring line y=0y = 0.

The interesting parabola and the interesting line separate the xyx y plane into four parts, so these curves are called separatrices. They meet at the point

y=11/K2 y = \frac{1 - 1/K}{2}

which of course is an equilibrium, since dx/dt=dy/dt=0d x / d t = d y / d t = 0 there. But when K<1K \lt 1 this equilibrium occurs at a negative value of yy, and negative populations make no sense.

So, if K<1K \lt 1 there is no equilibrium population, and with a bit more work one can see the problem: the predators die out. For larger values of KK there is an equilibrium. But the nature of this equilibrium depends on KK: that’s the interesting part. We could figure this out analytically, but first look at two of Graham’s plots. Here’s a solution when K=2.5K = 2.5:

The grey lines are the separatrices. The red curve shows a solution of the equations, with the numbers showing the passage of time. So, you can see that the solution spirals in towards the equilibrium. That’s what you expect of a stable equilibrium.

Here’s a picture when K=3.5K = 3.5:

The red and blue curves are two solutions, again numbered to show how time passes. The red curve spirals in towards the dotted grey curve. The blue one spirals out towards it. The grey curve is also a solution. It’s called a stable limit cycle because it’s periodic, and nearby solutions move closer and closer to it.

With a bit more work, we can show analytically that whenever 1<K<31 \lt K \lt 3 there is a stable equilibrium, and when K>3K \gt 3 there is a limit cycle. As we turn up KK, when KK hits 3 the stable equilibrium suddenly becomes a tiny stable limit cycle. This is a Hopf bifurcation!

Now, what if we add noise? We saw the answer last week: where we before had a stable equilibrium, we now can get irregular cycles — because the noise keeps pushing the solution away from the equilibrium!
The next picture shows a solution in K=2.5K=2.5 case, with white noise added:

The following graph shows a longer run in the noisy K=2.5K=2.5 case, with rabbits (xx) in black and wolves (yy) in gray:

There is irregular periodicity — and as you’d expect, the predators tends to lag behind the prey. A burst in the rabbit population causes a rise in the wolf population; a crash in rabbits causes a crash in wolves.

This sort of phenomenon is actually seen in nature sometimes. The most famous case involves the snowshoe hare and the lynx in Canada. It was first noted by MacLulich:

• D. A. MacLulich, Fluctuations in the Numbers of the Varying Hare (Lepus americanus), University of Toronto Studies Biological Series 43, University of Toronto Press, Toronto, 1937.

The snowshoe hare is also known as the “varying hare”, because its coat varies in color quite dramatically. In the summer it looks like this:

In the winter it looks like this:

The Canada lynx is an impressive creature:

But don’t be too scared: they only weigh 8-11 kilograms, nothing like a tiger or lion.

The Canada lynx rely for the snowshoe hare for 60% to 97% of their diet. I suppose this is one reason the hare has evolved such magnificent protective coloration. This is also why their populations are tightly coupled. They rise and crash in irregular cycles that look a bit like what we saw in our simplified model:

This cycle looks a bit more strongly periodic than Graham’s graph, so to fit this data, we might want to choose parameters that give a limit cycle rather than a stable equilibrium.

I should warn you, in case it’s not obvious, that everything about population biology is infinitely more complicated than the models I’ve showed you so far would suggest! Some obvious complications: snowshoe hair breed in the spring, and their diet varies dramatically over the course of year; the lynx also eat rodents and birds, sometimes deer, and also carrion when it’s available. Some less obvious ones: the hare will eat dead mice and even dead hare when they’re available, and the lynx can control the size of their litter depending on the abundance of food. And I’m sure all these facts are just the tip of the iceberg. So, it’s best to think of models here as crude caricatures designed to illustrate a few features of a very complex system.

I hope someday to say a bit more and go a bit deeper. Do any of you know good books or papers to read, or fascinating tidbits of information? Graham Jones recommends this book for some mathematical aspects of ecology:

• Michael R. Rose, Quantitative Ecological Theory, Johns Hopkins University Press, Maryland, 1987.

Alas, I haven’t read it yet. Also: you can get his R code for predator-prey simulations from the Azimuth Project.

category: blog