Logistic Growth
Working through the logistic growth model
- : Changing image and file paths
- : Changing picture and file paths
Introduction and Explanation
Note: most of this is covered in Chapter 1 of (Murray, 2002).
The simplest model for the growth of a population of organisms is that given by linear growth. This model assumes the rate at which organisms grow / reproduce is proportional to the number that currently exist. For example, imagine a bacterial culture where each bacterium buds into two daughter. This can be represented as a differential equation.
Where is the size of the population at a time , is the growth rate, and is the initial population size. The solution to this is given by . I’ve written about this model before.
While this model has the virtue of simplicity, it is not particularly realistic. The size of the population, assuming that the growth rate is positive, quickly reaches ludicrous levels. As such, we need a better model!
One such model, which accounts for the depletion of resources, accumulation of wastes, and other such inhibitors of growth that appear as the population grows, is the logistic model. The reasoning behind this model is that in the absence of any inhibiting factors, the population will grow as per the linear model. However, as the population grows, there is a factor that accounts for the slowing growth caused by depletion of resources, &c. As a differential equation, this looks as follows:
where is the growth rate (as in the linear model) and is the carrying capacity.
Stationary Points
From the above equation, the system has two stationary points: and . Intuitively, these make sense: if there is no initial population, we don’t expect spontaneous generation to create one. Similarly, if the population is exactly at the carrying capacity, then we expect it to remain constant. We can also see that if is slightly larger than , the derivative is negative - the population will decrease towards the carrying capacity. If is slightly smaller than , then the derivative will be positive, and the population will increase towards the carrying capacity.
Let’s take a look at the slope field for this system, settings and :
library(ggplot2)
len <- 5
diff <- function(N) N * (1 - N / 100)
ts = seq(0, 10, by=1)
Ns = seq(0, 120, by=10)
df <- expand.grid(t=ts, N=Ns)
df$m <- diff(df$N)
df$theta <- atan(df$m)
df$xstart <- df$t - 0.5 * len * cos(df$theta)
df$ystart <- df$N - 0.5 * len * sin(df$theta)
df$xend <- df$t + 0.5 * len * cos(df$theta)
df$yend <- df$N + 0.5 * len * sin(df$theta)
ggplot(df) +
geom_segment(aes(x=xstart, y=ystart, xend=xend, yend=yend)) +
xlab("t") +
ylab("N") +
ggtitle("Slope Field for Logistic Growth") +
theme(plot.title=element_text(hjust=0.5))

This makes it look like the stationary point is unstable and is stable. Now let’s justify that algebraically. To do that, we’ll linearize the equation by taking a Taylor series about each of the stationary points and dropping all but the first two terms. When we do this, we find that a system (in general, not just this one) is stable if the second derivative at that point is negative and unstable if it is positive.
Say that is a stationary point of so that . Let’s consider , the difference between the current population and the stationary point. Then
Then we can expand the Taylor series for around
So then we have that, at least in a small region around the equilibrium point, . From this, it is clear that if , then this is exponential growth - the difference between the population and the equilibrium population will grow rapidly, and so the solution is unstable. On the other hand, if , then this is exponential decay, and so the difference between the population and the equilibrium population will go to zero - the solution is stable.
For our particular system, . So, for the two equilibrium points:
- the equilibrium at 0 is unstable.
- the equilibrium at is stable.
Thus, we’ve confirmed algebraically what our intuition and the slope field diagram led us to expect.
Solution
Luckily for us, we can solve this exactly by using a separation of variables.
To solve the left hand side (LHS), we can find the partial fraction decomposition of the integrand:
So now, continuing on from (1),
For the case where :
By the same process, when , .
If we have that , then for the case where ,
And so putting this all together, we have that
Similar logic for the case gives the identical solution (which feels slightly miraculous).
Nondimensional Form
The last thing I’d like to do is to write down the nondimensional form of the equation. To do that, we’ll first substitute in values of the variables in our system ( and ) with normalized versions, and , each of which is a multiple of the original variables. If we choose the multiplying constants correctly, we can remove all constants in the equation (like and ), leaving us with something just in terms of the variables themselves.
To see how this works, let’s start with a simple example: linear growth.
We’ll make the substitutions , . Then
Thus, with the variable substitutions and , we have our nondimensional form. To verify:
In this case, we can think of our new variable are representing the ‘characteristic time’ of the system - that is, we measure time in terms of the time it takes to grow by a factor . In some way, this is the natural way to measure time in this system.
Now let’s try the same process using our actual equation. Again, we’ll try the substitutions , . Then
So and , giving us the subsitutions and . When we make this subsitution, we have the nondimensional form
Again, we can think of these as having physical significance. These subsititions mean that we are measuring time in terms of the characteristic growth rate time, and we are measuring population in terms of the carrying capacity.
Conclusion
The logistic growth model, and the curve that arises from it naturally, are fascinating to look at. In this post, I’ve just scratched the surface - there are many other interesting things to learn about. The logistic function, as well as arising in various forms in many ecological systems, also arises in other, seemingly unrelated fields. For instance, it is often used in machine learning as well as in the ranking of individuals. Hopefully this helped to explain some of the properties of this system and the resulting function!
Sources and Futher Reading
- Math is Fun - Partial Fractions
- Murray, J. D. (Ed.). (2002). Mathematical Biology: I. An Introduction (Vol. 17). Springer. https://doi.org/10.1007/b98868
- Wikipedia - Logistic Function
- Woolf 2002 - Chemical Process Dynamics and Control Chapter 10.2 - Linearizing ODEs