J. Bentele und
J. Theofel, Gymnasium Unterrieden, Sindelfingen
In diesem Projekt haben wir die Programmierung und die mathematische Analyse des Feigenbaumdiagramms behandelt. Es wurde in einer Gruppe von Schülern, die einfache Programmierkentnisse vorweisen konnten, in einem Schulhalbjahr mit jeweils zwei Wochenstunden durchgeführt.
In den Programmen wird grundsätzlich ein Coprozessor verwendet. Wenn Sie an Rechnern ohne Coprozessor arbeiten, sollten Sie die
Compileroption {$N+} einfach entfernen und nicht mit Hilfe von {$N+,E+} einen Coprozessor emulieren, da sich dies
nachteilig auf die Geschwindigkeit beim Programmablauf auswirkt. Des Weiteren sollten Sie bei schnellen Rechnern (ab 486) statt dem
Datenentyp real den genaueren extended verwenden.
Die Programme sind alle so ausgelegt, daß sie mit verschiedenen Grafiktreibern laufen, da statt von einer
konstanten Bildschirmgröße auszugehen die Werte mit GetMaxX und GetMaxY ausgelesen werden. Sie können
Ihre Grafikkarte direkt unterstützen, indem Sie statt gt:=detect z.B. eingeben: gt:=9; gm:=2. (Dieses Beispiel ist VGA mit
640x480 Pixeln in 16 Farben). Allerdings müssen Sie auf jeden Fall Überprüfen, ob die Pfadangabe zu den Grafiktreibern
stimmt. (In den Listings ist sie auf c: \bp\bgi gesetzt, gegebenenfalls also ändern.)
| Listing 1: Iterationsfolge 1 (ITER1.PAS) | Bildschirmausgabe von ITER1.PAS: |
program Iteration1;
{$N+}
var
x : real;
z : byte;
begin
x:=2;
for z:=1 to 10 do
begin
x:=2*x;
writeln(x:10:0);
end;
readln;
end.
|
4 8 16 32 64 128 256 512 1024 2048 |
In diesem Beispiel ist leicht zu erkennen, daß der Wert von xn für
ebenfalls gegen unendlich strebt:| f(x) = | ![]() |
Diese Iterationsfolge kann durch geringe Änderungen im obigen Programm angezeigt werden:
| Listing 2 : Iterationfolge 2 (ITER2.PAS) | Bildschirmausgabe von ITER2.PAS: |
program Iteration2;
{$N+}
var
x : extended;
z : byte;
begin
x:=2;
for z:=1 to 24 do
begin
x:=sqrt(x);
writeln(x:10:7);
end;
readln;
end.
|
1.4142136 1.1892071 1.0905077 1.0442738 1.0218971 1.0108893 1.0054299 1.0027113 1.0013547 1.0006771 1.0003385 1.0001692 1.0000846 1.0000423 1.0000212 1.0000106 1.0000053 1.0000026 1.0000013 1.0000007 1.0000003 1.0000002 1.0000001 1.0000000 |
Weitere Beispiele für Iterationen, die gegen eine feste Zahl konvergieren, stellen die Formeln für beschränktes Wachstum dar!
Es gibt jedoch auch Fälle, in denen die Werte für f(x) sich ständig wiederholen. Das einfachste Beispiel hierfür ist:
| anziehender Fixpunkt: | abstoßender Fixpunkt: |
![]() |
![]() |
| m = -0,8 / c = 8 | m = 1,5 / c = -4 |
Diese Iterationsspiralen oder - treppen können mit dem nachfolgenden Programm auf dem Bildschirm betrachtet werden.
Es wird dabei das 1. Feld des Koordinatensystems in x-Richtung von 0 bis 10 und in y-Richtung ebenfalls von 0 bis 10 auf dem Bildschirm
angezeigt. Die vom Benutzer ausgewählten Geraden sollten möglichst in diesem Bereich verlaufen.
Zur Umrechnung zwischen den mathematischen Koordinaten und den Bildschirmkoordinaten siehe die üblichen
Informatik-Lehrbücher wie z.B. [2], S.72 f.
| Listing 3 : Grafische Analyse mit Geraden (GAGERADE.PAS) |
Dieses Programm kann man auch mit Parabeln statt Geraden ausführen.Wir wählen die logistische Parabel mit der Gleichung f(x)= a*x(1-x) = ax-ax2. Im folgenden Programm führen wir nur noch die Teile auf , die sich im Vergleich zum vorigen geändert haben. Am Anfang sollte die Parabel nur für Parameterwerte a von 0 bis 3 untersucht werden. Wenn man das Feigenbaumdiagramm besprochen hat , kann man das überraschend unterschiedliche Verhalten der Iterationsfolgen auch mit diesem Programm für a > 3 demonstrieren.
| Listing 4 : Grafische Analyse mit der logistischen Parabel (GA_PARAB.PAS) |
Dabei entstehen dann z.B. folgende Grafiken:
Nach mehreren Experimenten entdeckt man schnell, daß folgende Sätze gelten:
Ein Fixpunkt x der Funktion f ist anziehend, wenn gilt:
Er ist dagegen abstoßend, wenn gilt:
Der vollständige Kontraktionssatz lautet: Ist x* Fixpunkt einer stetig differenzierbaren Funktion f und gilt | f ' (x) | < 1, so gibt es eine Umgebung von x*, so daß für jeden beliebigen Startwert x0 aus dieser Umgebung die Rekursionsfolge xn+1 =f(xn) gegen diesen Fixpunkt konvergiert.
| k = | ![]() |
Diese Ergebnisse sind erwartet worden. Setzt man den Parameter r=1.5, dann erhalten wir vergleichbare Folgenglieder. Bei r=2 kommt es zu einem auffälligen Wechsel. Nach einer kurzen Phase des "Einschwingens" schwanken die Werte zwischen zwei Zahlen hin- und her. Noch deutlicher wird der Zweier-Zyklus für r=2,2. Schüler finden schnell das Räuber-Beute-Modell als Erklärung. Erhöht man den Parameter r jetzt nur noch geringfügig, zeigen sich neue Überraschungen. Die untenstehende Tabelle gibt die dazugehörenden Iterationsfolgen wider:
| Listing 5 : Tabelle der logistischen Funktion (LOGISTAB.PAS) | n | k=1 | k=1,5 |
program Tabelle_logist_Funktion;
{$N+}
uses crt;
var
i, anz : integer;
x, k : extended;
begin
clrscr;
writeln('Welche Iterationsgleichung der Art ');
writeln;
writeln('p =p+k/1000*(1000-p)*p soll untersucht werden ? ');
writeln;
writeln;write('Bitte Koeffizient k (0<k<=3) eingeben : ');readln(k);
writeln;
write('Anzahl der Iterationen: ');readln(anz);
x:=50;
writeln(0:3,50:16);
for i:=1 to anz do
begin
x:=x+k/1000*(1000-x)*x;
if i mod 20=0 then readln;
writeln(i:3, x:16:0);
end;
readln;
end.
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
50 98 185 337 560 806 962 999 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 |
50 121 281 584 949 1022 988 1006 997 1001 999 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 |
| n | k=2,0 | k=2,2 | k=2,5 | k=2,52 | k=2,55 | k=2,7 | k=2,83 | k=3,0 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
50 145 393 870 1096 885 1088 896 1082 904 1078 910 1074 916 1070 920 1067 924 1065 927 1062 930 1060 933 1058 935 1057 937 1055 939 1054 940 1052 942 1051 944 1050 945 1049 946 1048 |
50 155 442 984 1018 978 1026 968 1037 953 1052 932 1071 904 1095 866 1121 822 1144 782 1157 757 1162 748 1163 747 1163 746 1163 746 1163 746 1163 746 1163 746 1163 746 1163 746 1163 |
50 169 519 1143 733 1222 543 1164 688 1225 537 1159 699 1225 536 1158 701 1225 536 1158 701 1225 536 1158 701 1225 536 1158 701 1225 536 1158 701 1225 536 1158 701 1225 536 1158 701 |
50 170 525 1153 708 1229 520 1149 718 1228 522 1151 714 1229 521 1150 716 1228 521 1150 715 1229 521 1150 715 1228 521 1150 715 1228 521 1150 715 1228 521 1150 715 1228 521 1150 715 |
50 171 533 1168 669 1234 499 1136 742 1230 508 1145 721 1234 498 1135 744 1230 509 1146 718 1234 497 1134 746 1229 511 1148 715 1235 496 1133 748 1229 512 1149 712 1235 495 1133 749 |
50 178 574 1234 454 1124 749 1257 386 1026 955 1071 865 1181 605 1250 406 1057 895 1149 688 1268 352 968 1052 904 1139 712 1266 358 978 1035 936 1097 809 1226 478 1151 681 1268 352 |
50 184 610 1283 254 791 1259 337 970 1052 897 1159 638 1292 226 721 1290 230 732 1287 241 759 1276 278 846 1215 475 1181 575 1267 311 916 1133 706 1293 219 704 1294 218 701 1294 |
50 193 659 1333 1 3 12 47 180 622 1327 23 92 342 1017 966 1065 857 1224 401 1121 713 1327 26 101 373 1075 832 1251 308 947 1097 777 1297 142 506 1256 290 908 1158 608 |
Kurz zusammengefaßt entnehmen wir der Tabelle folgendes:
Für r=1 und r=1,5 strebt die Folge gegen 1000.
Für r=2 und r=2,2 entwickelt sich ein Zweier-Zyklus.
Für r= 2,5 und r= 2,52 entsteht ein Vierer-Zyklus.
Für r=2,55 entwickelt sich ein Achter-Zyklus.
Für r=2,7 ist keine Regelmäßigkeit (=Chaos) erkennbar.
Für r=2,83 entsteht ein Dreier-Zyklus.
Für r=3 ist keine Regelmäßigkeit (=Chaos) erkennbar.
(Für r>2,52 wird das Verhalten deutlicher, wenn die Anzahl der Iterationen noch weiter erhöht wird! Einschwingeffekt!) Wie ist es zu erklären, daß obige Iterationsgleichung in Abhängigkeit von r zu völlig unterschiedlichem Verhalten der Folgen führt?
Wir werden im nächsten Kapitel die Iterationsfolgen der logistischen Funktion für 0<=r<=3 graphisch darstellen und an dem
Diagramm weitere Entdeckungen machen.
Um die Anzahl der Rechenoperationen zu reduzieren und dadurch im Computer die Rechengenauigkeit zu erhöhen, werden wir zuerst
die obige Iterationsgleichung auf die einfachste Form bringen. Aus Gründen der Vergleichbarkeit verschiedener Wachstumsvorgänge
hat schon Verhulst 1845 vorgeschlagen Pn durch den relativen Wert
| pn = | ![]() |

