Viel problematischer sind hier die Rechner mit denen der Autor den Einstieg in die Computerei machte. 8 Bit Rechnern mit typischerweise 16-128 KByte RAM. Wer damals einen Rechner kaufte, der tat dies um Programmieren zu lernen. Es meldete sich kein MS-DOS Prompt oder gar eine grafische Oberfläche. Sondern ein Basic Interpreter meldete "Ready", und wartete auf Eingaben wie "Print 3+5-7". Benchmarks bestanden damals darin in BASIC in kurzen Schleifen einige 1000 Zahlen zu addieren, 100 Strings zu sortieren oder aus dem Bildschirm auszugeben. Was damals getestet wurde war nicht die Geschwindigkeit des Mikroprozessors, sondern die des Systems inklusive Basic Interpreters. Der Autor kann sich noch ganz gut an Benchmarks erinnern die auf einem Rechner schnell liefen, auf dem anderen mit demselben Mikroprozessor aber langsam, weil die Implementierung des Interpreters schlecht war. Beispiel : Z80 Prozessor einmal in Schneider CPC 464 und einmal in - bei fast gleicher Taktfrequenz waren letzter viermal langsamer.
Damit ist ein Fractal ein sinnvoller Benchmark, denn es gibt eine Rechenvorschift die man auch heute noch umsetzen und mit den damaligen Werten vergleichen kann.
Z=Z2+C
Das klingt etwas profan oder ?
Nun bei den reellen Zahlen - denen sie im täglichen Leben begegnen - gibt es
auch nur eine Lösung für diese Gleichung. Doch Z und C sind komplexe Zahlen.
Darunter versteht man Zahlen die aus einem reellen und einem imaginären Wert
bestehen. Bei einer komplexen Zahl gibt es z.B. für den gleichen Wert
Z2 unendlich viele Lösungen die in einem Kreis mit dem Radius Z
liegen. Man braucht komplexe Zahlen für einige Fragestellungen in Wissenschaft
und Technik, z.B. in der Elektrotechnik. Die Grafiken entstehen nun dadurch das
man den Bildschirmkoordinaten reelle (X Achse) und Imaginäre (Y Achse) Anteile
der Zahl z zuordnet und die Rechenvorschift durchführt.
Dabei geht man so vor
:
Alle Z laufen entweder irgendwann in die Mandelbrotmenge herein oder heraus. Es ist nur die Frage wann. Das macht diese Rechenvorschrift die in Pascal etwa so aussieht so aufwendig :
function Tmandelbrot.Rechne(Re,Im:Double; const X,Y : Double) :
Integer;
const Abbruch = 8;
var Reel,Imag:Double;
Farbe : Integer;
begin
for Farbe:=0 to Iteration do
begin
Reel:=Re*Re;
Imag:=Im*Im;
if Reel+Imag>Abbruch then begin Result:=Farbe; Exit; end;
Im:=Im*Re*2-Y;
Re:=Reel-Imag-X;
end;
Result:=0;
end;
Hier entspricht dem n das Ende der Iteration, Abbruch ist der Wert von dem man weiss das er nie zur Mandelbrotmenge gehört. Es wird hier die komplexe Zahl in reelle und imaginäre Teile zerlegt. Pro Durchlauf fallen hier 4 Multiplikationen, 3 Subtraktionen und eine Addition an. Im schlimmsten Fall pro Pixel also Iteration*8 Rechnungen. Damit hängt die Rechendauer auch von der Iterationstiefe ab.
Mein heutiger Rechner mit einem 1200 Mhz Athlon ist also fast 40000 mal schneller als mein damaliger 8 Bit Rechner. Das ist eigentlich nicht überraschend, denn ein 8 Bitter hat weder einen Fliesskommaprozessor noch verfügt er über Befehle um auch nur Ganzzahlen zu multiplizieren. Er muss also relativ schlecht bei einem solchen Vergleich abschneiden. Benutzt man wie damals Variablen die nur der Prozessor verarbeitet aber nicht der Coprozessor, so ist der heutige Rechner nur noch 5400 mal schneller - trotzdem eine enorme Steigerung der Rechengeschwindigkeit in den letzten 17 Jahren. Es ist auch heute noch möglich den Rechner durchaus lange mit Fractalen zu beschäftigen. Denn die Menge ist unendlich gross. Nur die Tiefe entscheidet wieviel man davon sieht (vor allem bei kleinen Ausschnitten. Hier z.b. die Spitze in der Mitte des Fractals. Bei der Tiefe 30 und der Tiefe 300. Würde man hier noch weiter gehen, so würde man noch immer feinere Strukturen erkennen.
Dabei haben diese Bilder in den letzten 17 Jahren nichts von ihrer Anziehungskraft und ästhetischen Schönheit verloren. Man findet dieses Prinzip der Selbstähnlichkeit übrigens laufend in der Natur. Sie es bei der Form von Wolken, Küstenformen oder dem Verlauf von Blutgefäßen oder Blattadern. Doch dies ist ein anderes Thema.
Version 1.0 vom 12/18/2003 09:00:42 © by Bernd Leitenberger