Logistic growth


You have likely studied exponential growth and even modeled populations using exponential functions. In this section we'll look at the differential equations that lead to exponential growth models, then refine those models to include some pressure for populations not to grow past a certain limit.

You could think of that limit like the carrying capacity of land: A certain region simply won't support unlimited growth because as one population grows, its resources diminish.

Just as a preview, here's a comparison of exponential and logistic growth curves with some features highlighted (right).

Exponential growth is unchecked growth. Exponential functions aren’t realistic models of population growth and other phenomena.

The logistic function is exponential for early times, but the growth slows as it reaches some limit. In this hypothetical case, the limit seems to be about 85 individuals.


Exponential growth


The underlying idea behind exponential growth is that the growth of a population is directly proportional to the number of individuals in it. We model a statement like that as

The derivative is the change in population (n) with time, and k is a constant that would be a characteristic of the specific population – a proportionality constant. We can separate the variables and integrate,

to find the general solution:

These can always be expressed as exponential functions by solving for n(t),

and using the laws of exponents to turn the additive constant of integration (C) into a multiplicative one.

We'll call the new multiplicative constant eC = A.

That's the general solution, one of a whole family of such solutions, as is always the case for general solutions to differential equations. If we know the population at one point in time, we can solve for A (we're presuming we'd already know k) to get a specific solution. Let's say that at time t = 0, the population is 0.5 (maybe that stands for 500 or 5000 ... )

Solving for A is easy

and we get the specific solution

Remember that conditions like the point (0, 0.5) are also called boundary conditions.


"Slope fields"


One way to display the concept of moving from a general solution to a differential equation to a specific solution is the so-called slope field. A slop field is calculated by plugging (n, t) grid points into the differential equation and plotting the direction of the derivative. The equation doesn't have to be solved to calculate a slope field. On the slope field below, I've drawn the specific solution that would result from our boundary condition (0, 0.5) and the solution that would result from the boundary condition (1, 1.5). Each is just the slope field curve that goes through that point.

Using Mathematica to create a slope field

I used these simple lines to generate the slope fields on this page in Mathematica. I added the specific solutions (magenta) and other notations later using Adobe Illustrator.

You could also use the VectorPlot function in just the same way for a slightly different look.


The logistic differential equation


The logistic differential equation recognizes that there is some pressure on a population as it grows past some point, that the presence of other members, competition for resources, &c., can slow down growth. It looks like this:

Here we've taken the maximum population to be one, which we can change later. The rate of growth (dn/dt) is proportional to both the population (n) and the closeness of the population to its maximum (1-n). The k is the usual proportionality constant. Now let's separate variables and integrate this equation:

The first thing we'll need to do is tackle the integrand on the left. We'll do it by rational decomposition, writing the integrand as

Our goal is to find the A and B that work for this rational function. Multiplying both sides by n(n - 1) gives

Because this expression has to work for all n, we can set n = 1 to get B = 1, and n = 0 to get A = 1. You should confirm for yourself that those work and that we've successfully converted the integrand into a sum of two fractions. That gives us a new integrated equation:

Which is easy to integrate:

Now we can rearrange using the properties of logs:

If we raise each side as a power of e, we get

where I have let ekt+C = ekteC, and renamed the constant eC = A. Now we'll do some algebra to solve for n. First multiply both sides by 1 - n:

Gather the terms containing n:

and factor out the n:

Now isolate n(t):

Now there's one more step that's usually taken; let's divide all terms of the fraction by Aekt:

I've written the constant 1/A as a new constant, B, above, but let's strip out both B and k for now (by which I mean set them equal to 1) and just look at the basic shape of the logistic function,

Here's the graph:

Notice that the function grows exponentially up to an inflection point, then the growth diminishes and has a limit at n = 1. Now we'd like to build in some transformations so that we can move this function around and make it fit some real situations. Here's new version:

Now L is the upper limit of the function (the horizontal asymptote), k is back in there to modify the steepness of the exponential growth, and the (t - to) term is a horizontal transformation so that the domain of the function can be positive – it's time, after all.

Finally, here's a slope field of the possible solutions to the logistic differential equations. Our simple solution with L = k = 1 and to = 0 is highlighted in green.

The logistic equations

You should learn the basic forms of the logistic differential equation and the logistic function, which is the general solution to the differential equation.

n(t) is the population ("number") as a function of time, t. to is the initial time, and the term (t - to) is just a flexible horizontal translation of the logistic function. k is a parameter that affects the rate of exponential growth. L is the horizontal asymptote or the limit on the size of a population.


An example: Spreading a rumor


One clever example of logistic growth is the spreading of a rumor in a population. Suppose that one person knows a secret, and once a day, anyone who knows the secret can share it with one other person, but without knowing whether that person already knows it. Well, early on, it's unlikely that a teller will run across someone who already knows the secret, but later, when more people know, it's less likely to find a person who doesn't know.

In this example, I assumed we have a group of 20 people, and that person #1 knows the secret to begin with. Then, on each "round," I generated a random number (using a spreadsheet) between 1 and 20, to choose whom to tell the secret next. the results are in the table below.

In round one, 1 told 4. In round two, 1 and 4 told 20 and 6, for a total of four secret-knowers. In round three, those four told four new people to increase the total to 8.

But notice that in round four, we begin to tell people who already know the secret, so the accumulation of secret knowers begins to slow down.

That continues until poor #14 finally learns the secret after eight rounds. The results are plotted here and you can see that it's just like our logistic growth curves.




Transformations of the logistic equation


Here is a simple logistic function for a population as a function of time:

By moving the sliders, you can see how the curve changes when you change the A parameter and the B parameter.

A changes the maximum population, the limit of the function as time gets large, and B changes the curvature of the function; small values ease the curves and large values sharpen them.

By including a simple vertical translation (which would be the baseline population), this logistic curve can be fit to real data by adjusting the parameters.

This simple function is good up to a maximum limiting population of 100, just for illustration purposes.

You can help


This site is a one-person operation. If you can manage it, I'd appreciate anything you could give to help defray the cost of keeping up the domain name, server, search service and my time.


Creative Commons License   optimized for firefox
xaktly.com by Dr. Jeff Cruzan is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. © 2012, Jeff Cruzan. All text and images on this website not specifically attributed to another source were created by me and I reserve all rights as to their use. Any opinions expressed on this website are entirely mine, and do not necessarily reflect the views of any of my employers. Please feel free to send any questions or comments to jeff.cruzan@verizon.net.