ergibt sich pn = pn + r * pn * ( 1 - pn ). Der Parameter r hat sich dabei nicht
verändert. Mit

und a=r+1 erhalten wir die einfachste Form der logistischen Gleichung:
Genau Herleitung siehe [5], Seite 74. Wegen a=r+1 zeigt sich bei dieser Gleichung das gleiche Verhalten der Iterationsfolgen (wie in unserem obigen Beispiel ) für die um 1 vergrößerten Parameterwerte von r.
Jetzt kommt das Programm, das im Mittelpunkt dieses Artikels stehen soll: Es zeigt das Feigenbaumdiagramm bzw. Ausschnitte davon an.
| Listing 6 : Das Feigenbaumdiagramm (FEIGE.PAS) |
Es ergibt sich folgendes Diagramm:
Die Entstehung des Diagramms ist relativ einfach zu erklären:
Es handelt sich hierbei um ein Koordinatensystem, bei dem auf der x-Achse die verschiedenen Werte für a abgetragen werden.
Über jedem a-Wert werden dann alle Iterationswerte abgetragen, die in dem zu Beginn des Programms gewählten Bereich liegen.
Dabei werden allerdings die ersten 200 Iterationswerte nicht angezeigt, da der sog. Einschwingeffekt die klare Darstellung der
Periodenverdoppelung überlagern und unkenntlich machen würde.
In diesem Feigenbaumdiagramm sehen wir einige charakteristische Merkmale. Sie sind im obigen Bild mit Nummern markiert.
= 3,5699... . Ab hier beginnt das Chaos im Sinne von nicht mehr vorhersagbarem Verhalten der Iterationsfolgen.
Zunächst zur Bifurkation:
| Der Quotient: | ![]() |
= 4,6692... .
![]() |
![]() |
| 0<a<4 | 3<a<3,678 |
| 0<y<1 | 0,2722<y<0,7287 |
![]() |
![]() |
| 3,45122<a<3,59383 | 3,54416<a<3.57490 |
| 0,594<y<0,4105 | 0,4636<y<0,5357 |
Grundlage für die rechnerische Untersuchung ist der Kontraktionssatz, der schon im 3. Kapitel anschaulich hergeleitet worden ist. Wir wiederholen und erweitern die Definition der verschiedenen Fixpunkte aus Kapitel 3:
| Wir nennen einen Fixpunkt x* | anziehend, falls | | f ´(x*)| < 1 |
| abstoßend, falls | | f ´(x*)| > 1 | |
| inndifferent, falls | | f ´(x*)| = 1 |
a) Der anfängliche "Fixpunktstrang"
Eine Iterationsfolge hat einen Fixpunkt, wenn die Gleichung x=f(x) eine Lösung hat.
Aus ax(1-x)=x folgt x1 = 0 oder x2 =1-
Von welchem Typ sind die berechneten Fixpunkte?
Wir untersuchen: f ´(x) = a - 2ax
| | f ´(0) | = |a| < 1 | falls a<1 |
| f ´(1- ) | = | -a +2| >1 |
falls a<1 |
| f ´(1- ) | = | -a +2| <1 |
falls 1<a<3 |
Fazit:
| Für 0<a< 1 ist 0 der anziehende Fixpunkt. | |
Für 1<a<3 strebt die Iterationsfolge gegen 1- ![]() |
|
b) Die Bifurkationen
Die bisherigen Fixpunkte sind für a>3 abstoßend.
Ab a>3 trat im Feigenbaum-Diagramm der Zweier-Zyklus auf. Sind x1 und x2 die Werte,
zwischen denen die Folge hin - und herpendelt, so läßt sich dies mathematisch so beschreiben:
.
)) führt auf die Gleichung:
![]() |
D>=0 für a>=3 |
![]() |
D>=0 für a>=3 |
| (f 2)´ (x*h ) | = f ´(x*t ) f ´(x*h ) |
| = (a-2ax*t )(a-2ax*h ) | |
| = -a2 + 2a + 4 |
Fixpunkte sind anziehend, wenn | -a2 + 2a +4 | < 1 . Dies ist der Fall für 3 < a < 1 +
Nach diesem Muster lassen sich die weiteren Bifurkationsstellen berechnen, wenngleich der Rechenaufwand enorm ansteigt. Die ersten 4 Stellen sind:

