GS 2006/Math - Collins

Lab 6
Growth Model - Leslie Matrices


This is loosely based on Section 11.10. Read through the first few pages of 11.10 (pp. 648-651). It is also similar to the Markov Chains of Lab 5. The modifications are included in this writeup.


A way to model growth of a population is to create classes representing either age or size groups within the population and then develop a transition matrix (like in Lab 5). To develop this matrix we first need to know what the various classes are and then for each class, we need to know the percentage that 'grow' into the next class in each time period, the percentage that die and the percentage that 'reproduce' by creating a new entry in the lowest class. For example we might model fish at a fish farm with this data:
Fish Farm Data
Size Class % Growing To Next Class per Week % Dying % Reproducing
< 1 oz. 50 20 0
1 oz. - 1 lb. 30 10 15
> 1 lb 0 5 35
Over a week a class will grow from those moving up from the lower class and, for the lowest class, those born from the other classes, and a class will decrease by those that die and those that move to the next class up.
From this we form the following transition matrix:
    1-0.50-0.20     0.15       0.35         0.30   0.15   0.35
G =    0.50     1-0.30-0.10      0      =   0.50   0.60   0.0
         0          0.30      1-0.05        0.0    0.30   0.95
Note, in contrast to the Markov transition matrix, the sums of the columns aren't necessarily equal to 1. This is because there is possibly increase or decrease of the total population.

Let x(n) = (x1(n), x2(n), x3(n))T be the number of fish in the 3 classes after n weeks. Then we have the simple relationship

x(n+1) = G x(n)

Suppose when we start we have 1000 fish in class 1, i.e. x(0) = (1000,0,0)T, then

x(1) = G x(0) = (300, 500, 0)T
x(2) = G x(1) = (165, 450, 150)T
x(3) = G x(2) = (169.5,352.5,277.5)T
x(10) = G10 x(0) ~ (407,402,767)T

Thus at first the population declines but as soon as we get enough of the larger fish the population begins to grow.


Once we enter the matrix G and the initial numbers in x, we can compute the future values either by G^n*x for the value of n we want, or by repeating the calculation x = G*x n times. One way to do this is by using a for-loop. Set up G and the initial x and try this:
n = 10;
for i = 1:n
   x = G*x;
At the end we have a vector x of results after n weeks.

MATLAB has some very power plotting routines. We can use them to visualize our results. Basically we just need to create a matrix of values we want to plot. Set up G and the initial x again and run this code:

n = 10;
results(:,1) = x;
for i = 1:n
   x = G*x;
   results(:,i+1) = x;
If you type disp(results) you'll get a 3 by 11 matrix of
values where each column represents the state at a certain week.
We can plot these results easily by plot(results')  (Note
the ')


1. For the fish farm model above, we had a total of over 1500 fish after 10 weeks starting with only 1000 fish. Adjust the death rate for the class of large fish to get the total after 10 weeks to be as close to 1000 as you can. This means adjust the (3,3) value of G down or up and then compute the result after 10 weeks. When you get the total to be close to 1000, record the death rate. Note that the death rate is not just the value of G(3,3) but is related to it.

2. From the following data for University of ABC
Yearly Progress & Retention Data
Class % Moving to Next Class % Droping out % Graduating
Freshman 50 40 0
Sophomore 60 20 0
Junior 70 10 0
Senior 15 10 70
5th-Yr Senior 90 5 0
Graduated 0 0 100
In this problem there is no reproduction but instead we have two types of 'deaths': droping out and graduated. Graduated is sort of a fake category that we just use to keep track of the number that graduated. Note that once you graduate, you stay graduated.

Use this data and an incoming class of 4200 to predict how many will have graduated after 4, 5 and 6 years.

After 4 years will there be any students that are still considered Freshmen or Sophomores?