# Systems of differential equations

See textbook, Chapter 28.2

We often study systems in which there are several variables, which interact in complicated ways. One common situation involves a set of linked differential equations, in which the change in each quantity depends both upon it, and some other quantity.

One example of such a system is a predator-prey system. Ecologists who study very simple populations of animals sometimes find a cyclic pattern in the number of creatures. One good example is the population of snowshoe hares in Canada. There appears to be a cycle with a period of five or so years, between "busts" and "booms". The population of the hare's primary predator, the lynx, shows a similar cycle; but the two cycles are slightly out of phase.

One explanation for this pattern is that the hare and lynx populations are linked very strongly to each other.

• more hares means more hare breeding --> lots more hares
• more hares means more lynx
• more lynx means fewer hares
• fewer hares means fewer lynx

One can express this set of relationships with a mathematical model:

```
Let    x  =  number of hares
y  =  number of lynx

Then

dx/dt   =  change in hare population

=  a * x   -   b * x * y

dy/dt   =  change in lynx population

= -c * y   +   d * x * y
```
Here, the rate coefficients have rough meanings
• a rate at which hares breed
• b rate at which hares are eaten by lynx
• c rate at which lynx die (which increases when more lynx all chase the same hares)
• d rate at which lynx eat hares and thus come into breeding condition

Given some initial population of hares and lynx, and given the rate coefficients, you can follow the changes in each population as a function of time. Given the proper rate coefficients, you should see a "boom/bust" pattern in both hare and lynx numbers.

#### Assignment for Thursday

Write a MATLAB routine to calculate the number of hares and number of lynx as a function of time. Take as input the rate coefficients, and produce as output a set of three vectors of numbers:

```function [t, hares, lynx]  =  population(a, b, c, d)
```
where
```     t        is the time (it will be measured in years)

hares    is the number of hares

lynx     is the number of lynx
```

Use Euler's method, and a timestep of less than a year (try somewhere between 0.01 and 0.20 years). Run the simulation for a total of 30 years. Use starting populations of:

```      x  =  2 hares

y  =  1 lynx
```
and use the following rate coefficients:
```      a  =  1.2
b  =  0.6
c  =  0.8
d  =  0.3
```

Inside your main loop over time, you should have code that looks something like this:

```        while (time < endtime)

t(i)     = current time
hares(i) = current number of hares
lynx(i)  = current number of lynx

calculate change in hares
calculate change in lynx

calculate new hare population
calculate new lynx population

i = i + 1;
time = time + timestep;

end
```

The vectors t, hares, lynx created by your program can be plotted quickly and easily within MATLAB like so:

```
[t, hares, lynx]  =  population(a, b, c, d)

plot(t, hares);
hold on;
plot(t, lynx);

```