public class Komplex { double re; double im; ...
Das Quadrat einer komplexen Zahl z hat den
Realteil
z.re 2 - z.im 2 und den Imaginärteil
2 · z.re · z.im .
Der Betrag einer komplexen Zahl c sei
|c| = .
Betrachte die Funktion
f : ,f (z) = z 2 + c
für festes c .
Komplex f(Komplex z)
{
double tmp;
tmp = z.re;
z.re = z.re * z.re - z.im * z.im + c.re;
z.im = 2 * tmp * z.im + c.im;
return z
}
Betrachte die Folge
z,f (z),f 2(z),f 3(z),...
beginnend bei z = 0 für festes c .
Für manche c wächst der Betrag beliebig,
für manche c konvergiert er zu einem Fixpunkt.
Die
Mandelbrotmenge besteht aus solchen komplexen Zahlen c , die beim
Startwert z = 0 zur Konvergenz führen.
Um die Mandelbrotmenge grafisch darzustellen, definiert man
Ordne jedem Pixel (p.x,p.y) des Bildschirms eine komplexe Zahl
zu wie folgt. Die linke obere Ecke bezeichne die komplexe Zahl
start
(z.B. - 2.15,2.15 ).
Die rechte obere Ecke bezeichne die komplexe Zahl ende
(z.B. 0.85,2.15 )
Dann ergibt sich bei 300 Pixeln pro Zeile eine Schrittweite von
(0.85 + 2.15)/300 = 0.01 .
Somit läßt sich ein Koordinatenpaar (p.x,p.y) umrechnen durch den folgenden
Konstruktor.
public Komplex(Point p, Komplex start, double schritt)
// bildet die komplexe Zahl zum Pixel p mit linker/oberer Ecke start
// und Schrittweite schritt
{
this.re = start.re + schritt * (double)p.x;
this.im = start.im - schritt * (double)p.y;
}
Sei (p.x,p.y) das zur komplexen Zahl c gehörende Pixel. Dann färbe es mit farbe( c ).
Mandelbrotmenge: - 2.2 z.re 0.6 , - 1.2 z.im 1.2 , 100 Iterationen