home *** CD-ROM | disk | FTP | other *** search
- Grafik mit Turbo C (toolbox-Titel 5'91)
-
- Leben aus Komplexen Zahlen
-
- von Ralf Baethke-Franke
-
- Die Geometrie der Fraktale birgt
- manche Formel, die naturähnliche Bilder
- erzeugt. Außer Bäumen und Farnen, deren
- computergesteuerte Darstellungen hin-
- länglich bekannt sind, hat die noch
- junge Chaos- und Fraktalforschung im
- Computer Lebewesen entdeckt, die ver-
- blüffende Ähnlichkeiten mit Einzellern
- aufweisen: die Biomorphe.
-
- Jeder, der sich schon einmal mit
- Fraktalen beschäftigt hat, ist sicher
- über Komplexe Zahlen gestolpert. In der
- mathematischen Definition dieser Zah-
- lengruppe liegt nämlich das Geheimnis
- für die grafische Aufbereitung der
- Rechenergebnisse, aus denen die herrli-
- chen Bilder entstehen, die zum Beispiel
- als Mandelbrot- und Juliamengen bekannt
- sind.
-
- Worin sich die einzelnen mathematischen
- Mengen unterscheiden, sind Abwandlungen
- im Algorithmus und die zugrundeliegende
- zu iterierende Formel: Ein ganz be-
- stimmter Algorithmus zur Verknüpfung
- von Komplexen Zahlen wird rekursiv ite-
- riert und das Rechenergebnis unter be-
- stimmten Umständen als Koordinatenpunkt
- aufgetragen, bevor es erneut in die
- Rechenschleife eingespeist wird.
-
- Die ganze Rechnerei steht und fällt mit
- der Umsetzung der Komplexen-Zahlen-
- Formel im Programm-Code. Und hierin
- liegt die Schwierigkeit: Es gibt näm-
- lich kaum eine Programmiersprache, die
- einen entsprechenden Datentyp implemen-
- tiert hätte. Man muß sich daher selbst
- behelfen und die Rechenregeln in spra-
- chengerechte Funktionen umsetzen. Das
- haben wir am Beispiel Turbo C versucht
- und es ist eine Bibliothek entstanden,
- die Rechenoperationen mit Komplexen
- Zahlen ermöglicht.
-
- Die über #include "complex.c"
- einzubindende Datei stellt dem Program-
- mierer den Datentyp "compl" und wichti-
- ge mathematische Funktionen -- von den
- Grundrechenarten über Potenzen und Wur-
- zeln bis hin zu den Hyperbelfunktionen
- -- zur Verfügung, die das Rechnen mit
- Komplexen Zahlen problemlos ermögli-
- chen. Eine komplexe Variable wird als
- "compl z" deklariert; eine Wertzuwei-
- sung erfolgt entweder mit z.re = ... und
- z.im = ... oder (bei Anwendung einer Funktion) mit
- z = funktion(...) zum Beispiel z = add_c(z1, z2).
-
- Formelsammlung an Editor
-
- Wie man von den allgemeinen mathemati-
- schen Funktionen zur syntaxgerechten
- Darstellung kommt, ist aus dem Listing-
- text ersichtlich. Wie man zu den Grundregeln der
- gängigen mathematischen Formeln kommt, sagt Ihnen jede
- handelsübliche Formelsammlung (oder die toolbox 5'91) ...
-
- Im Prinzip braucht man nur zu akzeptieren, daß die
- Zahl i die Quadratwurzel aus -1 ist,
- oder umgekehrt: i * i = -1. Diese
- "imaginäre" Vorschrift vorausgesetzt,
- ergeben sich die Rechenarten.
-
- Eine Komplexe Zahl setzt sich aus zwei
- Teilen zusammen, dem imaginären und dem
- reellen. Der reelle Teil der Zahl
- (2+3*i) ist die 2, der imaginäre ist
- 3i, wobei i eben die Quadratwurzel aus
- -1 bezeichnet.
-
- Für genauere Informationen möchten wir
- auf den Artikel von Christoph Pöppe im
- Sonderheft 10, Spektrum der Wissen-
- schaft, verweisen, aus dem auch die
- Idee für die Umsetzung des Biomorph-
- Programms stammt. Pöppe meint "zu Kom-
- plexen bestehe kein Anlaß" und ver-
- sucht, die "komplexe" Mathematik ver-
- ständlich zu machen. Mit der Theorie
- und dem Beispiel in Basic beschäftigt
- sich der Artikel "Eine Formel und ihr
- Bild" in toolbox 4'90.
-
- Doch zurück zu den Biomorphen! Die un-
- ten erwähnten Formeln liefern Grafiken,
- die Abbilder biologischer Mikroorganis-
- men sein könnten. In der Tat bestehen
- erstaunliche Übereinstimmungen. Und
- doch beruht alles nur auf Berechnungen
- und deren Abbildungen in der komplexen
- Ebene, dem Bereich, wo sich alle Frak-
- tale einfinden: Die Koordinaten dieser
- seltsamen Ebene errechnen sich aus dem
- Realteil für die "x-Achse" und dem Ima-
- ginärteil für die "y-Achse".
-
- Das Programm "biomorph.c" ist eine
- Anwendung der Bibliothek "complex.c".
- Es basiert auf dem von A. K. Dewdney
- in Spektrum der Wissenschaft,
- Sonderheft 10, vorgestellten
- Algorithmus und ist in zweierlei Weise
- variabel: Im EXE-File lassen sich die
- Parameter ändern, und im Quellcode
- können andere Formeln codiert
- werden.
-
- In der Funktion "Rechnen()" wird dazu
- die gewünschte Formel eingegeben. Im
- abgedruckten Listing ist dies z =
- z * z + c (Zeile 34: z = sqr_c(z);).
- Nach dem Aufruf von "biomorph" werden
- zunächst die Bereichsgrenzen für die
- reelle und die untere Grenze für die
- imaginäre Achse abgefragt. Die Ober-
- grenze für die imaginäre Achse wird vom
- Programm so berechnet, daß sich ein
- quadratisches Bild ergibt. Anschließend
- werden Real- und Imaginärteil der Kon-
- stanten c und die Anzahl der Iteratio-
- nen eingegeben. Für z = z * z + c
- ergibt sich ein besonders schönes Bild
- mit den Bereichsgrenzen -1.5, +1.5 für
- beide Achsen und c=-1 (c.re = -1, c.im = 0)
- bei 10 Iterationen.
-
- Andere interessante Bilder ergeben
- sich mit folgenden Formeln in der
- Funktion "Rechnen()":
-
- z = zz + z ^ 6 + c
- (Zeile 34 muß dann lauten:
- z = add_c (pot_cc(z,z), pot_c(z,6)); )
-
- z = sin(z) + z * z + c
- (Zeile 34:
- z = add_c (sin_c(z), sqr_c(z)); );
-
- z = z ^ 3 + c
- (Zeile 34: z = pot_c(z,3);)
-
- Hier haben Sie viel Spielraum zum
- Experimentieren, indem Sie einerseits
- die Formel leicht abwandeln,
- andererseits wäre es denkbar, das
- Programm selber zu erweitern, indem
- zum Beispiel das Fenster auf dem
- Bildschirm kleiner oder variabel
- gewählt wird, so daß sich die
- "Brauchbarkeit" der Grafik schneller
- abschätzen läßt. Vielleicht entdecken
- Sie ja auch Routinen, die man "tiefer
- legen " kann, um die Performance zu
- verbessern.
- (cd/wr)
-