Auch wenn es auf den ersten Blick vielleicht nicht so aussieht: Hinter den bizarren Formen, die 'Chaotify me!' erzeugt, steckt eine (simple) mathematische Formel. Die Geometrie dieser Formen nennt man fraktale Geometrie. Im Gegensatz zu den einfachen und regelmäßigen Grundformen der Schulgeometrie (Dreiecke, Rechtecke, Kreise, ...) muten die Bilder der fraktalen Geometrie geradezu chaotisch und dadurch irgendwie 'natürlich' an. Aber auch ihnen wohnt eine gewisse Ordnung inne, und gerade dieses Nebeneinander von Chaos und Ordnung macht den Reiz der Fraktale aus.
Computerprogramme zur Erzeugung fraktaler Bilder (sogenannte Fraktal-Generatoren) gibt es im Internet zu Hauf. Im Unterschied zu den gängigen Produkten ist 'Chaotify me!' in der Lage, aus einer Buchstabenfolge (einem Namen) ein Fraktal zu generieren.
'Chaotify me!' ist die Javascript-Fassung eines im Rahmen einer Projektwoche am Arnold-Janssen-Gymnasium in St.Wendel entstandenen C#-Programms.
Wie jede Computergrafik ist auch das von 'Chaotify me!' erzeugte Bild aus Pixeln (kleinen Bildpunkten) aufgebaut. Zu jedem einzelnen Pixel wird nun eine Zahlenfolge errechnet, deren Verhalten schließlich nach bestimmten Regeln über die Pixelfarbe entscheidet (z.B. könnte man das Pixel rot einfärben, wenn der Betrag der Zahlen im Laufe der Rechnung immer größer wird, blau wenn er immer kleiner wird).
Die Rechenvorschrift für die Zahlenfolge lautet für jedes Pixel gleich:
zn+1 = zn2+c.
D.h. ausgehend von einer Startzahl z1 wird
nach dieser Vorschrift die Zahl z1 zunächst quadriert, und dann
eine Konstante c addiert. (Die Konstante hängt übrigens von dem eingegebenen Namen ab.)
Das Ergebnis dieser Rechnung heißt z2. Dann verfährt man mit
z2 wieder genauso: Erst quadrieren und dann c addieren, man erhält
z3. Schließlich wird z3 quadriert und abermals c addiert...
Das Ergebnis der vorangehenden Rechnung ist also stets die Ausgangszahl für den folgenden
Rechenschritt, und in jedem Schritt rechnet man stets nach dem gleichen Schema
(so etwas nennt man Iteration). Die Iteration wird durchgeführt bis zum
Erreichen von z100.
Aber wenn doch die Rechenvorschrift für alle Pixel gleich ist, wieso haben dann nicht alle Pixel die gleiche Farbe? Das liegt daran, dass die Rechenvorschrift für jedes Pixel mit einer anderen Zahl startet. So wie jedem Punkt auf einer Zahlengeraden eindeutig eine reelle Zahl entspricht, so kann man jedem Pixel eindeutig eine komplexe Zahl z zuordnen, die dann als Ausgangszahl z1 für die Iteration hinter diesem Pixel dient, letztlich also über die Farbe des Pixels (mit) entscheidet.
So wie alle reellen Zahlen zusammen die Zahlengerade ausfüllen, füllen die komplexen Zahlen in
ihrer Gesamtheit eine ganze Ebene (in der die übliche Zahlengerade enthalten ist) aus.
Denkt man sich die Ebene mit einem Koordinatensystem überzogen, dann liegen alle reellen Zahlen
auf dessen x-Achse.
Jeder Punkt in diesem zweidimensionalen Koordinatensystem entspricht nun einer komplexen Zahl.
Da man einen Punkt durch Angabe des x- und y-Wertes eindeutig identifizieren kann, besteht also
eine jede komplexe Zahl z aus zwei reellen Zahlen: z = (x|y).
Aber wie rechnet man mit komplexen Zahlen? Dazu verwendet man statt der üblichen Koordinatendarstellung
(x|y) die Schreibweise z = x+iy für eine komplexe Zahl z.
Dabei steht i für die sogenannte imaginäre Einheit. Sie liegt an der Stelle (0|1), also
außerhalb der reellen Zahlengeraden und hat die außergewäöhmliche Eigenschaft
i2 = -1. (Ja, richtig gelesen: minus eins! Eine reelle Zahl könnte das niemals erfüllen.)
Um mit zwei komplexen Zahlen, nehmen wir 5+i4 und 3+i9 als Beispiel, zu rechen, verfährt man so,
als wäre i eine Variable, also z.B.
(5+i4) + (3+i9) = 8 + i13
Einzig beim Multiplizieren hat man zu beachten, dass i2 = -1 ist, also:
(5+i4) · (3+i9) = 15+i12+i45+i236 =
15+i12+i45-36 = -21+i57
Das Besondere an den komplexen Zahlen: Jede quadratische Gleichung hat darin genau zwei Lösungen
(mit Vielfachheiten gezählt).