Lotka-Voltera an Luchsen-Hasen

Räuber-Beute-Modelle

Die meisten Organismen müssen ihre Nährstoffe von anderen Organismen erhalten. Das Populationswachstum erfolgt daher zwangsläufig auf Kosten und meist zum Nachteil anderer Populationen. Diese Beziehung zwischen Schädigern und Geschädigten wird als Räuber-Beute-Systeme bezeichnet. Historisch sind solche Systeme unabhängig voneinander von dem österreichisch-amerikanischen Mathematiker Alfred James Lotka 1925 und dem italienischen Mathematiker und Physiker Vito Volterra 1926 untersucht worden, und zwar anhand der Populationen von Schneeschuhhasen und Luchsen in Kanada bzw. Haien und Speisefischen in der italienischen Adria.

Wir betrachten den zeitlichen Verlauf der Populationen von Luchsen und Hasen, gemessen an den Fangaufzeichnungen der Hudson Bay Company, die über 90 Jahre lang geführt wurden.

Danach schwankten der Eingang von Fellen von Luchsen (Räuber) und Schneeschuhhasen (Beute) mit einer Periode von 9.6 Jahren. Wir beobachten das zyklische Ansteigen und Fallen der jeweiligen Populationen, wobei auf eine hohe Zahl Hasen stets eine wachsende Zahl von Luchsen folgt, woraus in der Folgezeit die Zahl der Hasen drastisch fällt, gefolgt von sinkenden Zahlen von Luchsen, bevor beide Populationen wiederum aufs Neue ansteigen. Die Mathematik kann durch geeignete Modellierung ein erhellendes Licht auf die beobachteten Phänomene werfen?

Wir modellieren ein sehr vereinfachtes Ökosystem, in dem nur Schneeschuhhasen und Luchse leben. Wir vereinfachen weiterhin und nehmen an, dass die Hasen unbeschränkte Wiesen und Wälder zur Verfügung haben, in denen sie genügend Nahrung finden, egal wie viele Hasen es gibt. Dann ist das Wachstum der Hasen exponentiell und lässt sich durch die folgende Differenzengleichung beschreiben:

xn+1=xn+axnx_{n+1}=x_n+a\cdot x_n

für ein a>0a>0.

Nun leben in unserem Ökosystem aber auch Luchse, die sich von Hasen ernähren. Gäbe es keine Hasen, dann verhungerten die Luchse und stürben mehr und mehr aus, d.h.

yn+1=yncyny_{n+1}=y_n-c\cdot y_n

mit c>0c>0.

Zum Glück der Luchse sind sie aber nicht vom Aussterben bedroht, solange es Hasen gibt, die sie fressen können. Wie viele Hasen frisst ein einzelner Luchs in einer Zeiteinheit? Nun, in einer ersten Näherung ist es plausibel anzunehmen, dass dies proportional zur Anzahl der Hasen ist, d.h. bxnbx_n. Jetzt gibt es aber nicht nur einen Luchs, sondern die Population zum Zeitpunkt nn besteht aus yny_n Luchsen. Diese fressen dann zusammen bxnynb\cdot x_n\cdot y_n Hasen. Ebenso ist der Zuwachs der Luchse proportional zur Anzahl der Begegnungen zwischen den yny_n Luchsen und den xnx_n Hasen. Daher verbessern wir unser Modell zu

xn+1=xn(1+a)bxnynyn+1=yn(1c)+dxnyn\begin{align*} x_{n+1}&=x_n(1+a)-b\cdot x_n\cdot y_n\\ y_{n+1}&=y_n(1-c)+d\cdot x_n\cdot y_n \end{align*}
Exercise 1: Hasen und Luchse

Erstelle eine Tabelle für den Verlauf der beiden Populationen, basierend auf der Parameterwahl x0=150x_0=150, y0=50y_0=50, a=0.0832a=0.0832, b=0.00207b=0.00207, c=0.06c=0.06 und d=0.00049d=0.00049 für 600600 Zeiteinheiten.

Solution
import numpy as np
import matplotlib.pyplot as plt

# Anfangsbedingungen
x_0 = 150
y_0 = 50
a = 0.0832
b = 0.00207
c = 0.06
d = 0.00049
time_units = 600

# Arrays zur Speicherung der Werte
x = np.zeros(time_units)
y = np.zeros(time_units)

# Anfangswerte setzen
x[0] = x_0
y[0] = y_0

# Iteration des Modells
for t in range(time_units - 1):
    x[t + 1] = x[t] * (1 + a) - b * x[t] * y[t]
    y[t + 1] = y[t] * (1 - c) + d * x[t] * y[t]

# Plot der Ergebnisse
plt.figure(figsize=(10, 5))
plt.plot(x, label='x')
plt.plot(y, label='y')
plt.xlabel('Time Units')
plt.ylabel('Population')
plt.title('Lotka-Volterra Modell')
plt.legend()
plt.grid(True)
plt.show()

Die periodische Struktur wie auch die Phasenverschiebung, die ja die Populationsentwicklung der wirklichen Hasen und Luchse charakterisierten, finden wir auch in diesem Modell wieder. Des Weiteren ist bemerkenswert, dass sich die Schwingungen nicht exakt wiederholen, sondern sich gegenseitig aufzuschaukeln scheinen. Dies wird insbesondere in einem Phasendiagramm deutlich. Charakteristisch ist das expandierende Verhalten: Die Populationen scheinen sich spiralförmig immer weiter aufzuschaukeln. Dieses Verhalten hängt mit den hier speziell gewählten Parametern aa, bb, cc und dd zusammen. Bei anderer Wahl der Parameter kann sich die Spirale im Phasendiagramm auch nach innen zusammenziehen. In diesem Fall spricht man von einem Attraktor, der einem stabilen Gleichgewicht entspricht.

Exercise 2: Gleichgewichtszustand

Wie lässt sich ein Gleichgewichtszustand in einem Räuber-Beute-Modell ermitteln? Bestätige den Gleichgewichtszustand (12240)(122 \mid 40) für die Parameter aus obiger Übung.

Solution

Die Fixpunktbedingung ist

x=x(1+a)bxyy=y(1c)+dxy\begin{align*} x &= x(1+a)-b\cdot x\cdot y\\ y &= y(1-c)+d\cdot x\cdot y \end{align*}

Und es folgt sofort

0=axbxy0=cy+dxy\begin{align*} 0 &= ax-b\cdot x\cdot y\\ 0 &= -cy+d\cdot x\cdot y \end{align*}y=abx=cd\begin{align*} y &= \frac{a}{b}\\ x &= \frac{c}{d} \end{align*}