3,49948; 3,54409...; 3,56441...
Am Schaubild der Iterierten für verschiedene Werte von a läßt sich ein typischer Entstehungsprozeß der Bifurkation
sichtbar machen. Betrachtet man die Kurven für Werte von a beim Durchgang durch eine Bifurkationsstelle, dann wird die Steigung der
Kurve in dem anziehenden Fixpunkt betragsmäßig größer als 1, dieser Fixpunkt wird abstoßend, während
gleichzeitig in der Umgebung des alten Fixpunktes zwei neue anziehende entstehen. Dieses typische Muster der "Heugabelverzweigung", die an
jeder Bifurkationsstelle auftritt, ist in der unten stehenden Figur zu sehen.
Dabei wird dem bisherigen Parabelzeichnungsprogramm aus dem 3.Kapitel einfach (in der Prozedur Schaubild_zeichnen) die Verkettung
f 2(x) = f( f(x) ) hinzugefügt:
| Listing 7 : Ergänzung zu Listing 4 (Kap. 3) (2_ITER.PAS) |
Zunächst zeigen wir unten ein vollständiges Bild, danach in drei Ausschnitten die Entstehung zweier anziehender Fixpunkte.



Wie in Kapitel 5 schon dargestellt, ist das Chaos immer wieder durch weiße Streifen, sogenannte Fenster, unterbrochen.
Für a
3,83 ist ein solches Fenster besonders deutlich erkennbar. Wird der Bereich um diesen Wert im
Feigenbaumdiagramm vergrößert (siehe Figur unten), so sehen wir nicht nur drei "Fixpunktstränge", sondern auch
Selbstähnlichkeit. Bei jeder Vergrößerung werden neue kleinere Kopien des gesamten Diagramms sichtbar. Im wesentlich
kleineren Maßstab können wir das vollständige Szenario von Periodenverdoppelung, Chaos und Bänderspaltung entdecken.
(Die folgende Zoomfolge ist der Literaturangabe [4], Seite 191 entnommen.)
![]() |
1 |
| a: 3,5699 bis 4 | |
| 0 |
![]() |
0,558 |
| a: 3,828 bis 3,857 | |
| 0,443 |
![]() |
0,508 |
| a: 3,8476 bis 3,8498 | |
| 0,491 |
Zur Bestimmung des Dreier-Zyklus muß man die Fixpunkte der dreifach iterierten Funktion f 3
Als Ergebnis erhält man den Wert a=1 +
(
3,83 )
Wir untersuchen die Entstehung dieses Dreier-Zyklus anhand des Schaubildes von f 3. Für verschieden Werte in der
Umgebung von 3,83 lassen wir die Schaubilder der dritten iterierten Funktion zeichnen. Dabei stellen wir fest, daß genau für den
berechneten Wert 1 +
alle drei Extrempunkte der Kurve die erste Winkelhalbierende berühren. Vergrößern wir die Werte
für a nur ein wenig, dann sehen wir auf dem Bildschirm, wie aus dem Berührpunkt mit der ersten Winkelhalbierenden zwei neue
Schnittpunkte entstehen, von denen einer ein anziehender und der andere ein abstoßender Fixpunkt wird. Diesen Vorgang nennt man
Tangentialbifurkation im Gegensatz zur Heugabelbifurkation bei den ersten Fixpunktsträngen, die ins Chaos führen. Die weitere
Periodenverdopplung erfolgt allerdings nach dem Prinzip der Heugabelbifurkation, wie man an dem Schaubild von f 6 für
a=3,84 und a=3,847 feststellen kann (s. Figur unten!). Es wurde sogar nachgewiesen, daß in jeder Umgebung von a=4 unendlich viele
Tangentialbifurkationen auftreten und daß zu jedem n
N ein Fenster mit der Zykluslänge n existiert. (siehe [3])
Zuerst wieder die entsprechende Prozedur:
| Listing 8 : Ergänzung zu Listing 4 (Kap. 3) (6_ITER.PAS) |




