MacArthur¶
Systems / ODEs / Population dynamics
MacArthur's consumer–resource model — five species competing for five substitutable resources by Liebig's law, sustaining chaotic coexistence (the paradox of the plankton).
Definition¶
@staticmethod
def _equations(Y, t, *, d, m, r):
c, kmat, s = MacArthur._C, MacArthur._K, MacArthur._S
nn = [Y(i) for i in range(5)]
rr = [Y(5 + j) for j in range(5)]
# Liebig minimum: species i is limited by its scarcest resource.
mu = [Min(*[r * rr[j] / (kmat[j][i] + rr[j]) for j in range(5)]) for i in range(5)]
nndot = [nn[i] * (mu[i] - m) for i in range(5)]
rrdot = [
d * (s[j] - rr[j]) - sum(c[j][i] * mu[i] * nn[i] for i in range(5)) for j in range(5)
]
return tuple(nndot + rrdot)
Parameters¶
| Symbol | Default | Role |
|---|---|---|
d |
0.25 |
resource turnover rate |
m |
0.25 |
consumer mortality |
r |
1 |
maximum growth rate |
State variables: N1, N2, N3, N4, N5, R1, R2, R3, R4, R5
Properties¶
Lyapunov spectrum
TODO — dim 10 > 6 — full spectrum too slow
Kaplan–Yorke dimension
TODO — requires a numeric Lyapunov spectrum
Divergence ∇·f
n/a — non-smooth right-hand side — divergence is piecewise (defined almost everywhere)
Equilibria
TODO — dim 10 > 8 — equilibrium search skipped
Define it in TSDynamics¶
import tsdynamics as ts
sys = ts.systems.MacArthur()
traj = sys.integrate(final_time=100.0, dt=0.01)
exps = sys.lyapunov_spectrum()
ts.kaplan_yorke_dimension(exps)
Reference¶
MacArthur (1969), Proc. Natl. Acad. Sci. USA 64, 1369-1371
