Verhulst-Dynamik


Verhulst-Dynamik
Einen leichten Einstieg in die Theorie der Dynamischen Systeme bekommt man über die Verhulst-Dynamik. Sie eignet sich auch gut für einen Einstieg in das Programmieren. Verhulst (1804 bis 1849) war ein belgischer Mathematiker, der sich um die realistische Modellierung von Wachtumsvorgängen in einer Population bemühte, z.B. dem Wachstum der gesamten Menschheit. In einer Welt ohne Grenzen und knappe Ressourcen ist die Annahme einer konstanten Wachstumsrate sinnvoll. Sie führt, wie man in der Mathematik lernen kann, zu exponentiellem Wachstum. In der Realität gibt es aber Obergrenzen, die man ganz anschaulich als Nahrungsmangel und Verhungern interpretieren kann. Bei Annäherung an diese Grenze sollte das Nettowachstum zurückgehen, so dass sich ein Gleichgewicht einstellt. Dieses Verhalten lässt sich mit der Gleichung yn+1 = yn + a⋅yn⋅(1 – yn) mathematisch einfangen.
Zur Erklärung: Wie alle vergleichbaren Simulationen verläuft auch hier die Zeit in Schritten, die durchnumeriert werden. Ein n steht jeweils für den momentanen Wert und n+1 für den kommenden. Wie groß die Schritte sind (ein Jahr, ein Tag, eine Sekunde, eine Generation usw.), hängt vom Problem ab. y steht für die Größe der Population, gemessen als Anteil der maximal möglichen dauerhaften Populationsgröße, ist also eine meist kleine Dezimalzahl. a ist die Wachstumsrate ohne Berücksichtigung einer Grenze. Der Teil in Klammern reduziert – wie gewünscht – das Wachstum bei Annäherung an die Grenze bis auf Null. Das Modell liefert bei kleineren Werten von a eine unterschiedlich schnelle aber harmlose Annäherung an die Grenze 1 oder 100%, wie die abgebildete Kurve zeigt. Sie heißt logistische Kurve und ist eine Entdeckung von Verhulst. Bei etwas zu raschem Wachstum gibt es ein kurzzeitiges Überschwingen, dann ein Schwanken zwischen verschiedenen Werten und danach wird das Verhalten sehr kompliziert. Einen Überblick darüber verschaffen wir uns im nächsten Abschnitt "Feigenbaumdiagramm".

Verhulst-Programm
Als Programmiersprache verwenden wir das kostenlose Chipmunk-Basic. Es ähnelt den Programmiersprachen der 80er-Jahre und enthält auf einfache Art alles, was wir brauchen. Die einzelnen Anweisungen stehen in numerierten Zeilen. Im Prinzip kann man auch Anweisungen mit Doppelpunkten zusammenfassen, z.B. in Zeile 140 x0 = 20: y0 = 620. Damit ist die Reihenfolge klar. Eine Ausnahme bildet die for-next-Schleife in den Zeilen 280 bis 310. Sie wird insgesamt 101mal wiederholt, wobei die Variable n die Werte 0 bis 100 annimmt. Die eigentliche Rechnung steht ganz unten in Zeile 280. Der Rest ist Graphik. Die Zeilen, die ein "="–Zeichen enthalten, sind keine mathematischen Gleichungen, sondern Zuweisungen. Der Wert des Terms auf der rechten Seite des Gleichheitszeichens wird berechnet und in der Variablen auf der linken Seite abgespeichert. Wenn eine Variable links und rechts vorkommt, dann ist links der neue und rechts der alte Wert gemeint.
Die Graphikbefehle verwenden ein Koordinatensystem, dessen Ursprung in der linken, oberen Ecke des Fensters liegt. Gemessen wird in Pixeln. Die Ergebnisse der Rechnung müssen an dieses System angepasst werden. Dazu dienen die Faktoren xf und yf. Das Programm enthält außerdem einige Kommentare (rem für "remark"), die die Lesbarkeit verbessern.
Wer eine schönere Programmoberfläche haben möchte, muss sich z.B. mit Java auseinandersetzen. Der rechnerische Teil ist dann ganz ähnlich aber die Verwaltung der Oberfläche wird sehr viel aufwändiger. Außerdem ist das Netz voll von fertigen Programmen zum Thema, die z.T. auch noch mathematisch sehr ausgefeilt und damit sehr schnell sind.