home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / cebit_91 / biomorph / biomorph.doc < prev    next >
Encoding:
Text File  |  1991-03-07  |  5.5 KB  |  174 lines

  1. Grafik mit Turbo C    (toolbox-Titel 5'91)
  2.  
  3. Leben aus Komplexen Zahlen
  4.  
  5. von Ralf Baethke-Franke
  6.  
  7. Die Geometrie der Fraktale birgt
  8. manche Formel, die naturähnliche Bilder
  9. erzeugt. Außer Bäumen und Farnen, deren
  10. computergesteuerte Darstellungen hin-
  11. länglich bekannt sind, hat die noch
  12. junge Chaos- und Fraktalforschung im
  13. Computer Lebewesen entdeckt, die ver-
  14. blüffende Ähnlichkeiten mit Einzellern
  15. aufweisen: die Biomorphe.
  16.  
  17. Jeder, der sich schon einmal mit
  18. Fraktalen beschäftigt hat, ist sicher
  19. über Komplexe Zahlen gestolpert. In der
  20. mathematischen Definition dieser Zah-
  21. lengruppe liegt nämlich das Geheimnis
  22. für die grafische Aufbereitung der
  23. Rechenergebnisse, aus denen die herrli-
  24. chen Bilder entstehen, die zum Beispiel
  25. als Mandelbrot- und Juliamengen bekannt
  26. sind.
  27.  
  28. Worin sich die einzelnen mathematischen
  29. Mengen unterscheiden, sind Abwandlungen
  30. im Algorithmus und die zugrundeliegende
  31. zu iterierende Formel: Ein ganz be-
  32. stimmter Algorithmus zur Verknüpfung
  33. von Komplexen Zahlen wird rekursiv ite-
  34. riert und das Rechenergebnis unter be-
  35. stimmten Umständen als Koordinatenpunkt
  36. aufgetragen, bevor es erneut in die
  37. Rechenschleife eingespeist wird.
  38.  
  39. Die ganze Rechnerei steht und fällt mit
  40. der Umsetzung der Komplexen-Zahlen-
  41. Formel im Programm-Code. Und hierin
  42. liegt die Schwierigkeit: Es gibt näm-
  43. lich kaum eine Programmiersprache, die
  44. einen entsprechenden Datentyp implemen-
  45. tiert hätte. Man muß sich daher selbst
  46. behelfen und die Rechenregeln in spra-
  47. chengerechte Funktionen umsetzen. Das
  48. haben wir am Beispiel Turbo C versucht
  49. und es ist eine Bibliothek entstanden,
  50. die Rechenoperationen mit Komplexen
  51. Zahlen ermöglicht.
  52.  
  53. Die über #include "complex.c"
  54. einzubindende Datei stellt dem Program-
  55. mierer den Datentyp "compl" und wichti-
  56. ge mathematische Funktionen -- von den
  57. Grundrechenarten über Potenzen und Wur-
  58. zeln bis hin zu den Hyperbelfunktionen
  59. -- zur Verfügung, die das Rechnen mit
  60. Komplexen Zahlen problemlos ermögli-
  61. chen. Eine komplexe Variable wird als
  62. "compl z" deklariert; eine Wertzuwei-
  63. sung erfolgt entweder mit z.re = ... und
  64. z.im = ... oder (bei Anwendung einer Funktion) mit
  65. z = funktion(...) zum Beispiel z = add_c(z1, z2).
  66.  
  67. Formelsammlung an Editor
  68.  
  69. Wie man von den allgemeinen mathemati-
  70. schen Funktionen zur syntaxgerechten
  71. Darstellung kommt, ist aus dem Listing-
  72. text ersichtlich. Wie man zu den Grundregeln der
  73. gängigen mathematischen Formeln kommt, sagt Ihnen jede
  74. handelsübliche Formelsammlung (oder die toolbox 5'91) ...
  75.  
  76. Im Prinzip braucht man nur zu akzeptieren, daß die
  77. Zahl i die Quadratwurzel aus -1 ist,
  78. oder umgekehrt: i * i = -1. Diese
  79. "imaginäre" Vorschrift vorausgesetzt,
  80. ergeben sich die Rechenarten.
  81.  
  82. Eine Komplexe Zahl setzt sich aus zwei
  83. Teilen zusammen, dem imaginären und dem
  84. reellen. Der reelle Teil der Zahl
  85. (2+3*i) ist die 2, der imaginäre ist
  86. 3i, wobei i eben die Quadratwurzel aus
  87. -1 bezeichnet.
  88.  
  89. Für genauere Informationen möchten wir
  90. auf den Artikel von Christoph Pöppe im
  91. Sonderheft 10, Spektrum der Wissen-
  92. schaft, verweisen, aus dem auch die
  93. Idee für die Umsetzung des Biomorph-
  94. Programms stammt. Pöppe meint "zu Kom-
  95. plexen bestehe kein Anlaß" und ver-
  96. sucht, die "komplexe" Mathematik ver-
  97. ständlich zu machen. Mit der Theorie
  98. und dem Beispiel in Basic beschäftigt
  99. sich der Artikel "Eine Formel und ihr
  100. Bild" in toolbox 4'90.
  101.  
  102. Doch zurück zu den Biomorphen! Die un-
  103. ten erwähnten Formeln liefern Grafiken,
  104. die Abbilder biologischer Mikroorganis-
  105. men sein könnten. In der Tat bestehen
  106. erstaunliche Übereinstimmungen. Und
  107. doch beruht alles nur auf Berechnungen
  108. und deren Abbildungen in der komplexen
  109. Ebene, dem Bereich, wo sich alle Frak-
  110. tale einfinden: Die Koordinaten dieser
  111. seltsamen Ebene errechnen sich aus dem
  112. Realteil für die "x-Achse" und dem Ima-
  113. ginärteil für die "y-Achse".
  114.  
  115. Das Programm "biomorph.c" ist eine
  116. Anwendung der Bibliothek "complex.c".
  117. Es basiert auf dem von A. K. Dewdney
  118. in Spektrum der Wissenschaft,
  119. Sonderheft 10, vorgestellten
  120. Algorithmus und ist in zweierlei Weise
  121. variabel: Im EXE-File lassen sich die
  122. Parameter ändern, und im Quellcode
  123. können andere Formeln codiert
  124. werden.
  125.  
  126. In der Funktion "Rechnen()" wird dazu
  127. die gewünschte Formel eingegeben. Im
  128. abgedruckten Listing ist dies z =
  129. z * z + c (Zeile 34: z = sqr_c(z);).
  130. Nach dem Aufruf von "biomorph" werden
  131. zunächst die Bereichsgrenzen für die
  132. reelle und die untere Grenze für die
  133. imaginäre Achse abgefragt. Die Ober-
  134. grenze für die imaginäre Achse wird vom
  135. Programm so berechnet, daß sich ein
  136. quadratisches Bild ergibt. Anschließend
  137. werden Real- und Imaginärteil der Kon-
  138. stanten c und die Anzahl der Iteratio-
  139. nen eingegeben. Für z = z * z + c
  140. ergibt sich ein besonders schönes Bild
  141. mit den Bereichsgrenzen -1.5, +1.5 für
  142. beide Achsen und c=-1 (c.re = -1, c.im = 0)
  143. bei 10 Iterationen.
  144.  
  145. Andere interessante Bilder ergeben
  146. sich mit folgenden Formeln in der
  147. Funktion "Rechnen()":
  148.  
  149. z = zz + z ^ 6 + c
  150. (Zeile 34 muß dann lauten:
  151. z = add_c (pot_cc(z,z), pot_c(z,6)); )
  152.  
  153. z = sin(z) + z * z + c
  154. (Zeile 34:
  155. z = add_c (sin_c(z), sqr_c(z)); );
  156.  
  157. z = z ^ 3 + c
  158. (Zeile 34: z = pot_c(z,3);)
  159.  
  160. Hier haben Sie viel Spielraum zum
  161. Experimentieren, indem Sie einerseits
  162. die Formel leicht abwandeln,
  163. andererseits wäre es denkbar, das
  164. Programm selber zu erweitern, indem
  165. zum Beispiel das Fenster auf dem
  166. Bildschirm kleiner oder variabel
  167. gewählt wird, so daß sich die
  168. "Brauchbarkeit" der Grafik schneller
  169. abschätzen läßt. Vielleicht entdecken
  170. Sie ja auch Routinen, die man "tiefer
  171. legen " kann, um die Performance zu
  172. verbessern.
  173.                               (cd/wr)
  174.