Hallo Ihr Lieben,
nach der ellenlangen zahlentheoretischen Vorrede in Form fünf einzelner Blogbeiträge und einiger kleiner Zusatzbeiträge für spezielle Hintergrundinformationen hat uns unser Erkundungspfad zur Mandelbrotmenge jetzt endlich in die Zielgerade geführt. Zuletzt haben wir uns ja mit der Menge der Komplexen Zahlen beschäftigt und dabei darauf hingewiesen, dass es sich bei der Mandelbrotmenge letztlich um nichts anderes als eine nach eindeutigen Kriterien bestimmte Untermenge eben jener Komplexen Zahlen handelt. Und die weltbekannte Visualisierung der Mandelbrotmenge – gerne auch als „Apfelmännchen“ bezeichnet – ist dabei lediglich eine Darstellung der zur Mandelbrotmenge gehörenden komplexen Zahlen als (meist in schlichtem Schwarz) eingefärbte Punkte in der komplexen Ebene.
Komplexe Ebene – Ihr wisst doch noch aus dem letzten Beitrag, was das ist, oder? Das war das mit der reellen und der imaginären Achse, wo jeder komplexen Zahl ein eindeutiger Punkt zugeordnet ist, dessen Koordinaten sich aus dem reellen und imaginären Teil der Zahl bestimmen. Hier mal das Apfelmännchen in unserem Koordinatensystem namens „komplexe Ebene“:
Wir sehen dort den tiefschwarzen Bereich aller Zahlen, die zur Mandelbrotmenge gehören. Alles, was nicht schwarz ist, gehört dann entsprechend nicht mehr zur Mandelbrotmenge. Die ästhetische Musik spielt allerdings genau im Grenzbereich zwischen dem Inneren und dem Äußeren des Apfelmännchens. Dieser Bereich ist buchstäblich unendlich komplex strukturiert und ihm entstammen die besonders faszinierenden Formen und Muster, für die die Mandelbrotmenge so berühmt geworden ist. Dazu aber mehr in der nächsten Folge dieser Beitragsserie. Wir können ja nicht alles auf einmal abhandeln.
Im Moment hängen wir ja als erstes mal bei der Frage, welche komplexen Zahlen denn nun überhaupt zur Mandelbrotmenge gehören und welche nicht. Diese Frage ist – das war ja mal mein Eingangsstatement im ersten Beitrag dieser Serie – anhand einer sehr einfachen mathematischen Mechanik zu beantworten. Aber mein damaliges Versprechen umfasste ja insbesondere den Vorsatz, Euch Formeln zu ersparen und stattdessen mit Anschauung zu trumpfen. Diesem Vorsatz bin ich zugegebenermaßen mindestens mal in den beiden letzten Beiträgen nicht mehr ganz gerecht geworden. Das möchte ich hiermit wiedergutmachen: um daher die Mechanik der Zugehörigkeitsbestimmung zur Mandelbrotmenge ganz ohne mathematischen Formalismus veranschaulichen zu können, habe ich mir eine kleine Apparatur ausgedacht.
Daniel proudly presents: den Mandelbrot-Transformator.
Zahlenwandler
Mein Mandelbrot-Transformator ist eine einfache kleine Maschine, die so aussieht:
Er hat oben einen Eingang, rechts einen Ausgang und zwei Stellhebel – einen links und einen unten. Die beiden Stellhebel heißen natürlich nicht zufällig „i“ und „r“. Sie stehen für den imaginären und reellen Teil einer komplexen Zahl – nennen wir sie einfach „c“.
Der Transformator wird jetzt wie folgt bedient: Als erstes wählt man die Zahl „c” vor. Sagen wir also, unser c wäre die Zahl 0,5+2×i. Dann stellen wir jetzt als erstes unseren Stellhebel „r“ auf den reellen Teil unserer Zahl c – also 0,5 – und unseren Stellhebel „i“ auf den imaginären Teil unserer Zahl c – also 2. Das sieht dann ungefähr so aus:
Einmal so eingestellt, kann man dann oben in den Eingang des Transformators eine komplexe Zahl – nennen wir sie einfach mal „z“ – hineinschmeißen und schwupp, kommt rechts aus dem Ausgang eine komplexe Zahl wieder raus. Diese Ausgabezahl errechnet sich dabei wie folgt aus der in den Eingang geschmissenen Zahl z:
- Im ersten Schritt wird z mit sich selbst multipliziert
- Im zweiten Schritt wird dem Ergebnis dieser Multiplikation unser voreingestelltes c hinzugefügt.
- Die nach diesen beiden Rechenschritten entstandene Zahl wird dann Ausgang wieder ausgespuckt. Ende
Zu unserem voreingestellten c und der oben eingeworfenen Zahl z wird also im Transformator der folgende Ausdruck berechnet und ausgegeben:
Mehr macht er nicht.
Beispiel: sagen wir, z wäre 2+0×i. Das entspricht der reellen Zahl 2 (der imaginäre Teil ist 0 und damit nicht existent). Wir schmeißen die 2 jetzt oben in den Mandelbrot-Transformator:
Dann berechnet er jetzt den Ausdruck
Unser voreingestelltes c war dabei 0,5+2×i, so dass wir also eigentlich das Folgende erhalten:
Das wiederum ergibt
bzw.
Diese Zahl spuckt der Transformator dann wieder aus:
Ja, OK – das waren jetzt natürlich doch wieder ein paar Zahlen, Plus- und Malzeichen. Aber ich meine, Ihr alle werdet doch noch die Grundrechenarten beherrschen, oder? Echt jetzt – das war doch nun wirklich pillepalle.
Kreislauf
Na gut, jetzt wissen wir, warum der Mandelbrot-Transformator „Transformator” heißt: er transformiert eine Eingabezahl auf Basis der Stellhebeleinstellungen in eine Ausgabezahl. Wo aber kommt das „Mandelbrot” im Namen meiner Apparatur her?
Achtung, Leute: wir sind kurz davor, das Wesentliche zum Thema „Mandelbrotmenge” verstanden zu haben. Also: bitte aufpassen!
Warum also „Mandelbrot”?
Weil wir mit Hilfe meines ach so genialen Mandelbrot-Transformators entscheiden können, ob die (komplexe) Zahl, die man mit den Stellhebeln vorgewählt hat, zur Mandelbrotmenge gehört oder nicht. Und das macht man wie folgt:
- Man wählt zunächst – wie gewohnt – einmalig die auf Zugehörigkeit zur Mandelbrotmenge zu überprüfende Zahl c anhand ihres reellen und imaginären Teils mit Hilfe der entsprechenden Stellhebel vor. Beispiel: c=1+0×i (was der reellen Zahl 1 entspricht):
- Im zweiten Schritt schmeißt man standardmäßig die Zahl „0” in den Eingang des Transformators. Mit einem bisschen Nachdenken sollten wir erkennen, dass dann c selbst aus dem Ausgang ausgespuckt wird, denn 0 mit sich selbst multipliziert gibt wieder 0 und 0+c ist c. Da in unserem Beispiel c=1 sein soll kommt also eine 1 rechts raus, wenn wir die 0 oben reinwerfen:
- Ab jetzt macht man folgendes: man nimmt immer die Zahl, die zuletzt am Ausgang ausgespuckt wurde und schmeißt sie gerade wieder in den Eingang rein, so dass eine nächste Zahl gemäß der Funktionsweise des Transformators ausgespuckt wird. Für unser aktuelles Beispiel mit c=1 würde das also dazu führen, dass wir die eben errechnete 1 wieder oben einwerfen. Wir erhalten dann am Ausgang die Zahl 1×1+c und damit (wegen c=1) 1×1+1, was 1+1 und somit 2 ergibt. Diesen Schritt wiederholt man dann wieder mit der eben errechneten Zahl (hier die 2) und so weiter und so fort:
Für unser Beispiel mit c=1 sehen dann die ersten sieben Zahlen, die nacheinander aus unserem auf c eingestellten Transformator ausgespuckt werden, so aus:
- 1
- 2
- 5
- 26
- 677
- 458.330
- 210.066.388.901
Man sieht also, dass die Zahlen mit jedem Durchlauf wachsen – und zwar schon nach kurzer Zeit – hier farbig hervorgehoben – ziemlich drastisch.
Ist das für jede Zahl c immer so?
Um das herauszufinden, stellen wir den Transformator als nächstes doch einfach mal auf c=-1+0×i (was der reellen Zahl ‑1 entspricht) ein und lassen ihn loslaufen:Nachdem man im ersten Durchlauf die 0 reingeschmissen hat, kommt wegen 0×0+(-1) = 0–1 = ‑1 eine ‑1 raus. Schmeißt man diese ‑1 dann für den nächsten Durchlauf wieder oben rein, erhält man wegen (-1)×(-1)+(-1) = 1–1 = 0 gerade wieder eine 0 (wer nicht mehr weiß, warum „minus mal minus ist plus” gilt, der kann das gerne in meinem Beitrag zu den Ganzen Zahlen nachlesen). Dann ist aber klar, dass im nächsten Durchlauf wieder eine ‑1 herauskommt, und so geht es für immer weiter: ‑1, 0, ‑1, 0, ‑1, 0,…
Im krassen Gegensatz zu unserer Ausgabefolge für c=1, die sehr schnell über alle Grenzen hinauswächst, bewegt sich unsere Ausgabefolge für c=-1 immer nur zwischen 0 und ‑1.
Und es sind eben diese beiden Beispiele, die uns den entscheidenden Unterschied zwischen jenen Zahlen zeigen, die zur Mandelbrotmenge gehören und jenen, die es nicht tun. Unser erstes Beispiel mit c=1, bei dem der Transformator also eine Folge von Zahlen produziert, die über alle Maßen hinauswachsen, zeigt einen Fall, bei dem das vorgewählte c genau wegen dieses Tatbestands nicht zur Mandelbrotmenge gehört. Unser zweites Beispiel mit c=-1, bei dem der Transformator eine Folge von Zahlen produziert, die nie über gewisse Grenzen hinauswachsen, zeigt einen Fall, in dem die vorgewählte Zahl c genau aus diesem Grunde zur Mandelbrotmenge gehört.
Damit ist eigentlich auch schon alles gesagt, was man wissen muss, um zu entscheiden, ob eine komplexe Zahl c zur Mandelbrotmenge gehört oder nicht: Wir stellen unseren Transformator auf das zu testende c ein und lassen ihn wie oben beschrieben mit 0 beginnend loslaufen. Bleiben die Zahlen der entstehenden Ausgabefolge innerhalb fester Grenzen, wird die Zahl c ehrenvoll in die Mandelbrotmenge mit aufgenommen. Wachsen die Zahlen der Ausgabefolge hingegen über alle Grenzen hinaus, muss die Zahl leider aus der Mandelbrotmenge draußen bleiben.
Das ist schon alles!
Gutes Betragen
Naja, ein paar Details gibt es da schon noch. Als erstes müssen wir mal berücksichtigen, dass wir es ja immerhin mit komplexen Zahlen zu tun haben. Die in den obigen Beispielen verwendeten reellen Zahlen dienten nur der didaktischen Vereinfachung.
Wie wir im letzten Beitrag der hiesigen Beitragsserie ausgeführt hatten, sind die Komplexen Zahlen im Gegensatz zu den Reellen Zahlen nicht geordnet. Das heißt, man kann im Allgemeinen von zwei gegebenen ungleichen komplexen Zahlen nicht sagen, welche von beiden die Größere ist. Das ist aber irgendwie blöd, denn um über die Mitgliedschaft einer beliebigen komplexen Zahl in der Mandelbrotmenge entscheiden zu können, muss man ja gerade prüfen, ob die vom Transformator zur gewählten Zahl ausgegebene Folge komplexer Zahlen immer größere Zahlen liefert oder nicht. Wenn man aber nicht sagen kann, ob die eine Zahl größer ist als die andere, wie will man dann feststellen können, ob die Zahlen in der Ausgabefolge unseres Transformators immer größer werden oder nicht?
Die Lösung: man vergleicht nicht die eigentlichen Zahlen, die hintereinander aus dem Transformator ausgegeben werden, sondern deren Beträge.
Beträge? Da war doch irgendwas…
Hey, es ist gerade mal einen Beitrag her – nämlich den zu den komplexen Zahlen – da haben wir das Thema recht ausführlich diskutiert. Das mit Pythagoras und so. Aber zur Gedächtnisauffrischung wiederhole ich das natürlich sehr gerne nochmals kurz an dieser Stelle:
Der Betrag einer komplexen Zahl ist die Länge der Strecke zwischen dem Ursprung (der Punkt, an dem sich die beiden Achsen kreuzen) und dem Punkt in der komplexen Ebene, welcher der betrachteten Zahl entspricht:
Wir sehen hier oben rechts beispielsweise den Punkt, welcher der Zahl 4+3×i entspricht (also vom Ursprung aus 4 nach rechts und 3 nach oben). Die Länge der Strecke vom Ursprung bis zu diesem Punkt ist nach Pythagoras 5. Dasselbe gilt für den Punkt unten links, welcher der Zahl -4-3×i entspricht (also vom Ursprung aus 4 nach links und 3 nach unten).
Die Länge einer Strecke vom Ursprung aus gemessen ist also immer eine positive reelle Zahl (oder Null) – ganz egal, ob der reelle oder der imaginäre Anteil der betrachteten komplexen Zahl positiv oder negativ ist. Man misst ja einfach nur die Entfernung von A nach B (also vom Ursprung bis zur betrachteten Zahl). Man kann daher problemlos beurteilen, ob die Beträge der Zahlenfolgen, wie sie aus unserem Trafo ausgegeben werden, immer weiter wachsen oder nicht.
Problem gelöst.
Grenze zur Grenzenlosigkeit
Das zweite Problem ist, dass es manchmal ganz schön lange dauert, bis man entscheiden kann, ob die Zahlenfolge, die der Mandlebrot-Transformator zu einer vorgegebenen Zahl c ausspuckt, innerhalb bestimmter Grenzen bleibt, oder nicht. Schauen wir uns dazu ein paar Beispiele an:
In diesem Diagramm steht unten die Anzahl der Transformator-Durchläufe (die Mathematiker nennen sie „Iterationen“) und links die Größe des Betrags, der dabei herauskommt. Die graue Linie entspricht der Voreinstellung c=0,28, die orangebraune Linie entspricht c=0,26 und die blaue c=0,251. Man sieht also, dass man in manchen Fällen unter zwanzig Durchläufe/Iterationen braucht, um zu sehen, dass die Ausgabefolge ins Unendliche wächst, manchmal braucht es etwas über 30 und manchmal über 90.
Die bedrückende Wahrheit ist, dass es Zahlen gibt, bei denen man auch nach 1.000 oder 1.000.000 Durchläufen/Iterationen noch nicht an dem Punkt angelangt ist, an dem klar erkennbar ist, ob die Zahlenfolge zur gegebenen Zahl ins Unendliche abdriftet oder nicht. Will man die Mandelbrotmenge in Form des Apfelmännchens darstellen, so muss man daher die Zugehörigkeitstests per Mandelbrot-Transformator im Allgemeinen ab einer gewissen Anzahl der Iterationen abbrechen, denn sonst rechnet man sich ja schon für einen einzigen Punkt zu Tode. Und genau so macht man es auch in der Praxis: man legt die maximale Anzahl an Iterationen von vorneherein fest. Wenn man diese Anzahl erreicht hat und immer noch nicht erkennbar ist, dass die Zahlenfolge ins Unendliche abdriftet, dann betrachtet man die jeweils untersuchte Zahl c einfach als Mitglied der Mandelbrotmenge. Das kann zwar puristisch betrachtet eine falsche Entscheidung sein. Aber auf diese Weise kommt man wenigstens zu annähernd präzisen Darstellungen der Menge – und zwar zu solchen, die nach einer endlichen Berechnungszeit sichtbar werden. Was hätte man denn auch von einer exakten Darstellung, wenn sie erst in 1.000 Jahren fertig berechnet würde?
Ein Fall für Zwei
Kann man eigentlich ab einer bestimmten Betragsgröße der Zahlen in den Ausgabefolgen unseres Transformators sicher davon ausgehen, dass die Zahlenfolge ins Unendliche abdriften wird? Diese Frage ist schon deshalb interessant, weil unser Mandelbrot-Transformator für so manches vorgewählte c ziemlich wilde Zahlenfolgen ausspuckt, wie man hier am Beispiel c=-1,9 gut erkennen kann:
Zwar bleiben die hier dargestellten ersten 100 Zahlen der Ausgabefolge allesamt betragsmäßig kleiner als 2, aber ein echter Trend ist so ohne Weiteres nicht zu erkennen.
Dass die Beträge im eben gezeigten Beispiel niemals größer werden als 2, ist übrigens kein Zufall. Man kann tatsächlich zeigen, dass der Betrag einer jeden komplexen Zahl, die Element der Mandelbrotmenge sein soll, niemals größer als 2 sein kann. Ein kurzer Blick auf die Visualisierung der Mandelbrotmenge bestätigt denn auch, dass sie vollständig innerhalb des Kreises mit dem Radius 2 um den Ursprung liegt:
Warum das so ist? Naja, schauen wir uns nochmals das Innere des Mandelbrot-Transformators an. Dort wird ja für jedes oben eingeworfene z bei vorgegebenem c folgender Ausdruck berechnet:
Da man immer zuerst mit z=0 beginnt, erhält man – wie oben festgestellt – im ersten Transformator-Durchlauf immer c selbst als Ergebnis, denn 0×0+c ist offenbar c. Wenn man jetzt für den nächsten Durchlauf daher das c selbst in den Eingang wirft, entsteht also das Ergebnis c×c+c.
Um das Ergebnis möglichst klein zu halten, muss c im günstigsten Fall eine negative Zahl sein, denn dann wird sie wenigstens dauernd von z×z abgezogen, was schon mal hilft, tendenziell kleinere Zahlen in unserer Zahlenfolge zu erhalten. Dann würde in unserem oben wiederholten Schritt so etwas stehen wie
Multipliziert man eine negative Zahl mit sich selbst, entsteht eine positive Zahl. Das entspräche dann aber folgender Rechnung:
Man zieht also c vom c-Fachen seiner selbst ab. Wäre c größer als 2 – sagen wir 3 – dann würde man c vom 3‑Fachen seiner selbst abziehen, so dass immer noch das Zweifache davon übrig bliebe. Damit entstünde im nächsten Schritt eine Zahl, die doppelt so groß ist wie im vorigen Schritt. Diese Entwicklung kann man also nur verhindern, wenn c maximal 2 ist, denn dann zieht man c vom Doppelten seiner selbst ab und erhält damit wieder nur ein c (mein alter Mathelehrer hätte jetzt gesagt „man erhält damit wieder nur einen Zeh” und hätte sich – als Einziger im Unterricht – darüber krank gelacht). Für positive c ist 2 übrigens schon viel zu groß, wie man an obigem Bild sehen kann.
Ja klar, meine eben angestellten Überlegungen haben aus didaktischen Gründen so getan, als gäbe es wirklich negative oder positive komplexe Zahlen. Das ist in der Tat nur für rein reelle oder rein imaginäre Zahlen der Fall. Aber die Grundüberlegung stimmt trotzdem: wenn sich der Betrag der in den Transformator geschmissenen Zahl mehr als verdoppelt, kann niemals wieder genug davon abgezogen werden, um das Wachstum der Ausgabefolge aufzuhalten.
Insgesamt gilt daher, dass eine komplexe Zahl, deren Betrag größer ist als 2, kein Element der Mandelbrotmenge sein kann. Daher kann man unseren Transformator anhalten, wenn zum ersten Mal eine Zahl mit einem Betrag größer als 2 in den Eingang eingeworfen werden soll, denn ab diesem Moment würde unser Transformator früher oder später eine Zahlenfolge ausspucken, die ins Unendliche abdriftet.
Kurz: „Trafo liefert mehr als Zwei? c ist leider nicht dabei!”
Zusammengefasst
Nach all dem eben gesagten, ist die Mandelbrotmenge nach folgendem Kochrezept bestimmt:
- Man nehme eine komplexe Zahl c, für die man entscheiden will, ob sie zur Mandelbrotmenge gehört oder nicht
- Man stelle c an den Schiebereglern des Mandelbrot-Transformator ein
- Man lasse den so voreingestellten Transformator mit einer Null beginnend loslaufen und nehme ab dann immer die zuletzt rechts ausgegebene Zahl als neue Eingabezahl für oben
- Es entsteht so eine potenziell unendliche Folge von Ausgabezahlen. Kommt darin jemals eine Zahl vor, die größer als Zwei ist, gehört c nicht zur Mandelbrotmenge. Andernfalls gehört c zur Mandelbrotmenge.
- In der Praxis muss man den Transformator nach einer vorab festzulegenden Zahl an Durchläufen (Iterationen) gewaltsam anhalten, wenn bis dahin nicht schon die Überschreitung der 2 festgestellt werden kann, denn sonst rechnet man für jeden einzelnen Zugehörigkeitstest unter Umständen seeeeehr lange. Die zu testende Zahl c ist dabei im Falle eines solchen Gewaltabbruchs als Mitglied der Mandelbrotmenge werten.
Um das Ganze noch ein wenig ansprechender zu veranschaulichen, habe ich hier mal das komplette Kochrezept für die komplexe Zahl -1+0,25×i in Form einer Animation durchgespielt. Man sieht dort, zunächst, wo diese Zahl in der Komplexen Ebene liegt. Dann sieht man, wie der Mandelbrot-Transformator auf diese Zahl voreingestellt wird, bevor er mit einer Null am Eingang gestartet wird. Anschließend sieht man den Transformator laufen und nacheinander seine Zahlen ausgeben. Die Beträge der ersten hundert davon sind dann in einer Grafik zu sehen, anhand derer man gut erkennen kann, dass die Zahlenfolge stets unterhalb der Zwei bleiben wird, weswegen -1+0,25×i auch tatsächlich zur Mandelbrotmenge gehört:
Jetzt, wo wir wissen, wie man für eine beliebige komplexe Zahl berechnen kann, ob sie Element der Mandelbrotmenge ist oder nicht, können wir uns als nächstes der Frage widmen, wie man zu den unglaublich formen- und farbenreichen Bildern kommt, die in dem Video aus dem ersten Beitrag dieser Serie zu sehen waren. Davon wird der nächste Beitrag handeln.
Alles Liebe
Daniel
Da hast Du Dich ja mächtig ins Zeug geworfen, mit dem “Apparatus” und dessen Animation! Chapeau!
Ich verstehe zwar nicht alles, bin aber mächtig beeindruckt! Shkojach, Brider!