Statt der "normalen" logistischen Gleichung für das Feigenbaumdiagramm kann man auch noch die unten aufgeführten Funktionsgleichungen verwenden. (Die Funktionsterme zu den Beispielen sind über dem Bild abgedruckt.) In der Literaturangabe [3] sind die mathematischen Bedingungen für die Funktionen angegeben, damit ihre Iterationsfolgen zu einem Feigenbaumszenario führen. Es ist aber viel sinnvoller, die Schüler zuerst selbst auf Entdeckungsreise zu schicken. Sie müssen in dem Programm aus Kap. 5 nur die logistische Funktion durch eine selbst gefundene oder durch eine der unten angegebenen ersetzen.
f(x)=a*x*(1-x) f(x)=sin(a*x*(1-x)) |
f(x)=a/x/exp(a/x) |
Zum Thema "Chaos und Ordnung" hier noch ein Zitat nach Literaturangabe [4] (S.131):
"In der Wissenschaft hat man Chaos und Ordnung für lange Zeit als Gegensatzpaar angesehen. Für beide Begriffe sind spezielle
Untersuchungsmethoden und Theorien entwickelt worden. Naturgesetze wie das Newtonsche Gesetz oder das Keplersche Gesetz zeigen den
hohen Stellenwert, den die Ordnung in der Wissenschaft eingenommen hat.
Chaos hingegen wurde als vollkommen andere Seite der Natur verstanden, die durch einfache - und selbst durch komplizierte - Gesetze nicht
beschrieben werden kann.
Chaos galt also nicht als ein hoher Grad von Komplexität oder als komplexere Form der Ordnung, sondern als ein Zustand, in dem jegliche
Naturgesetze ihre Gültigkeit verlieren. Eine herausfordernde Wirkung hatte jedoch die Beobachtung, daß eine Vielzahl natürlicher
Systeme offenbar ohne Schwierigkeit von einem in den anderen Zustand Übergehen können: vom laminaren Fluß in einen turbulenten
Fluß, vom regelmäßigen in einen ungleichmäßigen Herzschlag, von Vorhersagbarkeit in Unvorhersagbarkeit.
Eine der großen Überraschungen, die wir bei der Untersuchung des quadratischen Iterators
pn+1 = r * pn * (1-pn)
erlebt haben, geht auf die Tatsache zurück, daß beide antagonistischen Zustände durch ein einziges Gesetz ausgedrückt
werden können. Eine noch größere Überraschung war die Entdeckung, daß es einen wohldefinierten Fahrplan gibt,
der uns von einem Zustand - von der Ordnung - in den anderen - ins Chaos - führt. "Fahrplan" bedeutet, daß es abrupte qualitative
Änderungen - sog. Verzweigungen - gibt, die den Übergang ins Chaos kennzeichnen."
| [1]Argyris u.a. : | Die Erforschung des Chaos, Braunschweig 1994 |
| [1]Argyris u.a. : | Die Erforschung des Chaos, Braunschweig 1994 |
| [2]Baumann : | Informatik für die Sekundarstufe II, Stuttgart 1992 |
| [3]Dufner : | Zum Lösungsverhalten logistischer Gleichungen, MNU-Heft Okt. 1994 |
| [4]Peitgen u.a.: | Chaos - Bausteine der Ordnung, Berlin 1992 |
| [5]Peitgen u.a. : | Bausteine des Chaos - Fraktale, Berlin 1992 |
| [6]Hermans A.: | Chaos im Mathematikunterricht ( PM 2/34 Jg.1992 S.81ff ) |
© 1997 by
J. Bentele
HTML File created by AK
viper@gus.bb.bw.schule.de
Zurück zur Homepage des Gymnasiums Unterrieden