Klaus Rohwer

Fraktale selbst berechnen

Zur Startseite/Fotogalerie >
Zur Fraktal-Galerie >
Klaus Rohwers andere Seiten >


Startseite/Fotogalerie

Fraktal-Galerie

Was sind Fraktale?

Selbstähnlichkeit

Animierte Fraktale

Mit Fraktalen verfremdete Fotos

Der Künstler

Links

Rechts

Datenschutzerklärung

Benutzungsbedingungen

Kontakt/Impressum

Klaus Rohwers andere Seiten

Sie möchten die Fraktale aus meinem Kalender "Fraktale zum Selbstnachrechnen" selbst nachrechnen? Hier finden Sie zwar kein fix- und fertiges Programm dafür, das Sie nur noch herunter laden müssen, aber eine Anleitung, um ein solches Programm selbst zu schreiben. Programmierkenntnisse müssen Sie allerdings schon mitbringen, in welcher Programmiersprache ist dabei fast egal. Nur sollte die Sprache mit komplexen Zahlen umgehen können, sonst wird es - nun ja: komplex. Anderseits ist das Programmieren eines Programms für die Erzeugung von Fraktalen eine sehr gute Übung. Sie können ganz einfach anfangen und später immer mehr Möglichkeiten hinzufügen.

Damit Sie wirklich unabhängig von der konkreten Programmiersprache sind, habe ich ein Flussdiagramm zur Fraktal-Berechnung erstellt, das Sie unten finden. Die Werte der im Flussdiagramm genannten Parameter finden Sie auf jedem Kalenderblatt, bzw. die vom Titelbild gleich hier rechts.

Mit diesem Programm können Sie dann echte Fraktale berechnen, keine Pseudo-Fraktale, wie es viele der Programme tun, die man im Internet finden kann. Sie können die Parameter aus dem Kalender als Ausgangspunkt für eigene Variationen nehmen und auf diese Weise eigene Fraktale kreieren. Haben Sie keine Angst, dass Sie an Grenzen kommen könnten, es gibt unendlich viele Fraktale! Aber Vorsicht: nicht alles, was aus Ihrem selbstgeschriebenen Programm rauskommt, ist notwendigerweise ein echtes Fraktal. Insbesondere werden Sie nur dann Fraktale erhalten, wenn Sie eine nichtlineare Formel in das Programm hineingeben. Wenn nicht, dann nicht!

Kalender

Hier die Parameter zum nebenstehenden Titelbild des Kalenders:

Titel: Fraktales Inferno
Formel: z*sinh(z)+c
Mandelbrot-Menge
Anzahl Iterationen: 100
Abbruchkriterium: 10
Mittelpunktskoordinaten: (-1,0302; 0,202)
Kantenlänge: 0,15443

Flussdiagramm

Flussdiagramm

Wenn Sie auf das Flussdiagramm (rechts-)klicken, können Sie es als PDF herunterladen.

Als erstes müssen aus den bei jedem Fraktal angegebenen Mittelpunktskoordinaten und Kantenlängen die Eckpunkt-Koordinaten berechnet werden. Die Koordinaten müssen als in der komplexen Ebene liegend aufgefasst werden. Dabei gilt für jeden Punkt (x;y) innerhalb des von den Eckpunkten aufgespannten Quadrats z = x + i*y oder anders ausgedrückt x = Re(z), y = Im(z). i ist dabei natürlich die imaginäre Einheit (Wurzel aus -1). Hiermit wird ein Feld C mit den Koordinaten jedes Pixels als komplexe Zahl aufgestellt. Außerdem wird ein Integer-Feld N benötigt, das die selbe Größe wie C hat, aber zunächst mit Nullen gefüllt ist.

