Chaos und Apfelm„nnchen Wer und was ist eigentlich Chaos ? Wie schmeckt es ? Chaos ist in dynamischen Systemen zu finden, in die keine stochastischen (zufallsabh„ngigen) Faktoren einwirken und trotzdem nicht vorhersagbar sind. Eigentlich widerspricht es dem gesunden Menschenverstand, daá etwas, was nur nach festen Regeln erzeugt wurde, nicht vorhersagbar ist. Das ist auch prinzipiell richtig, aber praktisch werden sehr kleine nicht bercksichtigte Faktoren so sehr verst„rkt, daá nur eine kurzfristige Vorhersage m”glich, eine langfrtistige aber fast unm”glich ist. Ein gutes Beispiel hierfr ist das Wetter. In der Regel ist es richtig, was die Wetterfr”sche prognostiziert haben, aber h„ufig liegn sie mit ihren Vermutungen auch daneben. Wie kommen kommen Wettervorher- sagen zustande? Dafr hat man sich mal wieder die Natur als Bei- spiel genommen. Mutter Natur berechnet Tag fr Tag das Wetter an- hand aller nur erdenklichen Daten. Dies versucht man mithilfe von mathematischen Modellen nachzumachen. Also fttert man den Compi mit allen zur verfgung stehenden Daten und der berechnet das Wetter dann fr die n„chste Stunde. Die Ergebnisse dieser Rech- nung nimmt er dann als neue Eingabedaten und rechnet noch eine Stunde weiter. Dies wiederholt sich nun 24mal. Jetzt wird deut- lich, daá, wenn eine winzig kleine Abweichung nach der ersten Stunde, verursacht durch z.b einen nicht zur Verfgung stehenden Wert, auftritt, sich diese kleine Ungenauigkeit immer mehr ver- gr”áert, so daá der Wert fr den n„chsten Tag absolut falsch ist. Das eben kennengelernte Verfahren, die Ausgabedaten der 1.Rech- nung als Eingabedaten der 2.Rechnung zu verwenden, nennt sich Rckkopplung oder Iteration. Iteration bedeutet: Mit bestimmten Daten wird ein Rechenprozess ausgefhrt. Die Ergebnisse dieses Rechenprozesses werden in dem n„chsten Durchlauf als Eingabedaten verwendet. Dieses Chaos ist bei vielen Prozessen zu erkennen: - in der Wirtschaft - bei Geburtsraten und Epedemien - bei Wasserwirbeln, Laser, Gehrinstr”mungen,etc. Es gibt einfachen mathematische Funktionen, mit denen man mit Hilfe der Rckkopplung genau diesen šbergang vom berechenbaren zum Unberechenbaren, zum CHAOS !!!, grafisch darstellen kann. Dadurch kann man versuchen zu berechnen, wann eine Vorhersage m”glich ist. Attraktoren sind "Anziehugs"- Punkte, Linien, Fl„chen und Vo- lumen, auf die sie ein dynamischer Prozess einpendelt. Man unter- scheidet dabei endliche und unendliche Attraktoren. Dazu folgende Beispiele : Ein Fadenpendel kommt aufgrund der Luftreibung irgendwann in ENDLICHER Zeit zum Stillstand. Der tiefste Punkt der Pendelbewe- gung ist also der Attraktor. Wenn man untersucht, zu welchen Werten die Iteration einer Folge fhrt, dann nimmt man unterschiedliche Werte als Eingabedaten (Z(0), die in der Klammer stehende Zahl oder die Variable ist ein Index bzw. eine Indexvariable!) und iteriert sie einige male auf der Folge und vergleicht dann die Ausgabedaten. Untersucht man, zu welchen Werten die Iteration der Folge X(n+1) = X(n)^2 fhrt, so stellt man fest, daá fr Betrag von (X(0)) < 1 die Folge sich Null n„hert und fr Betrag von (X(0)) > 1 gegen Unendlich l„uft. In diesem Fall liegen ZWEI Attraktoren vor: Null und Unendlich. Man kann sogar die Grenze angeben : X(0) = 1. Denkt man sich einen Kreis mit dem Radius 1, so ist es offensichtlich, daá alle Punkte, die innerhalb des Kreises liegen, den Attraktor Null haben,alle auáerhalb dieses Kreises liegen im Einfluábereich des Attraktors Unendlich. Die Grenze ist der Kreisumfang. So weit, so gut... Nun wissen wir schon, was eine Iteration und ein Attraktor ist. Aber was hat das alles mit Apfelm„nnchen zu tun ? Also, ich glaube, um das zu erl„utern, mssen wir erstmal etwas ber die komplexen Zahlen "lernen". Diejenenigen die das schon kennen, k”nnen diesen Abschnitt ruhig berspringen, da hier nur ganz allgemeine Regeln zu den komplexen Zahlen erkl„rt werden. Komplexe Zahlen bestehen aus zwei Teilen. Der erste Teil ist eine REAL-Zahl (var x : Real), der zweite Teil eine REAL-Zahl, die mit Wurzel aus (-1) multipliziert wird. Wurzel aus (-1) hat einen Namen bekommen, und zwar klein i. Die komplexe Zahl wird folgen- dermaáen geschrieben: 1.Teil(Realteil) + 2.Teil(Imagin„rteil, d.h. unvorstellbar, da Wurzel aus (-1) nicht definiert ist). Z.B.: 0+0*i oder 3+7*i oder 3+Wurzel aus (7)*i. Diese Zahlen kann man nun darstellen, und zwar in der Gauáschen Zahlenebene. Die Gauásche Zahlenebene ist ein Koordinatensystem, bei dem auf der X-Achse der Realteil, auf der Y-Achse der Imagin„rteil der komplexen Zahl zu finden ist. Jetzt kann man die komplexen Zahlen, wie bei "normalen" Zahlen gewohnt, in dem Koordinatensystem durch einen Punkt darstellen. Jetzt mal endlich was von den Apfelm„nnchen... Jeder Punkt in der Gauáschen Zahlenebene hat einen bestimmten Abstand zu dem Ursprung. Wenn nun dieser Abstand zum Ursprung nach 100 Iterationen auf der Folge Z(n+1) = Z(n)^2 + C (n ist ein Index, der die n. Iteration auf der Folge angibt; das Ergebnis ist die Zahl Z(100)) gr”áer ist als 2, dann liegt der Punkt im Einfluábereich des Attraktors Unendlich. Aber wenn nach der 100. Iteration die Zahl Z(100) kleiner ist als 2, dann NIMMT MAN AN, daá der Punkt zu dem Attraktor NULL geh”rt. Ganz korrekt ist es nicht bereits nach 100 Iterationen das zu behaupten, da z.B. nach der 105. Iteration mehr Punkte die 2er- Grenze berschritten h„tten, aber je mehr Iterationen, desto gr”áer der Rechenaufwand, also wird auch die Rechenzeit gr”áer. Damit der Rechenknecht mit der Eben genannten Folge Z(n+1) = Z(n)^2 + C etwas anfangen kann, muá sie soweit umgeformt werden, daá kein i mehr in ihr enthalten ist, da Wurzel aus -1 (i) nicht def. ist! Mithilfe spezieller Rechenregeln fr komplexe Zahlen habe ich es nun soweit umge- formt, daá folgende Gleichungen (Plural ist schon richtig, denn wegen der speziellen Regeln sind aus der einen zwei entstan- den...) entstanden sind: (Zr(n) bedeutet: Realteil der komplexen Zahl Z mit der Indexva- riablen n) (Zi(n) bedeutet: Imagin„rteil der komplexen Zahl Z mit der Index- variablen n) Zr(n+1) = Zr(n) * Zr(n) + Zi(n) * Zi(n) + Cr Zi(n+1) = 2 * Zr(n) * Zi(n) + Ci Damit wir jetzt dem Compi die Aufgabe stellen k”nnen, mssen wir wissen, was C und was Z ist. Um das Apfelm„nnchen (eingentlich MANDELBROTMENGE, da sie von dem franz. Mathematiker Benoit B. Mandelbrot entdeckt wurde) zu er- zeugen, legen wir ein Raster ber den Bildschirm. Jede Bildschirmkoordinate ist ein Rasterfeld. Der zu untersuchen- de Bereich (in dem sich das Apfelm„nnchen befindet) geht auf der X-Achse von -2 bis 1.3 und auf der Y-Achse von 1.25 bis -1.25. Um jetzt jedem Rasterpunkt seine Koordinate zu geben, berechnen wir zuerst die Spalten und Zeilenbreite des Koordinatensystems, indem wir den X-Bereich durch die Anzahl der X-Koordinaten des Bild- schirmes (z.B. 640 bei VgaHI) teilen und in eine Variable schrei- ben. Das gleiche Verfahren wenden wir bei der Y-Achse an (bei VgaHI durch 480 teilen). Jetzt berechnet man die Koordinate eines Punktes folgendermaáen : Beispiel: Punkt : (138/11) X-Bereich : 3.3 {1.3+2} / 640 = 0.0051563 Einheiten pro Grafikp. auf der X-Achse Y-Bereich : 2.5 {1.25+1.25} / 480 = 0.0052083 Einheiten pro Grafikp. auf der Y-Achse (Die beiden Werte sollten m”glichst bereinstimmen , da sonst die Verzerrung des Apfelm„nnchens zu groá wird) Berechnung des Wertes der 138. X-Koordinate : -2 + 138 * 0.0051563 = -1.2884306 Berechnung des Wertes der 11. Y-Koordinate : 1.25 - 11 * 0.0052083 = 1.1919167 => Bildschirm-Punkt (138/11) = Koordinatenpunkt (-1.2884306/1.1919167) Dieser Koordinatenpunkt ist jetzt das C in der Berechnungsformel, und zwar ist der X-Wert der Realteil und der Y-Wert der Imagi- n„rteil der komplexen Zahl C. Jetzt fehlt nur noch die komplexe Zahl Z mit dem Real- und Imagi- n„rteil. Wie bei dem Beispiel mit dem Wetter, sind bei dieser Folge die Z-Teile erst die Eingabe-, dann Ausgabe-, dann wieder Eingabedaten, usw... Bei der 1. Iteration setzt man das Z einfach auf Null (beide Teile =>0+0i). Der Vorgang der Iteration wird 100 mal wiederholt, bis man die Zahl Z(100) hat, dann kontrolliert man zu welchem Attraktor diese Zahl (also der Punkt) geh”rt, und f„rbt ihn dementsprechend ,z.B. endlicher Attraktor schwarz, un- endlicher Attraktor weiá. So wie hier beschrieben kann man das nun nicht programmieren, da der 1.Punkt nach der 100. Iteration einen sehr groáen Wert liefert, so daá TP mit der Fehlermelung "Floating Point overflow" abbricht. Also kontrolliert man in dem Programm nach jeder Iteration, ob der Wert ber zwei gestiegen ist. Wenn das der Fall ist, wird die Variable UnendlicherAttraktor auf true gesetzt. Aber wenn nach der 100. Iteration immer noch nicht die 2er Grenze berschritten wurde, wird Unendlicher- Attraktor auf false gesetzt. Sp„ter wird entsprtechend gef„rbt. Jetzt das Listing, zum zeichnen eines s/w - Apfelm„nnchens : program Apfeldemo; uses crt,graph; var start_r,start_i,end_r,end_i : real; spalt_r,spalt_i : real; max_x,max_y,i,j,k : integer; Cr,Ci,Zr,Zi,Zr_n,Zi_n : real; {Zi_n : Imagin„rteil} {von Z_neu} treiber,modus : integer; unendlicherAttraktor : boolean; procedure iterationen; begin for k := 1 to 100 do begin {100 Iterationen auf jedem Punkt} Zr_n := Zr * Zr - Zi * Zi + Cr; {Das Ergebnis der Umformung der Apfel-} Zi_n := 2 * Zr * Zi + Ci; {m„nnchen - Folge Z(n+1) = Z(n)^2 + C} Zr := Zr_n; {Ausgabedaten(Ergebnis) werden zu} Zi := Zi_n; {Eingabedaten} if sqrt(Zr*Zr + Zi*Zi) > 2 then begin {šberprfung des Abstandes} unendlicherAttraktor := true; {mit Hilfe von Phytagoras} exit; end; end; unendlicherAttraktor := false; end; procedure Welcher_Attraktor; begin start_r := -2; end_r := 1.3; start_i := 1.25; end_i := -1.25; {Der Bereich kann beliebig gesetzt werden,aber in diesem Bereich ist das Apfelm„nnchen zu finden} max_x := 640; max_y := 480; {Die Anzahl der Koordinaten auf X- und Y-Achse} Spalt_r := (end_r - start_r) / max_x; spalt_i := (end_i - start_i) / max_y; {Berechnung der Spaltengr”áe des Rasters} for i := 0 to max_x do begin {Jeder Bidschirmpunkt wird untersucht} Cr := start_r + i * spalt_r; {Jeweils wird die Koordinate des Rasters berechnen} for j := 0 to max_y do begin putpixel (i,j,15); Ci := start_i + j * spalt_i; Zr := 0.0; Zi := 0.0; {Das Z wird auf Null gesetzt} Iterationen; if unendlicherAttraktor then putpixel (i,j,15) {"...(i,j,k)" fr} else putpixel (i,j,16); {farbige Darstellung} {F„rbung nach Art des Attraktors} end; end; end; begin treiber := detect; initgraph (treiber,modus,''); welcher_Attraktor; readln; end. Bei diesem Programm dauert die Erschaffung eines Apfelm„nnchens sehr lange. Man kann, um Zeit zu sparen, die Koordinaten auf z.B. max_x := 100; max_y := 100; setzen, so daá das Programm ca. 30.72 mal schneller wird! Auch dauert das Wurzel ziehen sehr lange. Stattdessen kann man die Phytagoras-Gleichung folgendermaáen um- formen : statt if sqrt(Zr*Zr+Zi*Zi) > 2 then begin... if Zr*Zr+Zi*Zi > 4 then begin... Das bewirkt eine erhebliche Beschleunigung! Bunte Apfelm„nnchen erh„lt man, wenn man Iteration fr Iteration eine andere Farbe w„hlt. Z.B. kann man dann die Punkte, die nach der 1.Iteration den unendlichen Attraktor offenbaren, blau f„rben. Die nach der 2. Iteration grn, ... . Auf das Programm bezogen bedeutet das, daá man "putpixel (i,j,k)" {k ist die Z„hlvariable der Iterationen} einfgt... Natrlich m”chte man seine gezeichneten Apfelm„nnchen gerne ab- speichern und dann wieder laden, was weitere Optionen fr ein gu- tes Apfelm„nnchenprogramm w„ren. Auáerdem kann man, indem man den Bereich ver„ndert (verkleinert) in die Mandelbrotmenge "Zoomen". Aber man sollte darauf achten, daá man keinen Ausschnitt er- wischt, in dem nur eine Farbe vertreten ist, denn das ist sehr langweilig, weil dann auch in der Vergr”áerung nur eine Farbe zu sehen ist, irgendwie logisch... Aber direkt am Rand des Apfelm„nnchens sind wundersch”ne Gebilde zu finden !!! Hier eine Stelle, die IN FARBE sehr gut aussieht : Start_r : -1.7681516673 End_r : -1.7681379126 Start_i : 0.0051910676297 End_i : 0.0051900322495 Diese Methode (durch ausprobieren gute Stellen zu finden) ist na- trlich sehr umst„ndlich. Besser w„re eine Methode, bei der man ein kleines K„stchen ber das Apfelm„nnchen mit den Cursortasten steuert, und wenn man Return drckt vergr”áert der Compi genau diesen Ausschnitt. Viel Spaá... SkyLab