MATH111: Applied Mathematical Modelling I

Maple code to obtain a steady-state diagram for a first-order difference equation


This page contains a maple code for the course: MATH 111 Applied Mathematical Modelling I --- Maple Assignment II.

# ricker.maple (05.08.07)
# A simple maple program to iterate the scaled Ricker model
# x_{n+1} = x_{n}*exp[r*(1-x_n)];
#
# 21.08.07 Revised to add a utility useful in examining 
#          periodic solutions

finalyear := 500;    # The final value of `n'.
r         := 2.656;   # static birth rate.
year      := n->n;  # define the `time' variable.

f := x -> x*exp(r*(1-x)); # x_{n+1} = f(x_{n})

# Instead of using the variable x_{n} we will use the variable
# pop{n}
pop  := proc(n)          # define the values of pop(n) recursively.
        option remember; # Note that using the option remember causes the
        f(pop(n-1))      # previous values pop(n-1) to be retained so that
        end:             # subsequent values may be based on them.

pop(0) := 0.1;          # the initial population size.

# calculate the ordered pairs (pop_n,time_n) for n=0..finalyear

solution := [seq([year(n),pop(n)],n=0..finalyear)]:
# if you want to see the values of the data points remove the hash
# at the start of the next line
# array(solution):         

# plot ALL the data points
plot(solution,style=POINT,symbol=BOX,color=BLACK,\
     labels=["generations","population size"],\ 
     labeldirections=[horizontal,vertical]);
#
# Sometimes we don't want to plot ALL of our data: We might not
# want to show any `transient' behaviour, just the long-term
# `steady' behaviour.  The following piece of code pulls out
# the population size for the last 10 generations.
#
lookback := 10;
solution2 := [seq([solution[n,1],solution[n,2]],n=finalyear-lookback..finalyear)]:

# plot the last "lookback" points
p1 := plot(solution2,style=POINT,symbol=BOX,color=BLACK):
p2 := plot(solution2,style=LINE,color=BLACK):

# the following code plots the population in year n as a function
# of the population size in the previous year. It is useful when
# you have a periodic orbit.
#
solution3 := [seq([solution[n,2],solution[n-1,2]],n=finalyear-lookback..finalyear)]:

p3 := plot(solution3,style=POINT,symbol=BOX,color=RED):
# If you have a period n solution then there should be `n' points on
# this figure - but you might need to increase lookback.
p4 := plot(solution3,style=LINE,color=BLUE):


with(plots):
display({p1,p2});
display({p3});
display({p3,p4});

pop := 'pop':


<< Return to my MATH 111 home page.
<< Return to my teaching home page.
<< Return to my start page.


Page Created: 21st August 2007.
Last Updated: 21st August 2007.