This is a simple system model of exponential population growth. The population starts at a certain
level, then after each time tick, it increases by a set proportion of its current value. The
result of which is an exponentially increasing population. Users can set the initial population,
the amount of time for which the simulation is run, the length of a time tick, and the proportion
of individuals who reproduce after each tick.
Background Information
When modeling natural processes, one of the most common relationships is the exponential curve.
The basic principle behind this result is that each individual contributes to the overall growth
in individuals, so as the number of individuals increases, so too does the rate of increase. This
is particularly true for populations, as the growth is determined by the number of individuals
able to reproduce. Absent any sort of constraints, most species have evolved to be able to
increase their populations rapidly and exponentially. More generally, any time the average member
of a population contributes to the creation of more than one new member before dying, the
population will grow exponentially. If the average member contributes to less than one new member,
the population will shrink exponentially
Science/Math
The fundamental principle behind this model is HAVE = HAD + CHANGE. Each time tick, the new
population is equal to the old population plus some growth factor. In this case, because the
CHANGE is proportional to the HAD, we can expect exponential growth.
The relevant equations can be derived using derivatives:
The change in population dR over each time dt is equal to some proportion b times the previous
population R, so dR/dt = b*R
Multiplying across, we get that dR = b*R*dt
Another way of writing dR is R
n
- R
0
, so R
n
- R
0
= b*R
0
*dt
Finally, we solve for the new population R
n
to get R
n
= R
0
+ b*R
0
*dt
Teaching Strategies
An effective way of introducing this model is to use the M&M activity. For this activity, each
student or group of students is given a bag of M&Ms. They start by putting two on a plate to
represent the initial population. Then, in each round students will toss their M&Ms on the
plate and count up the number than land "M-side" up. The population will grow by that number, so
next round they will have more M&Ms to toss. This is a great way to give a hands-on example of
a simple model with Initial_R = 2, b = 0.5, and dt = 1.
With this lesson, it is important to make the distinction between an agent model - the M&M
tossing - and a system model - the Excel spreadsheet. An easy way to show this is to have each
student/group write their results on the board, and then list the theoretical results from the
model beside the experimental results. All of the students' models should be relatively close to
the true model, but they will not be an exact replica of it. Next, average the results from all of
the students and compare that to the "real" model. These numbers should be even closer to the
theoretical values. Ask students to think about what would happen if the number of trials was
extremely large - the results should begin to approach the systems model more and more closely.
Implementation:
How to use the Model
This is a simple recursive model, but there are a number of different parameters and settings that
can be changed in order to make the model yield different results. There are three parameters in
the model:
Initial_R determines the starting population. Its default value is 2
b determines the proportion of the population that reproduces each iteration. Its default value
is 0.5
dt determines the length of each time step. Longer values change the results of the model
slightly in the same way that annually compounded interest is worth slightly less than
continually compounded interest. Its default value is 1
Initial_R and dt can be manipulated simply by typing a new value into their cell; b can also be
changed by clicking and dragging a slider below it. The slider goes from 0 to 1 in units of 0.01,
and is a great way to instantly see the effects of changing the rate of growth.
On the right-hand side, the raw data for the simulation is displayed. The results are calculated
recursively, so the data in each row is directly related to the data in the previous row (with the
exception of the first row, which is set by Initial_R). The equations have already been set up, so
the results can be seen immediately. R
n
is the population at time n, while R
0
is the population at time n - 1 and is just included for the sake of clarity. When the applet is
first loaded, the time will only go to 1, b ut it can be extended by clicking on the last row, and
then dragging from the bottom-right hand corner of the cells to propagate the formulas to
additional time periods.
As you make changes to the raw data on the right, you will notice that the graph in the bottom
left immediately updates to reflect this new data. The graph is preset to monitor and record the
values of R
n
for all time periods up to and including 25. The graph can be used to instantly and clearly
visualize the effects of any changes to parameters on the overall results. If you wish to only
focus on the first few values, it is helpful to change the scaling on the graph so that the first
points are more visible and more distinct. For more information on Excel, reference the Excel
tutorial at:
http://shodor.org/tutorials/excel/IntroToExcel
Learning Objectives:
Understand the relationship between recursion and exponential growth
Understand the effect of each parameter on the population growth curve
Differentiate between agent and systems models
Objective 1
To accomplish this objective, have students set Initial_R = 1, b = 1, and dt = 1. Propagate the
time and R
n
to at least time = 10, and ask students if they can see any relationship between the values of R
n
over time. Suggest trying different types of conventional equations to see if any of them fit the
curve available (good choices might be quadratic, cubic, and exponential). When students try
exponential equations, they should find that "y = 2n" is a perfect match for the function present
In order to understand why this is, ask students to try to figure out the equation for R2 in terms
of R
0
. It may help to rearrange the existing equation to read R
n
= R
0
(1 + b*dt). Students should get that R2 = R
0
(1 + b*dt)(1 + b*dt) = R
0
(1 + b*dt)^2. Continue to extend this example until students begin to see a pattern - for any
value n, R
n
= R
0
(1 + b*dt)^n. This is, of course, an exponential equation.
Objective 2
Have students play around with each of the manipulable parameters to see the effect on the graph.
Ask the following questions to guide their exploration:
What happens to the graph if you increase or decrease Initial_R?
Does the Initial_R value have any effect on values on the graph after the initial one? If so,
what is the effect?
What is the value at time 25 if Initial_R is 1, b is 0.5, and dt is 1? What happens to the value
at time 25 if we change dt to 0.5? 0.25? What do you think would happen if we made dt extremely
small?
Why do you think changing the time to a smaller step causes the value of Rn to increase?
What happens to the shape of the graph if you increase or decrease b?
Is the growth rate in the AgentSheets model exactly exponential? How do you know?
Is the growth rate in the Excel model exactly exponential? How do you know?
Introduce the concept of agent and systems models. An agent model simulates at the individual
level, assigning each person a certain probability of reproducing at each time step. A systems
model simulates at the population level, allowing the population to increase by a certain
percentage each time step. Ask the following questions:
Do you think the AgentSheets model is an agent or a systems model? How do you know?
Do you think the Excel model is an agent or a systems model? How do you know?
Which type of model do you think is more realistic? Why?
Which type of model do you think is easier to calculate? Why?
Extensions:
Model the effects of a negative value for b (i.e. population decline)
Connect population growth to other exponential processes, such as compound interest
Understand why exponential population growth over long periods of time can't happen in the real
world
Extension 1
Ask students to speculate about what would happen if b were negative. Try small (but still
positive) values for b to get a better intuition about what happens as b goes to zero and beyond.
Once students have had a chance to develop hypotheses for the shape of an exponential curve with a
base of less than 1, try it out (it helps to change Initial_R to at least 1000 first). Be sure
that the negative values of b are between -1 and 0, so as not to create an exponent with a
negative base. Discuss what exponential decay means, asking the following questions:
What is the difference between this and positive values of b?
Does the population ever go to zero or below?
Can you think of a real-world situation where population might be declining like this?
What effect does changing dt have on the values now?
Extension 2
Ask students to brainstorm other real-world phenomena that might be exponential. Good examples
would be compound interest, inflation/GDP, experience rates in video games, or the spread of an
epidemic. For any or all of the examples presented, have students attempt to model their process
with the simple population model. Think specifically about which parts of the process would
correspond to each of the three parameters of the model, and how you could interpret the data
derived from it. Ask the following questions:
What part of your exponential process would be the initial value for our model? The growth
factor? The change in time?
How can you interpret the results of your calculation? Are the results what you expected? Why or
why not?
What do all of these exponential processes have in common?
Extension 3
Walk students through a real-world example of the population of a pair of rabbits, where the
population increases by 50% every month. The parameters should be Initial_R = 2, b = 0.5, dt =
1. Extend the time for which the calculations are done to at least 60 months (5 years). Ask the
following questions:
Since we are looking at months instead of years, do we need to change dt? Why or why not?
(Answer: No. The base of the exponent b is already denominated in months, so there's no need
to change dt as well. If b was yearly population growth, then we would need to change dt)
How many rabbits are there after 1 year? After 2? After 5?
Is it realistic to expect there to be 36 billion rabbits after 5 years of exponential growth?
What are some reasons that the population of rabbits might not grow at the same rate forever?
What does that say about the completeness of our model?
This is useful as a comparison to show the differences between agent and systems models. Given the
same initial parameters, the AgentSheets model has the same expected outcome as the Excel model,
but because it is calculating results probabilistically for individual M&Ms instead of simply
taking a proportion, there will be some deviation. Students should be encouraged to investigate
why there are differences in the results, and any systematic patterns in those deviations (for
instance, deviations tend to get larger over time).
This model is an excellent real-world example of exponential decay. The concentration of salt in
each cell depends on that of its neighbors, so over time we expect the concentration of salt in
all cells to approach zero. However, the amount of salt in a given cell is always multiplied by a
number between 0 and 1, so the total amount of salt will never quite reach zero. Students can
investigate how the "population" of salt changes in a way similar to that of the population model,
except that the growth factor changes from time period to time period.
Nutria & Bunny Comparison
http://www.shodor.org/talks/ncsi/vensim These two models are closely related, so they ought to be used in tandem to explain Extension 3
in more depth. According to the simple population model, the population will simply grow without
bound forever because there are no constraints taken into account. However, the Nutria and Bunny
Comparison models both introduce the idea of environmental constraints due to limited resources.
In these cases, rather than a simple exponential model students will get a Cumulative Distribution
Function. In contrast to an exponential function, a CDF eventually slows down in its rate of
growth and asymptotically approaches the maximum carrying capacity of the environment.
One particularly interesting topic to cover here is the degree to which human population is, or
may be, following this CDF. Although the number of humans has been increasing more or less
exponentially since the 1800s, in many industrialized countries today the population is stable or
even declining. As more and more nations around the world develop, the expectation is that the
world population will slow its rate of increase, eventually reaching something close to stability
at around 9-10 billion people.