Buddhabrot

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Buddhabrot mit 20.000 Iterationen

Das Buddhabrot ist eine spezielle Abbildung einer Menge und eng mit der Mandelbrot-Menge verwandt.

Ihren Namen bekam die Abbildung aufgrund ihrer Ähnlichkeit mit klassischen Darstellungen des meditierenden Gautama Buddha, mit Stirnpunkt (tikka) und seinem traditionellen Haarknoten (ushnisha).

Entdeckung[Bearbeiten]

Die Methode zum Rendern des Buddhabrot wurde von Melinda Green[1] entdeckt und später in einem Usenet-Beitrag von 1993 auf sci.fractals[2] beschrieben.

Schon vorher waren andere Wissenschaftler der Buddhabrot-Technik sehr nahegekommen. Im Jahr 1988 gab Linas Vepstas ähnliche Bilder an Clifford Pickover weiter, der sie in seinem Buch Computer, Pattern, Chaos, and Beauty veröffentlichen sollte. Dies führte zur Entdeckung der Pickover-Stalks (Garbe (Mathematik)#Halme und Keime). Pickover und Vepstas filterten jedoch nicht die nicht-divergierenden Trajektorien heraus, was aber notwendig ist, um die geisterhaft anmutenden Bilder zu erzeugen, die stark an hinduistische Kunst erinnern.

Green nannte das Bild zuerst Ganesh, weil ein indischer Mitarbeiter in dem Bild den elefantenköpfigen Gott Ganesha erkannte.[2]

Der Name Buddhabrot wurde später von Lori Gardi geprägt.[3]

Rendering-Methode[Bearbeiten]

Die Mandelbrot-Menge ist die Menge der Punkte c in der komplexen Ebene, für die die rekursiv definierte Folge

z_{n+1} = {z_n}^2 + c

mit z_0 = 0 beschränkt bleibt, also nicht gegen unendlich divergiert.

Das Buddhabrot wird gerendert, indem zunächst ein 2-dimensionales Array von Zählern erzeugt wird, wobei jedem Pixel des Bildes ein Zähler zugeordnet wird. Die Zähler werden mit Null initialisiert. Dann werden beliebig ausgewählte Punkte c durch die Mandelbrot-Funktion iteriert.

Punkte, die nach einer gewählten maximalen Anzahl von Iterationen gegen unendlich divergieren, und daher nicht zur Mandelbrot-Menge gehören, werden erneut durch die Mandelbrot-Funktion iteriert und die hinterlassene Spur in das Array eingetragen.

Nachdem eine große Anzahl von c-Werten iteriert wurde, werden Graustufen basierend auf den im Array gespeicherten Zählerständen ausgewählt. Das Ergebnis ist eine Dichteverteilung, die Regionen hervorhebt, in denen die Iterationswerte (z-Werte) auf ihrem Weg in die Unendlichkeit „die meiste Zeit verbringen“.

Das Bild kann auch als eine Wahrscheinlichkeitsverteilung angesehen werden: Für die hellen Regionen besteht eine höhere Wahrscheinlichkeit, dass Trajektorien durch die Region verlaufen, für die dunkleren Regionen eine geringere.

Nebulabrot
Anti-Buddhabrot

Nuancen[Bearbeiten]

Das Rendern einer Buddhabrot-Darstellung ist im Allgemeinen rechenintensiver als das eines gewöhnlichen Mandelbrotes. Dies ist teilweise darauf zurückzuführen, dass mehr Zufallspunkte iteriert werden müssen, als das Bild Pixel hat, um ein scharfes Bild zu generieren. Das Rendern stark vergrößerter Bereiche erfordert mehr Rechenzeit als bei gewöhnlichen Mandelbrot-Bildern, in denen ein Pixel direkt und unabhängig von der Vergrößerung berechnet werden kann. Umgekehrt kann ein Pixel in einem stark vergrößerten Bereich eines Buddhabrot durch Anfangspunkte beeinflusst werden, die weit außerhalb der eigentlich im Fokus liegenden Region liegen. Falls man nicht auf komplexere probabilistische Techniken[4] zurückgreifen möchte, ist die Darstellung eines vergrößerten Ausschnitt aus einem Buddhabrot lediglich das Ausschneiden des gezoomten Bereichs aus einem kompletten, sehr großen Rendering.

Die gewählte Anzahl der Iterationen hat einen starken Einfluss auf das Bild – höhere Werte ergeben ein spärlicheres, kontrastreicheres Bild, weil einige wenige Punkte eine große Anzahl von Pixeln durchqueren, bevor sie gegen Unendlich divergieren, was ihre Spuren mehr hervorhebt. Innerhalb einer niedrigeren Anzahl von Iterationen würden diese Punkte nicht divergieren, folglich nicht als divergent erkannt werden, und somit nicht in das Bild aufgenommen.

Green wurde später klar, dass dies eine einfache Art und Weise darstellt, Buddhabrot-Darstellungen zu färben. Dazu kombiniert man drei Graustufenbilder, die sich nur durch die maximale Anzahl der Iterationen unterscheiden, zu einem einzigen Farbbild. Die gleiche Methode wird in der Astronomie verwendet, um Falschfarbenbilder von Nebeln und anderen Himmelsobjekten zu erstellen.

Zum Beispiel könnte man ein Bild mit maximal 2000 Iterationen dem roten Kanal, ein Bild mit 200 Iterationen dem grünen Kanal und ein Bild mit 20 Iterationen dem blauen Kanal des RGB-Farbraums zuordnen, und so das Farbbild generieren. Buddhabrote, die man mit dieser Technik erzeugt, werden Nebulabrot genannt.

Das Plotten der Spuren derjenigen Punkte, die bis zu einer gewählten minimalen Anzahl von Iterationen (beispielsweise 1.000 oder 1.000.000) nicht divergieren, führt zu Darstellungen in denen unterschiedliche Bereiche des Buddhabrot im Detail besser sichtbar werden.[5]

Eine andere Technik ist, die Spuren nur derjenigen Punkte c aufzuzeichnen die Element der Mandelbrot-Menge sind – quasi eine Art Anti-Buddhabrot.


Buddhabrot-20I-2000.png
max. 20 Iterationen

Buddhabrot-100I-2000.png
max. 100 Iterationen

Buddhabrot-1000I-8000.jpg
max. 1.000 Iterationen

Buddhabrot-20000I-8000.jpg
max. 20.000 Iterationen

Buddhabrot-1000000I-G2-2000.png
max. 1.000.000 Iterationen

Beziehung zur logistischen Gleichung[Bearbeiten]

Buddhabrot und Bifurkationsdiagramm
Animation der Beziehung zwischen Anti-Buddhabrot und Bifurkationsdiagramm

Die Beziehung zwischen der Mandelbrot-Menge, definiert durch z^2+c und der logistischen Gleichung \lambda x(1-x) ist bekannt. Die beiden stehen in Relation durch die quadratische Transformation:

\begin{align}
c_r&=\frac{\lambda(2-\lambda)}{4}\\
c_i&=0\\
z_r&=-\frac{\lambda(2x-1)}{2}\\
z_i&=0
\end{align}

Der traditionelle Weg der Darstellung dieser Beziehung ist, das Bifurkationsdiagramm der logistischen Gleichung und die Mandelbrot-Menge unter Verwendung der Transformation zwischen c_r und \lambda, über einer gemeinsamen x-Achse und einer jeweils eigenen y-Achse aufzutragen.

Melinda Green entdeckte „durch Zufall“, dass das Anti-Buddhabrot die logistische Gleichung vollständig enthält. Beide Darstellungen basieren darauf, Spuren nicht-divergierender Punkte, die aus einem (beliebigen) Ausgangspunkt entspringen, auszuwerten. Die Iterationsfunktionen stehen über die oben angegebene Transformation in Beziehung. Es ist dann leicht ersichtlich, dass das Anti-Buddhabrot für  z^2+c , mit c=(\text {random},0) und z_0=(0,0), in der Ebene \{c_r,z_r\} das Bifurkationsdiagramm der logistischen Gleichung erzeugt, wenn man die angegebene Transformation verwendet. Für das Rendering wird z_0=(\text{random},0) gewählt. Zu beachten ist, dass die logistische Gleichung für alle z_{r0} letztlich die gleiche Spur generiert.

Da sowohl die Mandelbrot-Menge als auch die logistische Gleichung ein integraler Bestandteil des Anti-Buddhabrot sind, kann man jetzt eine dreidimensionale Beziehung zwischen beiden aufzeigen, indem man die 3D-Achsen \{c_r,c_i,z_r\} zu Hilfe nimmt. Die Animation zeigt das klassische Anti-Buddhabrot mit c=(\text{random},\text{random}) und z_0=(0,0), dies ist die 2D-Mandelbrot-Menge in der Ebene \{c_r,c_i\}, und das Anti-Buddhabrot mit c=(\text{random},0) und z_0=(0,0), dies ist das 2D-Bifurkationsdiagramm der logistischen Gleichung in der Ebene \{c_r,z_r\}. Wir drehen die Ebene \{c_i,z_r\} um die c_r-Achse, um zuerst die \{c_r,c_i\}– Ebene zu zeigen, dann drehen wir 90° in die \{c_r,z_r\}-Ebene, danach folgt eine 90°-Drehung um \{c_r,c_i\} zu zeigen. Eine zusätzlichen Drehung um 180° ergibt dasselbe Bild, gespiegelt an der c_r-Achse. Das speziell konfigurierte Anti-Buddhabrot, aus dem das Bifurkationsdiagramm der logistischen Gleichung hervorgeht, ist eine Teilmenge des klassischen Anti-Buddhabrot, angesiedelt in der Ebene \{c_r,z_r\} (oder c_i=0) des dreidimensionalen \{c_r,c_i,z_r\}-Raumes und senkrecht zur Ebene \{c_r,c_i\}. Wir verdeutlichen dies, indem wir zeigen, dass bei einer 90°-Rotation nur die projizierte Ebene c_i=0, nicht durch die Projektion der Ebene mit c_i ungleich null „gestört“ wird.

Siehe auch[Bearbeiten]

  • Code in C zum Rendern eines Buddhabrot von Evercat

Einzelnachweise[Bearbeiten]

  1. Melinda Green The Buddhabrot Technique
  2. a b Daniel Green The deity hiding in the m-set
  3. The University of Western Ontario’s newspaper Chaos (theory) rules for software developer (PDF12MB), p. 10
  4. Alexander Boswell The Buddhabrot
  5. Rendering a ridiculously large Buddhabrot. 2. Juli 2010. Abgerufen am 1. Juni 2011.

Weblinks[Bearbeiten]

 Commons: Buddhabrot – Album mit Bildern, Videos und Audiodateien