Fraktale

Seit rund zwei Jahren erstelle ich gelegentlich Fraktale mit selbstprogrammierter Software. Fraktale sind grob gesagt unendlich komplexe Objekte, welche auf verschiedene Weisen selbstähnlich sind; Dies bedeutet, dass wir ein Fraktal beliebig vergrössern können und wird immer neue Strukturen vorfinden, welche dem ganzen Fraktal ähnlich sind.

Alle meine Fraktal-Bilder in meinem flickr-album:
Fraktale

Ein typisches Beispiel ist das Mandelbrot-Fraktal, benannt nach Benoît Mandelbrot, Vater der fraktalen Geometrie. Das folgende Bild zeigt eines der ersten Bilder, welches ich mit meiner Software erzeugte. Dargestellt ist ein Teil des Mandelbrot-Fraktals.

mandelbrot fractal
Mandelbrot-Fraktal, programmiert in C# anfangs 2015. Meine Software verwendet einen ähnlichen Farbverlauf wie die kommerzielle Software ultra fractal.

Inhalt

Mathematischer Hintergrund

Leser, welche hauptsächlich an den computergenerierten Bildern interessiert sind, können diesen Abschnitt getrost überspringen.

Beliebig komplexe geometrische Objekte können stets aus kleineren, einfacheren Teilen zusammengebaut werden. Der Rand eines Dreiecks besteht zum Beispiel aus drei Linien. Weil die Linien, welche den Rand bilden, eindimensional sind, ist der Rand des Dreiecks ebenfalls eindimensional.

Alle endlich komplexen Objekte können aus einer endlichen Anzahl ebenfalls endlich komplexer, einfacherer Teile konstruiert werden. Die Dimension des konstruierten Objekts entspricht dann der Dimension der einzelnen Teile.

Unendlich komplexe Objekte können ebenfalls aus endlich komplexen Teilen konstruiert werden. Nur wird jetzt eine unendliche Anzahl dieser Teile benötigt und die einzelnen Teile müssen infinitesimal klein sein. Es kann sein, dass die Dimension des konstruierten Objekts grösser als die Dimension der Teile ist. Ist dies der Fall, nennen wir das Objekt ein Fraktal. Fraktale sind häufig selbstähnlich. Das heisst, das Fraktal kann sich selber enthalten. Weil Fraktale unendlich komplex sind, können wir beliebig weit in ein Fraktal hineinzoomen und werden immer mehr potentiell selbstähnliche Strukturen finden.

Wir sahen, dass die Dimension eines Fraktals grösser als die Dimension seiner Teile ist. Genau genommen, übertrifft die Hausdorff-Dimension des Fraktals seine topologische Dimension. Unter topologischer Dimension verstehen wir die Dimension seiner Teile. Die Hausdorff-Dimension eines selbstähnlichen Fraktals kann folgendermassen berechnet werden:

Die Hausdorff-Dimension muss nicht unbedingt ganzzahlig sein. Wir betrachten dazu ein Beispiel, die Koch-Kurve:

Koch curve
Konstruktion der Koch-Kurve. Gestartet wird mit einer Linie (oben links). Der mittlere Teil der Linie wird durch zwei Seiten eines gleichseitigen Dreiecks ersetzt. Es entsteht eine Kurve mit vier Segmenten (oben rechts). Jedes segment wird nun gleichermassen weiter unterteilt (unten links, unten rechts). Nach unendlich Schritten entsteht die Koch-Kurve. (Bild: Wikipedia)

Die Grafik zeigt die ersten vier Schritte der Konstruktion der Koch-Kurve aus einer Linie. Natürlich müsste ein Schritt unendlich mal wiederholt werden, um die endgültige Kuch-Kurve zu erhalten. Bei jedem Schritt werden dem Objekt vier selbstähnliche Teile hinzugefügt (aus dem roten Pfeil im ersten Schritt werden vier rote Pfeile im zweiten Schritt). Die Teile werden dabei um einen Faktor drei kleiner, als der ursprüngliche Teil (die Linien unter den Pfeilen von Schritt zwei sind genau ein Drittel der Linie unter dem Pfeil in Schritt eins). Die Dimension der Koch-Kurve ist demnach ln(4)/ln(3) ≈ 1.2619.

