Unter Anderem verdanke ich Wilhelm eine Anregung, die mich zu dem folgenden Artikel inspiriert hat. Einmal - es war im Jahre 2022 - da sprachen Wilhelm und ich darüber, wie im Wald auf Mäusejahre die Anzahl der Füchse zunächst ansteigt, dann die vielen Füchse die Mäuseanzahl verringern um daraufhin selbst wieder weniger zu werden. Das war mir als Förster nur qualitativ bekannt. Aber Wilhelm wusste, dass dieser Räuber-Beute-Zyklus zuerst von Alfred Lotka und Vito Volterra sachlich und mathematisch beschrieben wurde. Es war für mich eine interessante Aufgabe, die Formeln von Loka-Volterra anzuwenden und schöne Grafiken zu erstellen. Beim Berechnen der Populationskurven von Räuber und Beute in der zeitlichen Entwicklung stellte sich heraus, dass ich die sechs Parameter für die Anfangsgrößen, Geburten- und Sterberaten lange variieren musste, bis sich eine gewisse Periodizität ergab. Die Sensiblität für die Parameter und wie leicht Räuber oder Beute im Modell aussterben konnten, fand ich bemerkenswert. Ohne Wilhelm hätte ich das nicht harausgefunden und mich mit einer fertigen Wikipediagrafik begnügt. Das hätte ich gern mit Wilhelm besprochen, und ich bin traurig, dass ich das nicht mehr kann.
Alfred Lotka (1925) und Vito Volterra (1926) fanden einen mathematischen Zusammenhang in der Populationsdynamik eines Räuber-Beute-Systems.
Vorstehende Grafik wurde mit dem folgenden Recapis-Programm erstellt.
/*
Lotka-Volterra: Räuber Beute Modell
http://num.math.uni-goettingen.de/werner/ode.pdf
zB. Füchse und Hasen
zB. Schweinezyklus
x' = ax - bxy
y' = -cy + dxy
Für diese Differentialgleichungen gibt es keine geschlossene Lösung.
Daher sind die Kurven numerisch iterativ erstellt.
*/
a = 1 ; // hasen natürliche vermehrung
b = 0.01 ; // hasen fuchsverursachte verminderung
c = 1 ; // füchse natuerliche sterberate
d = 0.01 ; // füchse hasenverursachte vermehrung
x = 300.0 ; // hasen populationsstart
y = 150.0 ; // füchse populationsstart
z = 10 ; // Zwischenschritte (Punktanzahl je Periode)
p = 170 ; // Periodenanzahl
anz = int(p*z); // je 1/10 mm neuen Punkt berechnen
X Fvector anz;
Y Fvector anz;
X[0]=x;
Y[0]=y;
svg_open (p+10,100,10,10);
svg_kreuz;
for(i=1;i<anz;i++) {
x_delta = a*x/z - b*x*y/z;
x += x_delta;
y_delta = -c*y/z + d*x*y/z;
y += y_delta;
if(y<=0)
{$='Fuechse sind verhungert ';$=i,'\n';break;}
X[i] = x;
Y[i] = y;
}
svg_fieber (X,"dehnen_x=1.0","dehnen_y=0.2","sf=green");
svg_fieber (Y,"dehnen_x=1.0","dehnen_y=0.2","sf=red");
svg_text (20,60,"Hasen grüne Kurve","fill:green;font-family:Helvetica");
svg_text (20,10,"Füchse rote Kurve","fill:red; font-family:Helvetica");
svg_close("/tmp/hasen/hasen.svg");
/*
Die Programmverbesserung
x_delta = a*x/z - b*x*y/z;
y_delta = -c*y/z + d*x*y/z;
x += x_delta;
y += y_delta;
ändern in
x_delta = a*x/z - b*x*y/z;
x += x_delta;
y_delta = -c*y/z + d*x*y/z;
y += y_delta;
habe ich bei Jörn Loviscach gefunden:
https://av.tib.eu/media/10323
*/