Erinnerung an Wilhelm Brandes ✝

Vorgeschichte

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.

Lotka-Volterra

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
*/