Zusammenfassend lässt sich sagen, dass Fraktale unendlich komplexe und meist selbstähnliche Objekte sind. Viele Fraktale können gemäss einfachen Regeln gezeichnet werden. Je genauer das Bild eines Fraktals werden soll, desto mehr Rechenaufwand wird benötigt. Es bietet sich daher an, Computer zu verwenden.

Mandelbrot-Fraktal

Die Mandelbrot-Menge ist eine Untermenge der komplexen Zahlen. Vereinfacht kann man sich komplexe Zahlen wie zweidimensionale Zahlen vorstellen: Während gewöhnliche Zahlen (Reelle Zahlen) auf einer Linie aufgelistet werden können, müssen komplexe Zahlen in einer Fläche, der komplexen Ebene eingetragen werden. Jeder Pixel in einem Bild der Mandelbrot-Menge entspricht einer spezifischen komplexen Zahl.

Wir können für jede beliebige komplexe Zahl c bestimmen, ob sie Teil der Mandelbrot-Menge ist, indem wir die folgende Zahlenfolge betrachten:

Alle Zahlen c, für welche die rekursive Folge divergiert, befinden sich nicht in der Mandelbrot-Menge. Die Zahlen der Mandelbrot-Menge sind demnach alle c, für welche die Folge beschränkt ist. Das Mandelbrot-Fraktal ist die Grenze zwischen den Zahlen, welche Teil der Menge sind und denen, welche ausserhalb liegen.

Es ist in der Regel unmöglich, mit Sicherheit zu bestimmen, ob die Folge für eine gegebene Zahl c divergiert, ohne unendlich Berechnungen durchzuführen; Wir begnügen uns daher mit einer Approximation: Wenn nach einer maximalen Anzahl Iterationen die Folge noch nicht divergierte, befindet sich die Zahl in der approximierten Mandelbrot-Menge. Je grösser die maximale Iterationszahl, desto genauer ist die Näherung und desto mehr Details kommen zum Vorschein.

Die Folge ist beschränkt, wenn die Magnituden aller z kleiner als 2 bleiben, denn sobald |z|>2, divergiert die Folge.

Die folgende Abbildung zeigt, wie die Mandelbrot-Menge relativ zur reellen und imaginären Achse positioniert ist.

Mandelbrot axes
Die Mandelbrot-Menge reltiv zu den Achsen der komplexen Zahlenebene. (Bild: Wikipedia)

Um die Bilder der Menge ansprechender zu gestalten, können wir den Zahlen verschiedene Farben geben, je nachdem wie lange es dauerte, bis die Folge divergierte. Alle Zahlen, für welche die Folge nicht divergiert, werden schwarz eingefärbt.

Bilder

mandelbrot detail
Detail des Mandelbrot-Fraktals. Dieses "kleine Manelbrot-Fraktal" befindet sich entlang der negativen reellen Achse bei Re(c) ≈ -1.75.

Die ersten beiden Bilder wurden mit meiner ursprünglichen, in C# geschriebenen Software erstellt. Später verbesserte ich diese, damit sie mittels Multithreading alle verfügbaren Prozessorkerne auslasten kann. Weil nun Bilder um ein Vielfaches schneller erzeugt werden konnten, begann ich die Auflösung der Bilder sowie die maximale Iterationszahl zu vergrössern. Die Software basiert auf Gleitkommazahlen mit doppelter Genauigkeit. Diese ermöglichen Zooms bis rund 1E-13. Die folgenden Bilder wurden alle mit der neuen Software erzeugt.

mandelbrot detail
Detail des Mandelbrot-Fraktals bei Re(c)= -1.99999911758738, Im(c)= 0. Zoom: 5.9E-13.
mandelbrot detail
Detail des Mandelbrot-Fraktals bei Re(c)= 0.432539867562512, Im(c)= 0.226118675951765. Zoom: 7.3E-14.
mandelbrot detail
Weiteres Detail (Position und Zoom unauffindbar).

Das folgende Bild hat eine Auflösung von 10000 mal 10000 Pixel. Das Bild in voller Auflösung kann hier gefunden werden.

mandelbrot detail
Detail bei Re(c)= -0.0452407411, Im(c)= 0.9868162204352258. Zoom: 6.8E-10.

Das nächste Bild des Mandelbrot-Fraktals hat eine Auflösung von 19200 x 10800, das heisst 207 Megapixel. Das Bild in voller Auflösung kann hier abgerufen werden.

mandelbrot detail
207-Megapixel-Bild des Mandelbrot-Fraktals.