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.

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 **e ^{C} = 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**.

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.

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 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 **e ^{kt+C} = e^{kt}e^{C}**, and renamed the constant

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 **Ae ^{kt}**:

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 - t _{o})** 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 **t _{o} = 0** is highlighted in green.

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**. **t _{o}** is the initial time, and the term

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.

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.

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.

**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.