Dynamic Models

Ecological Forecasting Workshop, Cape Town, July 2025

Murray Christian

What is a dynamic model?

Dynamic models describe a function implicitly by describing the change that governs it.

Differential equations in continuous time

  • “differential equation”: an equation containing an unknown function and its derivative(s), e.g.

  • \[ \frac{dN}{dt} = rN \hspace{5pt} \text{ or } \hspace{5pt} \frac{1}{N}\frac{dN}{dt} = r, \] for constant \(r\).

  • “solving” differential equations means finding the unknown function analytically or numerically, e.g. \[ N(t) = N_0e^{rt} \hspace{10pt} \text{ for } t \geq 0 \]

Difference equations in discrete time

  • “difference equation”: specifies a function at \(t+1\) in terms of value at \(t\)

  • e.g.  \[ N_{t+1} = N_t + rN_t = (1 + r)N_t \]

  • or generally \[ N_{t+1} = F(N_t) \] for some function \(F\)

  • numerical simulation of difference equations is straightforward

Population growth

Two classic dynamic models describe different population dynamics

  • Exponential growth \[ \frac{dN}{dt} = rN. \]

  • Logistics population model with density-dependent dynamics \[ \frac{dN}{dt} = rN\left(1 - \frac{N}{K}\right), \]

Per-capita rate of change \(\frac{1}{N}\frac{dN}{dt}\) is very simple in both, but dynamics are highly non-linear.

Intuition building

Dynamic models in discrete time

Let’s start at the simplest possible dynamic models in discrete time

\[ y_{t+1} = y_t \]

The only thing the dynamics depend on is the initial condition \(y_1\):

Dynamic models in discrete time

As an aside, things get a bit more interesting if we move from a deterministic to a stochastic model

\[ y_{t+1} = y_t + \epsilon_t, \hspace{10pt} \text{ where } \epsilon_t \sim \text{Normal}(0, \sigma^2) \]

The result is known as a random walk:

Dynamic models in discrete time

Back to deterministic models, exponential growth/decline results from

\[ y_{t+1} = \rho y_t \hspace{5pt} \text{ for } \rho > 0. \]

  • Solve by iteration,
    • \(y_2 = \rho y_1\),
    • \(y_3 = \rho y_2 = \rho^2 y_1\),
  • So \[y_{t+1} = \rho^t y_1,\] thus exponential growth (\(\rho > 1\)) or decline (\(\rho < 1\)).

Dynamic models in discrete time

Consider something slightly more complex:

\[ y_{t+1} = \beta + \rho y_t. \]

How can we understand this equation?

  • if \(\beta > 0\) and \(\rho > 1\), exponential growth
  • long-run behaviour and equilibria
    • if \(\lim_{t \rightarrow \infty}y_t = l\) exists, \(l = \beta/(1-\rho)\)
    • alternatively, subtract \(y_t\) from both sides to get \[ \Delta y_t = y_{t+1} - y_t = \beta + (\rho - 1) y_t \]
    • equilibrium if \(\Delta y_t=0\), at \(l = \beta/(1-\rho)\)
  • the equilibrium is only sensible if \(\beta > 0\) and \(0 < \rho < 1\).

Dynamic models in discrete time

If we push things just one bit further, all hell breaks loose!

  • exponential growth: \(y_{t+1} = \rho y_t\) where \(\rho = y_{t+1}/y_t\) is the growth rate

  • for density dependence,

    • \(\rho = \rho(y_t)\), for example \(\rho(y_t) = r\left(1 - \frac{y_t}{K}\right)\)

    • \[ \rho(y_t) \approx \left\{ \begin{align} r & \hspace{5pt} \mbox{ if } y_t << K \\ 0 & \hspace{5pt} \mbox{ if } y_t \approx K. \end{align} \right. \]

  • we arrive at a non-linear equation \[ y_{t+1} = ry_t\left(1 - \frac{y_t}{K}\right) \]

  • we can remove \(K\) by scaling, \(x_t = y_t/K\), giving one parameter \[ x_{t+1} = rx_t(1-x_t) \]

Dynamic models in discrete time

The ‘logistic map’ \(x_{t+1} = rx_t(1-x_t)\) has incredibly rich dynamics as \(r\) varies! The dynamics at various value of \(r\) are explored in the interactive logistic_map app, which you can run from run_apps.R.