Skip to content

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).

continuous · ODE10 dimensionschaotic

MacArthur spatiotemporal field

spatiotemporal field

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

BibTeX
@misc{macarthur,
  title = {MacArthur system},
  note = {MacArthur (1969), Proc. Natl. Acad. Sci. USA 64, 1369-1371}
}