Die Julia-Menge

Der französische Mathematiker Gaston Julia hat zu Beginn des 20. Jahrhunderts eine Menge von komplexen Zahlen untersucht. Diese komplexen Zahlen haben die Eigenschaft, dass sie bei der Iteration
z(n+1) = z(n)² + c
konvergieren. Stellt man die komplexen Zahlen, die diese Eigenschaft aufweisen, farblich dar, so erhält man komplizierte Flächenmuster, deren Gestalt von der Wahl der Konstanten c abhängt. Man sich leicht davon überzeugen, dass eine geringfügig anders gewählte Konstante c zu einer deutlich anderen Julia-Menge führt.

Ähnlich wie bei der Mandelbrot-Menge wählen wir ein Quadrat aus der komplexen Zahlenebene aus (Eckpunkt (amin,bmin), Kantenlänge k) und geben eine Konstante c (a,b) aus. Das (im Allgemeinen relativ kleine) Quadrat der komplexen Zahlenebene wird auf einen größeren Bildschirmbereich "gezoomt" (im Beispiel auf 200x200 Pixel). Daraus bestimmen wir die Schrittweite ds:=k/200 für die Iterationen: Wir iterieren für jeden Realteil der komplexen Zahlen im gewählten Quadrat und für jeden Realteil über alle zugehörigen Imaginärteile...

Ist ein Punkt Element der Julia-Menge, wird er (schwarz) eingefärbt.

Strebt ein Punkt der Julia-Menge bei der Iteration gegen Unendlich wird er danach eingefärbt, wie "rasch" er den Kreis mit Radius 2 verlässt - auf diese Weise erscheinen die Punkte in der (näheren) Umgebung der Julia-Menge farbig...

procedure TForm1.Button1Click(Sender: TObject);
var a,b,xmin,ymin,k,ds:real;
    x,y,x1,y1,xx:real;
    s,z,zaehler:integer;
begin
  paintbox1.canvas.pen.color:=clRed;
  paintbox1.canvas.brush.color:=clWhite;
  paintbox1.canvas.rectangle(0,0,300,300);
  a:=StrtoFloat(edit1.text);
  b:=StrtoFloat(edit2.text);
  xmin:=StrtoFloat(edit3.text);
  ymin:=StrtoFloat(edit4.text);
  k:=StrtoFloat(edit5.text);
  ds:=k/200;
  x:=xmin;
  for s:=1 to 200 do begin
    y:=ymin;
    for z:=1 to 200 do begin
      x1:=x;
      y1:=y;
      zaehler:=0;
      while (zaehler < 100) and (sqrt(x1*x1+y1*y1)<2) do begin
        inc(zaehler);
        xx:=x1*x1-y1*y1+a;
        y1:=2*x1*y1+b;
        x1:=xx;
      end;
      if (zaehler>=100) then paintbox1.canvas.Pixels[s+50,z+50]:=clYellow;
        case zaehler of
          0..9:paintbox1.canvas.Pixels[s+50,z+50]:=clRed;
          10..19:paintbox1.canvas.Pixels[s+50,z+50]:=clLime;
          20..29:paintbox1.canvas.Pixels[s+50,z+50]:=clGreen;
          30..39:paintbox1.canvas.Pixels[s+50,z+50]:=clOlive;
          40..49:paintbox1.canvas.Pixels[s+50,z+50]:=clFuchsia;
          50..59:paintbox1.canvas.Pixels[s+50,z+50]:=clBlack;
          60..69:paintbox1.canvas.Pixels[s+50,z+50]:=clPurple;
          70..79:paintbox1.canvas.Pixels[s+50,z+50]:=clTeal;
          80..89:paintbox1.canvas.Pixels[s+50,z+50]:=clNavy;
          90..99:paintbox1.canvas.Pixels[s+50,z+50]:=clAqua;
        end;

      y:=y+ds;
    end;
    x:=x+ds;
  end;
end;


Inhaltsverzeichnis "Delphi"
Nussbaumers Seite