Danach verzweigt sich das Programm, je nachdem, welchen Fraktal-Typ (Mandelbrot-Menge, Julia-Menge oder Newton-Fraktal) man berechnen möchte. Für die Berechnung einer Mandelbrot-Menge wird C in c kopiert. Ein gleichgroßes Feld z wird mit Nullen vorbesetzt. Bei Julia-Mengen gibt es ein Wertepaar, das als "Startwerte" angegeben ist. Man kann die Startwerte als Koordinaten eines Punkts in der komplexen Ebene auffassen, der entweder in einer Mandelbrotmenge liegen kann oder auch nicht. Liegt er in einer Mandelbrot-Menge, so wird die zugehörige Julia-Menge zusammenhängend sein, wenn er das nicht tut, so ist die zugehörige Julia-Menge nicht-zusammenhängend. Aus dem Startwertepaar (s1;s2) wird nach c = s1+i*s2 eine komplexe Konstante c berechnet, die diesmal - anders als bei Mandelbrot-Mengen - kein Feld ist. Die Variable z dagegen bleibt ein komplexes Feld, dem seinerseits der Inhalt von C zugewiesen wird.

Von hier ab geht es für Mandelbrot- und Julia-Mengen wieder gemeinsam weiter. In einer weitere Variablen z0 wird der Anfangswert von z für den späteren Vergleich festgehalten. Jetzt kommt eine Schleife, die so oft durchlaufen wird, wie die Anzahl der Iterationen im Kalender angibt. Innerhalb der Schleife wird die angegebene Formel als Funktion f auf jedes Element von z angewandt und somit ein neues z erzeugt. In der Formel tauchen sowohl z als auch c wieder auf, die wir zu Anfang vorbesetzt hatten. Dann kommt das Feld N ins Spiel: hier wird für jedes Pixel, bei dem der Absolutbetrag von (z-z0) kleiner als das Abbruchkriterium ist, der Wert inkrementiert. In den meisten Fällen liefert das Feld N später das eigentliche Bild.

Sobald die Zahl der Iterationen abgearbeitet ist, kann das Fraktal dargestellt werden. Hierbei sollte man allerdings nicht nur auf N fixiert bleiben, sondern auch mal einen Blick auf den Realteil, den Imaginärteil oder den Absolutbetrag von z werfen - oder gar eine Kombination daraus. Es kann auch sinnvoll sein, den Logarithmus des Ergebnisses zu betrachten. Dabei muss man sich allerdings überlegen, wie man mit negativen und Null-Werten im Ergebnisfeld umgehen will. Die Darstellung geschieht in der Weise, dass man eine Farbpalette aufstellt, die jedem Wert (oder Werteintervall) in der Ergebnismatrix eine Farbe zuweist.

Es fehlen noch die Erläuterungen zur Berechnung von Newton-Fraktalen. Hier wird c nicht benötigt und einfach auf Null gesetzt. Wie bei den Julia-Mengen wird z das Feld C zugewiesen. Die Anfangswerte von z werden wieder in z0 festgehatlten. Auch diesmal kommt eine Schleife, die so oft durchlaufen wird, wie die Anzahl der Iterationen im Kalender angibt. Auch hier wird innerhalb der Schleife die angegebene Formel als Funktion f auf jedes Element von z angewandt und somit ein neues z erzeugt. In der Formel taucht zwar z, nicht aber c auf. Das Abbruchkriterium wird hier etwas anders verwendet als bei Mandelbrot- und Julia-Mengen: An jeder Stelle, an der der Absolutbetrag von (z-z0) den Kehrwert des Abbruchkriteriums überschreitet, wird das Feld N inkrementiert. Innerhalb der Schleife wird hier auch z als neues z0 genommen. Das bewirkt, dass sich die Auswertung des Abbruchkriteriums auf die Änderungen von z bezieht.

Nach Ende der Schleife kann wieder eins der Felder N, abs(z), Re(z), Im(z) oder eine (Linear-)Kombination daraus als Ergebnis dargestellt werden. Auch hier kann man wieder den Logarithmus verwenden.

Ich selbst habe es als sehr nützlich empfunden, dem Programm eine graphische Bedienungsoberfläche (GUI) zu gönnen.


HTML-Code geprüft
und für korrekt befunden:

Valid HTML 4.0!