Mandelbrotmenge Erzeugen und analysieren

Werbung
Mandelbrotmenge
Erzeugen und analysieren
Mandelbrotmenge
Erzeugen und analysieren
Maturaarbeit
von
Martin Wirz
Betreut durch
Peter Hohler
Kantonsschule Olten
2002
Mandelbrotmenge: erzeugen und analysieren
Inhaltsverzeichnis
0 Inhaltsverzeichnis
1 Allgemeines zu Fraktalen.................................................................................................7
1.1 Einführung in die fraktale Geometrie
7
1.1.1 Aufbau eines Fraktals
7
1.1.2 Definition eines Fraktals
9
1.2 Dimension eines Fraktals
9
1.2.1 Berechnung der Dimension
9
2 Die Mandelbrotmenge.......................................................................................................11
2.1 Biographie von Benoit Mandelbrot
11
2.2 Die Mandelbrotmenge
12
2.2.1 Analyse der Mandelbrotmenge
13
2.2.1.1 Mathematische Definition
13
2.2.1.2 Achsensymmetrie
14
2.2.1.3 Iteration
14
2.2.1.3.1 Orbit
14
2.2.1.3.2 Iterationsgrenze
15
2.2.1.4 Startwert Z 0
18
2.2.1.5 Die Geleichung Z n +1 = Z nk + c
18
2.2.2 Die Juliamenge
2.2.2.1 Zusammenhang zwischen Julia- und Mandelbrotmenge
19
19
3 Programmieren der Mandelbrotmenge..........................................................................21
3.1 Aufbau des Algorithmus
21
3.2 FraCalc
23
3.2.1 FraCalc für Windows
24
3.2.2 FraCalc für den TI92plus
25
3.2.2.1 TIBasic Programm
25
3.2.2.2 Assembler Programm
26
4 Mathematische Hintergründe und Grundwissen...........................................................28
4.1 Iteration
28
4.2 Fixpunkt
28
4.3 Orbit
28
4.4 Fluchtpunkte/Gefangenenmenge
29
5. Zusammenfassung............................................................................................................30
6 Anhang...............................................................................................................................31
6.1 Literaturliste
Anhang A
31
6.1.1 Bücher
31
6.1.1.1 Texte
31
6.1.2 Internet
31
6.1.3 Software
32
6.2 Sourcecode
Anhang B
33
1 Allgemeines zu Fraktalen
1 Allgemeines zu Fraktalen
1.1 Einführung in die fraktale Geometrie
Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keine
Kreise. Die Rinde ist nicht glatt - und auch der Blitz bahnt sich seinen
Weg nicht gerade...
Die Existenz solcher Formen fordert uns zum Studium dessen heraus,
was Euklid als formlos beiseite lässt, führt uns zur Morphologie des
Amorphen. Bisher sind die Mathematiker jedoch dieser
Herausforderung ausgewichen. Durch die Entwicklung von Theorien,
die keine Beziehung mehr zu sichtbaren Dingen aufweisen, haben sie
sich von der Natur entfernt. Als Antwort darauf werden wir eine neue
Geometrie der Natur entwickeln und ihren Nutzen auf verschiedenen
Gebieten nachweisen. Diese neue Geometrie beschreibt viele der
unregelmässigen und zersplitterten Formen um uns herum - und zwar
mit einer Familie von Figuren, die wir Fraktale nennen werden...
Benoit Mandelbrot 1975
Die fraktale Geometrie der
Natur
Die normale Geometrie ist schlecht an die Natur angepasst. Sie ist aus Punkten, Geraden,
Kreisen oder Dreiecken aufgebaut. Doch diese Formen kommen in unserer Umwelt selten
vor. Nur bei Gegenständen, die vom Menschen geschaffen wurden, kann man solche
geometrischen Elemente erkennen. Will man das Blatt eines Baumes oder eine Wolke mit
diesen geometrischen Formen beschreiben, müssen wir viele dieser Formen
zusammensetzten. Ein simpler LEGO-Baukasten ist ein anschaulicher Vergleich: mit
einfachen, vorgegebenen Elementen kann etwas Komplexes aufgebaut werden. Die fraktale
Geometrie ersetzt die Grundbausteine unseres Baukasten durch Rechenvorschriften
,Algorithmen, die der jeweiligen Form angepasst sind.
Mandelbrot, ein polnischer Mathematiker, hat anhand eines Beispiel verdeutlicht, wie
zerklüftet unsere Welt in Wirklichkeit ist: „Wie lange ist die Küste Grossbritanniens?“1 .
Wenn wir einen Atlas aufschlagen, nachmessen und mit dem Massstab umrechnen, kommen
wir schnell auf eine Kilometerzahl. Nehme wir eine Karte mit einer grösseren Auflösung,
erscheinen immer kleinere Buchten, diese Buchten haben aber wieder Vorsprünge und
Einschnitte. Die Küstenlinie wird immer länger. Man kann dies bis zur Atomgrösse treiben.
Mandelbrot kam zur Erkenntnis, dass Küstenlinien unendlich lang seien. Dies ist eine weitere
Eigenschaft von fraktalen Gebilden.
1.1.1 Aufbau eines Fraktals
Ein Fraktal zeichnet sich dadurch aus, dass gleiche Formen in verschiedensten Grössen immer
wieder auftreten und ein beliebig kleiner Ausschnitt die gleiche Struktur wie das
Originalobjekt aufweist. So ist eine einzelne Blumenkohlrose in ihrem Aussehen identisch
zum ganzen Kohl, jedoch wesentlich kleiner. Bricht man von dem kleinen Teilblumenkohl
wieder ein Segment weg, so entsteht ein neuer Blumenkohl, der zum ganzen Blumenkohl
wieder ähnlich ist. Dies kann natürlich fast beliebig weitergeführt werden. In der Natur stösst
1
Die fraktale Geometrie der Natur. Benoit Mandelbrot, 1975
-7Maturaarbeit 2002, Martin Wirz
1 Allgemeines zu Fraktalen
man allerdings an Grenzen. Rein mathematisch gesehen gibt es keine Grenzen. Die einzelnen
Blumenkohlrosen sind theoretisch bis ins Unendliche dem Originalkohl ähnlich.
Fraktale sind also immer selbstähnlich, d.h. die Gesamtstruktur eines Fraktals ist aus kleineren
Strukturen zusammengesetzt, welche die gleiche Form wie das Original aufweisen.
Eines der einfachsten Fraktale ist die Cantormenge (Abb. 1.1). Um dieses Fraktal zeichnen zu
können, nimmt man eine Strecke und entfernt den mittleren Drittel. Bei den verbleibenden
zwei Teilstrecken entfernt man wiederum das mittlere Drittelstück. Diese Prozedur lässt sich
bis ins Unendliche weitertreiben. Wenn man nun ein Gebiet dieser Menge heraus zoomt
erscheint eine Figur, welche zur Originalmenge selbstähnlich ist. Die Cantormenge ist
demzufolge ein typisches Fraktal.
Abb. 1.1
Die Cantormenge
Ein weiteres, sehr berühmtes Fraktal ist die Kochsche Kurve (Abb 1.2). Der schwedische
Mathematiker Helge von Koch publizierte dieses Fraktal bereits 1906. Die Grundfigur besteht
bei diesem Fraktal aus vier gleich langen Strecken, die wie in Abbildung 1.2a angeordnet
sind.
Abb. 1.2a
Grundfigur der
Kochschen Kurve
Abb. 1.2b
Kochsche Kurve mit
der Iteration 5
Ersetzt man in der Grundfigur jede Strecke durch einen zu der Grundfigur ähnlichen
Steckenzug ,natürlich einen verkleinerten Streckenzug, so erhält man eine neue Form.
Wiederholt man dies noch einigen Male, entsteht eine interessante selbstähnliche, also
fraktale, Figur.
Fraktale findet man oft in der Natur. Eines der schönsten Fraktale ist das Farnblatt (Abb 1.3).
Es ist ebenfalls selbstähnlich. Jedes Teilblatt gleicht dem gesamten Blatt.
Abb. 1.3
Ein fraktales Farnblatt. Erzeugt am
Computer
-8Maturaarbeit 2002, Martin Wirz
1 Allgemeines zu Fraktalen
Warum die Natur auf selbstähnliche Formen zurückgreift ist leicht verständlich. Ein Blatt
muss sehr komplex sein, um den hohen Anforderungen der Umwelt gerecht zu werden. Die
Natur wählt auf natürliche Art den einfachsten Weg. Sie setzt immer und immer wieder
dieselbe Grundform ein. So kann sie enorme Einsparungen im Bereich der Definition des
Aussehens machen und gleichzeitig die Leistungsfähigkeit vergrössern, da alles nach einem
ähnlichen Muster abläuft. Ähnliche Muster erkennt man auch im menschlichen Blutsystem
oder in den Lungen.
Sogar Bäume sind grob gesehn nach fraktalen Reglen aufgebaut (Abb 1.4). Die
Verzweigungen der Äste geht bis ins Kleinste, ja sogar bis in die Blätter, immer weiter.
Abb. 1.4
Fraktale Gebilde am Beispiel des
Baumes
Fraktale Formen dienen aber auch dazu, eine optimale Anpassung an die Umgebung zu
bilden. Bei Bäumen geht es Oberirdisch um eine möglichst optimale Ausnutzung der
Oberfläche . Dies ermöglicht ein Optimum an Absorption von Licht einerseits und Austausch
von Stoffen (z.B. Wasser, CO2, und O2) andererseits. Unterirdisch sorgt das fraktale
Wurzelgeflecht für eine möglichst grosse flächenmässige Erschliessung zur Gewinnung von
Wasser und Mineralstoffen.
1.1.2 Definition eines Fraktals
Der Name „Fraktal“ kommt von „fractus“ (lat. = gebrochen) und bezeichnet die Dimension
dieser Gegenstände. Sie liegen zwischen zwei ganzen Zahlen. Der Begriff Fraktal trifft aber
auch das Erscheinungsbild der Fraktale, die oft zerbrochen und stark zergliedert aussehen.
1.2 Dimension eines Fraktals
Wie kann man sich eine gebrochene Dimension vorstellen? Geraden, glatte Flächen und
Würfeln sind keine Fraktale. Sie haben die Dimensionen 1, 2 oder 3. Die meisten realen
Gebilde haben aber Kerben, Einbuchtungen und Löcher. Sie füllen den Raum nicht ganz aus.
Ihre Dimension liegt zwischen zwei und drei.
1.2.1 Berechnung der Dimension
Eine Linie kann in N identische Teile zerlegt, also um den Faktor f = N1 verkleinert werden
und sie bleibt trotzdem eine Linie. Auch bei zwei- und dreidimensionalen Figuren findet man
eine entsprechende Skaleneigenschaft. Zerlegt man etwa ein Quadrat in N identische
Teilquadrate, so wird jede Seite dieser Teile auf den Bruchteil f = 112 des ursprünglichen
N
-9Maturaarbeit 2002, Martin Wirz
1 Allgemeines zu Fraktalen
Quadrats verkleinert. Die N Miniaturwürfel, die sich bei einer entsprechenden Zerlegung
eines Würfels ergeben, werden auf f = 113 hinunterskaliert.
N
Die Formel lautet also: f =
1
N
1
D
; wobei f der Massstab ist, N die Anzahl der Teile und D
die Dimension des Gebildes.
Um die Dimension zu erhalten, braucht man lediglich diese Formel nach D aufzulösen.
D=
log( N )
log( 1f )
Der Skalierungsfaktor f beschreibt die Grössenverhältnisse von selbstähnlichen Objekten bei
Ähnlichkeitstransformationen. Einen solchen Skalierungsfaktor sollte auch auf andere
selbstähnliche Formen, also auf fraktale Gebilde, anwendbar sein.
Die Kochsche Kurve ist ein gutes Beispiel.
Die Kochsche Kurve wurde dadurch generiert, dass ein Liniensegment in N = 4 identische
Teile zerlegt wurde. Jedes Teilstück besitzt eine Länge von f = 13 der ursprünglichen Länge.
Die Dimension der Kochschen Kurve beträgt also:
N)
4)
D = log(
= log(
log( 3 ) = 1.26
log( 1 )
f
D ist also eine gebrochene oder (nach Mandelbrot) fraktale Dimension. Eine gebrochene
Dimension zwischen 1 und 2 charakterisiert ein Objekt zwischen Linie und Fläche.
Länge der Linie: 1 Einheit (z.B. Kilometer);
Massstab 1:3; Ergebnis: 3 Teile.
Fläche des Quadrats: 1 quadratische Einheit (z.B.
Quadratzentimeter); Massstab 1:3; Ergebnis: 9 Teile.
Volumen des Würfels: 1 kubische Einheit (z.B. Kubikmeter); Massstab
1:3;
Ergebnis: 27 Teile.
Die Dimension der Linie beträgt: Dlinie =
log( 3 )
log( 3 )
=1
Die Dimension des Quadrats beträgt: DQuadrat =
Die Dimension des Würfels beträgt: DWürfel =
log( 9 )
log( 3)
log( 27 )
log( 3)
=2
=3
- 10 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
2. Die Mandelbrtomenge
2.1 Biographie von Benoit Mandelbrot
Abb. 2.1
Benoit Mandelbrot
Benoit Mandelbrot wurde 1924 in Polen geboren. Als Benoit 12 Jahre alt war, verliess seine
Familie Polen und wanderte nach Paris aus. Benoit wurde von seinem Onkel, der
Mathematikprofessor an einem französischen Collège war, unterrichtet. Der Einfluss seines
Onkels war sowohl positiv wie auch negativ. Schon früh erlangte Mandelbrot gefallen an der
Schönheit der Mathematik. Allerdings interessierte er sich nicht für die sonst übliche
theoretische Mathematik. Im gefiel die angewandte Mathematik sowie die Geometrie. Sein
Onkel war damit nicht einverstanden, da dieser Zugang zur Mathematik zu dieser Zeit sehr
unkonventionell und neu war. Mandelbrot besuchte bis zum Anfang des 2. Weltkrieges ein
Lycée in Paris. Während der Besetzung Paris zog seine Familie nach Tulle in
Zentralfrankreich um. Der Krieg verhinderte einen regelmässigen Schulbesuch, so dass
Mandelbrot sich vieles selbst beibringen musste. Diese ungewöhnliche Ausbildung erwies
sich als einen grossen Vorteil. Sie erlaubte es ihm, seine unkonventionelle Denkweise zu
fördern und half ihm, einen sehr geometrischen Zugang zur Mathematik zu entwickeln. Seine
bemerkenswerte geometrische Intuition und sein Vorstellungsvermögen erlaubten ihm
ungewöhnliche und neuartige Einsichten in mathematische Probleme zu erlangen. Nach
bestandener Aufnahmeprüfung begann er 1944 an der Ecole Polytechnique zu studieren.
Nachdem er sein Studium erfolgreich beendet hatte, entschloss er sich an das California
Institute of Technology in den USA zu wechseln. Anschliessend ging er zum Institute of
Advanced Study nach Princeton USA. 1955 kehrte Mandelbrot nach Frankreich zurück. In
dieser Zeit lernte er seine zukünftige Frau Aillette Kagan kenne, welche er kurze Zeit später
heiratete. Das schlechte Arbeitsklima unter den Wissenschaftlern in Frankreich bewog ihn
1958 endgültig in die USA auszuwandern. Hier begann er bei IBM in den berühmten
Laboratorien in Yorktown Heights in New York State zu arbeiten.
Bei IBM konnte Mandelbrot sehr vielen interessanten Ideen, welche ihn schon seit längerem
beschäftigten, nachgehen. Er sagte, dass keine andere Universität ihm solche Freiheit in der
Wahl der Forschungsthemen bieten könnte.
1970 arbeitete Mandelbrot im Watson Research Center von IBM, wo er zum ersten Mal die
Mandelbrot-Menge grafisch darstellte. Dazu musste er nicht nur neue mathematische Ideen
entwickeln, sondern auch eines der ersten Computerprogramme schreiben, welches Grafiken
darzustellen vermag.
Seine Arbeit veröffentlichte er in seinem Buch "Les objects fractal, forn, hasard et dimension"
(1975) und ausführlicher in "The fractal geometry of nature" [1982].
Mandelbrot arbeitete auf vielen Gebieten. Es war eine bewusste Entscheidung in den jungen
Jahren, Beiträge zu vielen unterschiedlichen Wissenszweigen zu leisten. Seine Vielseitigkeit
- 11 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
ermöglichte es ihm, Fraktale überall zu finden: in der Physik, in chaotischen Systemen, in der
Wirtschaft, in der Physiologie und in der Biologie.
2.2 Die Mandelbrotmenge
Die Generierung von Fraktalen ist nicht beschränkt auf geometrische Regeln und Figuren. Ein
Fraktal kann auch das Ergebnis einer mathematischen Abbildung sein. Das wohl berühmteste
Beispiel eines Fraktals, welches auf diese Weise erzeugt wurde, ist das von Benoit
Mandelbrot entdeckte sogenannte Apfelmännchen. Den Namen erlangt das Gebilde durch
sein Aussehen. Die verschiedenen Ausbuchtungen gleichen apfelähnlichen Gebilden,
zusammen sehen sie dann wie ein Männchen, ein Apfelmännchen, aus.
Dieser Figur liegt einer sehr einfachen mathematischen Formel zugrunde.
Z n+1 = Z n + c
2
Iteriert man diese Formel für eine bestimmte Zahl c aus der komplexen Ebene, wird man
feststellen, dass das Ergebnis der Iterationen, also der Orbit, für gewisse c konvergiert, also
gegen einen Wert strebt, und für die restlichen c divergiert, also über einen Grenzwert in
Richtung Unendlich strebt.
2
Die c , für welche die Funktion Z n +1 = Z n + c beim Iterieren konvergieren, überschreiten
einen Grenzwert nie, sie bleiben gefangen. Alle Zahlen c in der komplexen Ebene, welche
divergieren, bilden die Gefangenenmenge. Die Gefangenenmenge wird auch als
Mandelbrotmenge bezeichnet.
Zeichnet man alle Punkte, welche in einer gewissen Iterationszahl den Grenzwert nicht
überschreiten, in der Gausschen Zahlenebene ein, so entsteht eine Fraktal: Das
Apfelmännchen mit seiner charakteristischen Figur (Abb. 2.2). Alle Punkte, die nicht
divergieren, werden schwarz eingefärbt.
Abb. 2.2
Grundfigur des Apfelmännchens
Das Besondere and dieser Figur ist, dass ihr Rand nicht glatt, sondern fraktal, ist und bei
näherem Hinzoomen (durch Vergrösserung eines Ausschnittes) einen unerschöpflichen
Reichtum von selbstähnlichen Mustern und Strukturen offenbart.
Je tiefer man in das Apfelmännchen hineinzoomt, desto einzigartiger werden die Figuren. An
einigen Stellen findet man kleinere Arten von Apfelmännchen, die dem Original sehr ähnlich
sind, aber dennoch nie eine exakte Kopie des Originals darstellen.
Auch wenn die Mandelbrotmenge als Ganzes gesehen nicht selbstähnlich ist, besitzt sie doch
eine annähernd selbstähnliche Unterstruktur, wie zum Beispiel Herzformen,
- 12 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Seepferdchenschwänze und Wirbel in Wirbel mit unendlich feinen Strukturen (Abb. 2.3).
Erstaunlich ist, dass diese einzigartige Figur aus einer einfachen quadratischen Gleichung
resultiert.
Auch wenn Teile der Mandelbrotmenge wie isolierte Punkte aussehen, ist die Menge in
Wirklichkeit eine zusammenhängende Menge. Allerdings ist nicht bekannt, ob die Menge
überall lokal zusammenhängend ist. Ein Kreis aus dem ein einziger Punkt entfernt wurde, ist
immer noch zusammenhängend, jedoch nicht überall lokal zusammenhängend: Punkte auf
verschiedenen Seiten der Lücke, egal wie eng sie auch zusammenliegen, sind nur noch über
einen langen kreisförmigen Bogen zu erreichen.
Aus der Theorie der Mandelbrotmenge erkennen wir, dass die Komplexität, die wir in vielen
Naturphänomenen entdecken aus relativ einfachen Gesetzen hervorgehen kann. Es wird
deutlich, dass komplexes Verhalten nicht nur von komplexen Gesetzen abhängt.
Abb. 2.3
Zoom in die Mandelbrotmenge
2.2.1 Analyse der Mandelbrotmenge
2.2.1.1 Mathematische Definition
2
Iteriert man die Funktion Z n +1 = Z n + c mit c ∈ Komplexer Zahlen . Divergiert die Funktion
nicht, so ist c ein Element der Mandelbrotmenge. Die Menge aller nichtdivergenten Punkte
c ∈ Komplexer Zahlen bilden die Mandelbrotmenge M. Man definiert daher die ideale
Mandelbrotmenge M
M = {c ∈ C | lim c n →
/ ∞ }
n→∞
Mit der Iterationsfunktion Z n +1 = f ( Z n ) = Z n + c Z , c ∈ C
2
Für die Darstellung am Computer muss man sich aber auf die realistische Mandelbrotmenge
beschränken.
M = {c ∈ C | c n < A, n ≤ N }
Wobei A den Orbitalgrenzwert und N die Iterationstiefe angibt.
Im Weiteren wird nur noch, sofern nichts anderes angegeben ist, die Iterationsfunktion
2
Z n +1 = f ( Z n ) = Z n + c Z , c ∈ C
betrachtet. Zu beliebig anderen Iterationsvorschriften lassen sich aber genauso
Mandelbrotmengen berechnen.
- 13 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
2.2.1.2 Achsensymmetrie2
Betrachtet man das Apfelmännchen, so liegt die Vermutung nahe, dass es achsensymmetrisch
bezüglich der reellen Achse (x-Achse) ist. Zwei Punkte der Zahlenebene, die
achsensymmetrisch zueinander sind, müssen drei Bedingungen erfüllen:
Definition:
REALTEIL =ˆ ℜ
IMGINÄRTEI L =ˆ ℑ
Punkt1 =ˆ P1
Puntk 2 =ˆ P2
Bedingung:
ℜ( P1 ) = ℜ( P 2 )
ℑ( P1 ) = ℑ( P2 )
ℑ( P1 ) = −ℑ( P2 )
Solche Zahlen werden als konjugiert komplexe Zahlen c bezeichnet. Damit c ∈ M muss
lim c n →
/ ∞ gelten (siehe oben).
n →∞
Es sei c = a + ib dann gilt:
f ( Z ) = c 2 + c = (a + ib) 2 + (a + ib) = (a 2 − b 2 + a ) + i (2ab + b)
f ( Z ) = c 2 + c = (a − ib) 2 + (a − ib) = (a 2 − b 2 + a ) − i (2ab + b)
Da c = a 2 + b 2 gilt, ist f ( Z ) = f ( Z ) . Es gilt auch f n ( Z ) = f n ( Z ) ,
_____
Da f ( Z ) = f ( Z ) ist und weil f (Z ) und f (Z ) im nächsten Iterationsschritt an Stelle von c
für Z in f (Z ) eingesetzt werden. Damit ist c ∈ M , wenn c ∈ M gilt.
Betrachtet man ein beliebiges c , so ergibt sich aus obiger Betrachtung c n = c n , das heisst,
die Punkte entfernen sich gleich schnell von ihren Standort.
2.2.1.3 Iteration
2.2.1.3.1 Orbit
Beim Iterieren eines einzelnen Punktes erkennt man schnell, ob er konvergiert, also zu M
gehört oder ob er divergiert → ∞ .
Beispiele von Orbits mit Z 0 = 0
c1 = 0.22 + 0.7i
Die Funktion
c1
=> c ∉ M
divergiert
f (c)
c 2 = −0.7 − 0.4i
f (c)
divergiert für c 2
=> c ∉ M
Die Funktion
c3 = 0.22 + 0.7i
f (c)
konvergiert für c3
=> c ∈ M
Die Funktion
2
Beweis von
http://www.schloesinger.de/deutsch/mandelbrot-_u_juliamengen
- 14 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Wie schnell ein Punkt divergiert oder ob er ein Element der Mandelbrotmenge ist, hängt von
seinen Koordinaten ab. Kleinste Veränderungen der Koordinaten können zu enormen
Veränderungen des Orbits führen.
Abb. 2.4
Verlauf des Orbits für
4 Punkte
Die Abbildung 2.4 zeigt den Iterationsverlauf (Orbit) für vier verschiedene Punkte. Zwei
dieser Iterationsverläufe (Orbits) bleiben gefangen, die Startwerte c sind also Elemente der
Mandelbrotmenge. Für die andern zwei Punkte divergiert die Iteration Richtung ∞ .
2.2.1.3.2 Iterationsgrenze
Nach einer gewissen Iterationsanzahl
Funktion f ( Z n ) c ∉ M den
Orbitalwert 2. Ist dieser Grenzwert überschritten, strebt die Funktion f ( Z n ) → ∞ .
Um diesen Sachverhalt beweisen zu können, verwendet man die vollständige Induktion. Der
Beweis3 wird wie folgt geführt:
überschreitet
die
Divergenz der Menge für |c|>2:
Z0 = 0
Z1 = c
Z2 = c2 + c
3
Beweis von
http://www.stud.tu-muenchen.de/~andreas.putz/fraktal/beweis.htm#Ist |zn|
Überarbeitet mit Herrn Hohler
- 15 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Es sei |c| = 2+t wobei t > 0
Bedingung: Falls c > 2 , dann ist Z n ≥ 2 + n * t
Verankerung: Z 1 = c = 2 + t = 2 + 1 * t
Induktionsschritt: Z n ≥ 2 + n * t
Z n +1 ≥ 2 + (n + 1) * t
Z n +1 = Z n + c ≥ Z n − c = (2 + n * t ) 2 − (2 + t ) = 2 + 4nt + n 2 t 2 − t ≥
2
2
*1
2 + 4nt − t = 2 + (4n − 1)t > 2 + (n + 1)t
Durch diese Induktion ist bewiesen, dass die Folge jeden Wert übersteigt, wenn n
hinreichend gross ist. Somit ist also auch gezeigt: Ist |zn| > 2 für beliebiges n, so ist (zn)
unbeschränkt.
Ist Z n > 2 für beliebiges n, so ist Z n unbeschränkt.
Ist c > 2 so ist diese Aussage nach dem vorherigen Beweis trivial.
Sei nun c ≤ 2
Sei Z n = 2 + t
t>0
Z n +1 = ( Z n ) 2 + c ≥ ( Z n ) 2 − c ≥ 2 + t − 2 = 4 + t 2 + 4t − 2 ≥ 2 + 4t
2
*1
Damit zeigt sich durch Induktion wie oben, die Behauptung.
*1
Dreiecksungleichung
a+b ≥ a − b
a.b ∈ C (komplexen Zahlen)
Nun stellt sich dazu eine weitere interessante Frage:
Nach wie vielen Iterationen überschreitet die Funktion f ( Z n ) den Orbitalwert?
Um dieses Problem lösen zu können zählt man alle Punkte, die nach einer bestimmten
Iterationsanzahl den Orbitalwert verlassen, zusammen. So ergibt sich zum Beispiel, dass bei
einem 100*100 Pixel grossen Bild der gesamten Mandelbrotmenge 744 Punkte den
Orbitalwert nach genau 2 Iterationen verlassen.
Zeichnet man diese Punkte in einem Diagramm ein, so entsteht eine Art Glockenkurve (Abb.
2.5).
Offensichtlich verlassen die meisten Punkte den Orbitalwert in den ersten fünf
Iterationsstufen. Erstaunlich ist, dass, betrachtet man den Ausschnitt der gesamten
Mandelbrotmenge, nach drei Iterationsstufen die meisten Funktionen f ( Z n ) mit c den
Orbitalwert bereits verlassen haben. Dieser Sachverhalt ist unabhängig von der Bildgrösse
und von der gesamtmöglichen Iterationsanzahl N . Lediglich der Bildausschnitt spielt eine
Rolle.
- 16 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Iterationsstufe
Punkt
Iterationen
Abb. 2.5
Iterationsverlauf
Anzahl
c >2
bei 1. Iteration
c >2
bei 2. Iteration
c >2
bei 3. Iteration
c >2
bei 4. Iteration
c >2
bei 5. Iteration
c >2
bei 6. Iteration
c >2
bei 7. Iteration
c >2
bei 8. Iteration
c >2
bei 9. Iteration
c >2
bei 10. Iteration
632
744
2432
1176
740
442
310
201
160
105
Betrachtet man ein 100 auf 100 Pixel grosses Feld, so divergieren 7421 Punkte bei einer
Iterationstiefe von 20. Der Rest (2579 Pixel) bildet die Gefangenenmenge.
Nach 10 Iterationsschritte haben bereits 6942 von den insgesamt 7421 Punkten, welche
divergieren, den Grenzwert von 2 bereits überschritten.
Daraus kann man schliessen, dass die Funktion f ( Z n ) mit dem Startwert c entweder nach
wenigen Iterationen bereits definitiv in Richtung ∞ strebt oder c ∈ M ist. Die Form des
Apfelmännchens wird im Groben schon nach wenigen Iterationen ersichtlich. Eine grössere
Iterationszahl verfeinert die Form nur noch im Detail (Abb. 2.6).
Abb. 2.6
Apfelmännchen
mit verschiedenen
Iterationen
Iterationszahl 20
Iterationszahl 100
Diese zwei Bilder verdeutlichen die Aussage. Die Form des Apfelmännchen hat sich nicht
grundlegend verändert, obwohl die Iterationszahl 5 mal höher ist. Lediglich die Randlinie
wurde verfeinert.
Das Erhöhen der Iterationszahl ist beim Zoomen in die Mandelbrotmenge wichtig. Untersucht
man einen Ausschnitt der Mandelbrotmenge im Randbereich, erkennt man sofort, dass je nach
Iterationszahl das Bild unterschiedlich, jedoch mit ähnlichem Grundmuster, herauskommt. Je
grösser die Iterationszahl gewählt wurde, desto detaillierter erscheint das Bild (Abb 2.7).
Abb. 2.7
Ausschnitte des
Apfelmännchen mit
verschiedenen Iterationen
Iterationszahl 20
Iterationszahl 100
- 17 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Aus diesen beiden Sachverhalten ergibt sich folgenden Grundsatz für die Randlinie der
Mandelbrotmenge:
Je näher sich der Punkt c ∉ M am Rande der Mandelbrotmenge befindet, desto schneller
divergiert die die Funktion f ( Z n ) mit c → ∞ .
2.2.1.4 Startwert Z 0
Z 0 , der Startwert der Iterationsfolge f (Z ) , wird bei der Mandelbrotmenge 0 gesetzt. Durch
diesen Wert kommt bei der Iteration der Punkte das typische Apfelmännchen hervor. Was
ergibt sich, wenn der Startwert Z 0 ≠ 0 ist? Da bei der Erzeugung fraktaler Strukturen immer
wieder ein und dieselbe Anweisung ausgeführt wird, hängt das Endprodukt empfindlich von
den Startwerten ab, mit denen man die Berechnungen beginnt. Die kleinste Abweichung vom
Startwert Z 0 summiert sich schnell, da die Mandelbrotmenge durch eine quadratische
Gleichung erzeugt wird.
Warum aber wählt man Z 0 = 0 ?
0 ist der kritische Punkt von Z 2 + c . Ein kritischer Punkt ist ein Punkt, bei dem
d ' = dzd ( Z 2 + c) = 0 ist. An dieser Stelle hat die Kurve also ein Extremum. Wenn man aber
eine andere Funktion anstelle von Z 2 + c einsetzt, ändert sich auch der Startwert Z 0 . Für die
Funktion f ( Z ) = Z 2 + Z + c ist der kritische Punkt Z = − 12 , da die f ' ( Z ) = 2Z + 1 = 0 gelten
muss. In manchen Fällen kann eine Gleichung auch mehrere Extremitäten haben. Es gibt dort
mehrere kritische Werte, welche aber zum selben Resultat führen müssen.
Die kleinste Änderung des Startwertes kann sich fatal auf das Aussehen der
Mandelbrotmenge auswirken (Abb. 2.8).
Abb 2.8
Apfelmännchen mit
verschiedenen
Startwerten für
Z 0 = 0 + 0i
Z 0 = −0.25 + −0.125i
Z0
Z 0 = 0.5 + 0.5i
2.2.1.5 Die Geleichung Z n +1 = Z nk + c
Die Gleichung für die bekannte Mandelbrotmenge lautet Z n +1 = Z n + c . Was würde
2
2
geschehen, wenn man anstelle von Z n eine andere Bedingung verwendet? Es kommen
wieder frakte Gebilde heraus, die eine gewisse Ähnlichkeit mit der Mandelbrotmenge haben
(Abb. 2.9).
- 18 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
Abb. 2.9
Apfelmännchen mit
verschiedenen
Grundgleichungen
Z n +1 = Z n + c
3
Z n +1 = Z n + c
4
Solche Gebilde werden Multibrote genannt. Je höher der Exponent ist, desto eher gleicht das
Multibrot einem Kreis. Anstelle von einer Exponentialfunktion kann auch eine andere
Bedingung verwendet werden wie Logarithmusfunktionen. Das schönste aller Multibrote
2
bleibt aber jenes mit der Iterationsbedingung Z n +1 = Z n + c .
2.2.2 Die Juliamenge
Die Definition der Juliamenge erfolgt analog zu der Definition der Mandelbrotmenge. Bei
der Definition der Juliamenge unterscheidet man die ideale Juliamenge
J c = {c ∈ C | lim Z n →
/ ∞ }
n→∞
und die realistische Juliamenge
J c = {Z ∈ C | Z n < A }
Im Folgenden wird analog zur Betrachtung der Mandelbrotmenge nur die Funktion
2
Z n +1 = Z n + c betrachtet. Die komplexe Zahl c ist dabei der Kontrollparameter (vom
englischen „control“= steuern). Für Z setzt man Punkte des darzustellenden Bereichs der
Gausschen Zahlenebene ein. Z und c haben also gegenüber der Mandelbrotmenge ihre
Aufgabe getauscht.
2.2.2.1 Zusammenhang zwischen Julia- und Mandelbrotmenge
Die Zahlen c in der komplexen Zahlenebene bilden beim Iterieren der Funktion
2
Z n +1 = Z n + c mit Z 0 = 0 die Mandelbrotmenge M . Mit diesem Verfahren kann man also
herausfinden, ob sich ein Punkt c innerhalb der Mandelbrotmenge befindet oder nicht.
Möchte man aber wissen, wie sich die Iteration Z n +1 = Z n + c bei unterschiedlichen Z 0
verhält oder für welche Werte von Z 0 die iterierten Z 0 beschränkt sind, muss man zum
Modell der Juliamenge greiffen (Entdecker der Juliamenge: Gaston Maurice Julia im Jahre
1918). Die Juliamenge wird mit der selben Iterationsbedingung wie die Mandelbrotmenge
erzeugt: Z n +1 = Z n + c . Allerdings ist c bei der Juliamenge die Konstante (wird zu Beginn
definiert) und für Z 0 werden Punkte der komplexen Zahlenebene eingesetzt. Bei der
Mandelbrotmenge ist Z 0 = 0 . Man wandert Punkt für Punkt über die Gaussche Zahlenebene
und ermittelt c . Z 0 und c haben bei der Juliamenge ihre Aufgaben getauscht. So kann man
sagen: Für den gegebenen Parameter c bildet die Menge der Anfangswerte Z 0 , für die Z n
beschränkt (gefangen) sind, die sogenannte gefüllte Juliamenge J c . Die eigentliche
Juliamenge besteht aus den Randpunkten von J c .
Im Gegensatz zur Mandelbrotmenge hängt das Aussehen der Juliamenge vom
Kontrollparameter c ab. Dabei gibt es zwei prinzipielle Möglichkeiten. Die Juliamenge ist
- 19 Maturaarbeit 2002, Martin Wirz
2 Die Mandelbrotmenge
eine Staubwolke aus unendlich vielen Punkten, eine sogenannte „Cantormenge“, oder sie ist
zusammenhängend, das heisst an einem Stück. Um festzustellen, ob eine Juliamenge
verbunden ist oder nicht, reicht es aus, Z 0 = 0 mit c zu untersuchen. Divergiert dieser Punkt
beim Iterieren in Richtung ∞ , so ist J c nicht zusammenhängend. Divergiert Z 0 = 0 mit c
nicht, so ist die Juliamenge zusammenhängend. Daher kann man sagen, dass aus c ∈ M folgt,
J c ist zusammenhängend und umgekehrt, da die Mandelbrotmenge M die Menge aller nicht
divergierenden Punkten c ist. Dies ermöglicht den Rückschluss: Wenn der Punkt c aus dem
Innern (inkl. Rand) der Mandelbrotmenge M stammt, also c ein Punkt des Apfelmännchens
ist, ist die zugehörige Juliamenge J c zusammenhängend, andernfalls nicht. Es besteht also ein
direkter Zusammenhang zwischen der Julia- und der Mandelbrotmenge. Zu jedem Punkt der
Mandelbrotmenge existiert eine bestimmte Juliamenge (Abb. 2.9).
Abb 2.9
Die Mandelbrotmenge und die dazugehörige
Juliamenge
- 20 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
3 Programmieren der Mandelbrotmenge
3.1 Aufbau des Algorithmus
Die Kernfunktion des Apfelmännchenprogramms ist sehr einfach aufgebaut. Im Grunde
benutzt man nur die realistische Definition der Mandelbrotmenge
M = {c ∈ C c n < A, n ≤ N }
sowie die Grundfunktion
2
f ( z n ) = Z n +1 = Z n + c .
Des Weiteren definiert man eine Grafikebene in X- und Y-Richtung. In diesem Speicherfeld
,nennen wir es PicMain4, wird man später das Bild hineinspeichern.
Im ersten Teil des Programms wählt man eine quadratisches Gebiet in der komplexen Ebene
aus, welches näher untersucht werden soll.
Dazu speichert man die Koordinaten des linken unteren Punktes in 2 Variablen. Den Realteil
in die Variable XEcke, den Imaginärteil in die YEcke. Die Seitenlänge des Quadrates wird in
Quad gespeichert.
Im zweiten Teil wird ein Speicherfeld PicMain dem in im ersten Teil des Programms
definierten Quadrat angepasst. Dazu wird einer Variable namens Spaltenbreite die
Entfernung zwischen zwei Pixels zugewiesen. Spaltenbreite erhält man also, indem man
Quad durch die Anzahl Spalten (Pixel) im PicMain dividiert.
Spaltenbreite =
Quad
Width ( PicMain )
Der Bildfläche PicMain wird mit dieser Methode ein neues Koordinatensystem unterlegt,
welches eine individuelle und flexible Anpassung zulässt. Dieser Sacherverhalt vereinfacht
das Hineinzoomen in die Mandelbrotmenge. Eine Koordinatentransformation kann bei
Laufzeit vollzogen werden.
Der dritte Teil des Programms ist das Kernstück. In diesem Teil wird nach komplexen Zahlen
c gesucht, welche nach einer gewissen Iterationszahl einen Grenzwert (Orbitwert) nicht
verlassen haben, also Elemente von M, der Mandelbrotmenge, sind. Dieser Schritt lässt sich
in vier Teilschritte zerlegen. Angenommen, das Programm arbeitet gerade am Pixel P mit dem
X-Wert n und dem Y-Wert m, so soll das Programm folgende Schritte durchführen:
Schritt 1:
Berechnung der komplexen Zahl c(Cr / Ci ) , die diesem Pixel P(xkoor, ykoor)
entspricht. Um den Realteil (nennen wir ihn Cr) von c zu erhalten, addiert man
xkoor*Spaltenbreite zu XEcke. Für den Imaginäreteil (Ci) von c addiert man
ykoor*Spaltenbreite zu YEcke. Die imaginäre Zahl i kommt im Programm nicht
vor, da es von Computern (meist) nicht unterstützt wird. Eine Ausnahme bildet der
TI92plus, dessen interne Programmiersprache (TIBasic) die imaginäre Zahl i
vollumgänglich unterstützt.
Der Visual Basic Code ist für den Schritt 1 ist wie folgt aufgebaut:
Spaltenbreite = Quad / Width(PicMain)
Cr = xkoor * spaltenbreite + XEcke
Ci = ykoor * spaltenbreite + YEckee
4
Entspricht einer Variablen
- 21 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
Schritt 2:
Man setzt eine komplexe Variable Z (Realteil Zr, Imaginärteil Zi) auf Z 0 = 0 + 0i
(also Zr=0, Zi=0) welches dem Startwert entspricht, sowie eine Zählvariable ZÄHLER
auf 0. Danach wiederholt man die folgenden drei Schritte, bis entweder der Betrag von
Z grösser als die Orbitgrenze 2 ist, oder ZÄHLER grösser als der vordefinierte
Iterationswert (MaxIters) ist.
Z = Z2 +c
ZÄHLER = ZÄHLER + 1
Betrag = Betrag von Z = ( Zr ) 2 + ( Zi ) 2
Warum soll dieser Iterationsprozess abgebrochen werden, sobald der Betrag von Z
grösser als 2 ist? Ein komplexer Beweis zeigt, dass die interessanten Bereiche der
Mandelbrotmenge sich innerhalb einem Kreis mit dem Radius 2 befinden. Ist der
Betag von z grösser als 2, befindet sich der Punkt ausserhalb von M und strebt gegen
∞.
Der Visual Basic Code ist für den Schritt 2 ist wie folgt aufgebaut:
While Sqr(Zr * Zr + Zi * Zi) <= 2 and ZÄHLER<= MaxIters
'<***KERNALGORITHMUS***>
’Realteil
t1 = Zr * Zr - Zi * Zi
’Imaginärteil
t2 = 2 * Zr * Zi
ZÄHLER = t1 + Cr
ZÄHLER = t2 + Ci
ZÄHLER = ZÄHLER + 1
'</***KERNALGORITHMUS***>
Wend
Schritt 3:
Als letzter Schritt wird dem Pixel P(xkoor, ykoor) je nach dem Wert von ZÄHLER
eine Farbe zugewiesen. Anschliessend zeichnet man das Pixel(xkoor, ykoor) im Bild
PicMain ein. Zur Farbgebung eines Pixels sind keine Grenzen gesetzt. Hier kann der
Programmiere seine Fantasie voll ausleben lassen.
Konvergiert Z, gehört es also zu M (verlässt die Schlaufe erst nach der maximalen
Iterationsanzahl), so wird dieser Punkt schwarz eingefärbt. Diese Punkte ergeben die
charakteristische Form der Mandelbrotmenge.
Um die Darstellung des Apfelmännchens am Computer zu beschleunigen, ist eine
zentrale Eigenschaft der Mandelbrotmenge zu verwenden. Durch die Symmetrie zur
reellen Achse, reicht es den Punkt c zu iterieren. c wird identisch eingefärbt. Dies
erlaubt die Rechenzeit fast zu halbieren, da die Hälfte der Punkte durch Kopieren
gewonnen werden kann. Der Nachteil dieses Verfahrens ist offensichtlich: Bei
Ausschnittsvergrösserungen, welche nicht mehr symmetrisch zur x-Achse (reellen
- 22 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
Achse) sind, dies ist meistens der Fall, lässt sich diese Eigenschaft nicht mehr
anwenden. Jedoch bringt der Sachverhalt, dass das Apfelmännchens
zusammenhängend ist, auch in diesen Bereichen eine wesentliche Beschleunigung,
vorausgesetzt es sind Teile der Mandelbrotmenge vorhanden. Da das Apfelmännchen
zusammenhängend ist, gilt, wenn die Punkte irgendeiner geschlossenen Kurve zur
Menge gehören, dann gilt gleiches auch für alle von der Kurve umschlossenen Punkte.
Man kann also die Randpunkte des Apfelmännchens berechnen. Alle
eingeschlossenen Punkte gehören automatisch auch zur Mandelbrotmenge und können
daher schwarz eingefärbt werden. Zur Berechnung sucht das Computerprogramm nach
einem Punkt, der zur Mandelbrotmenge gehört. Trifft das Programm auf einen Punkt
der zur Menge gehört, so untersucht es die angrenzenden Punkte. Ist der untersuchte
Punkt ein Randpunkt der Menge, so werden die Nachbarpunkte untersucht. Das
Programm testet Punkt für Punkt, ob es sich um einen Randpunkt handelt oder nicht.
Ist der Rand ermittelt, wird das Innere einheitlich schwarz eingefärbt. In der Praxis
muss man jedoch beachten, da es sich nur um eine Näherung (Approximation)
handelt, das heisst, es müssen nicht alle c ∈ M verbunden sein. Benoit Mandelbrot
gibt zu bedenken, dass die Verbindungsfasern zwischen Teilgebieten und der
Hauptmenge vermutlich infinitesimal dünn seien. Das Umsetzen dieser
Optimierungsmöglichkeit ist im Gegensatz zum Standardalgorithmus sehr viel
komplexer und fehlerträchtiger. Ich habe darauf verzichtet, diesen verbesserten
Algorithmus in mein Programm einzubauen, da ich auch keine geeignete Literatur
dazu fand.
3.2 FraCalc
Das Computer Programm zur Maturaarbeit „Mandelbrotmenge: erzeugen und analysieren“
Als weiteren Bestandteil meiner Maturaarbeit habe ich das Programm FraCalc entwickelt,
welches erlaubt, diese faszinierenden Bilder der Mandelbrotmenge zu berechnen und
darzustellen. Ich habe versucht, FraCalc benutzerfreundlich und einfach zu gestalten. Ich
wollte dennoch auf keine wichtigen Elemente verzichten.
Es gibt zwei Versionen des Programms. Eine Version wurde in Visual Basic für den PC
(Windows) geschrieben. Das zweite Programm, eine stark abgespeckte Version des PCProgramms, wurde für den TI92plus Rechner entwickelt. Der Quellcode dieses Programms
liegt in C vor. Das Programm habe ich mit Hilfe der TIGCC SDK (Software Development
Kit) für den TI92plus compiliert. Die Programme sowie der Quellcode befinden sich auf der
beigelegten gleichnamigen CD-ROM.
- 23 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
3.2.1 FraCalc für Windows
Abb. 3.1
Übersicht der wichtigsten
Fenster von FraCalc
Tools von FraCalc
Zoom-Tool
Mit dem Zoom-Tool kann man beinahe beliebig tief in die Mandelbrotmenge
hineinzoomen, ohne dass sich die Auflösung verschlechtert. Damit gelangt man in die
abgelegensten Orte und kann die merkwürdigsten Ausschnitte der Mandelbrotmenge
betrachten. Den Zoomfaktor kann man beliebig wählen, um genau den Ausschnitt zu
erhalten, den man möchte. Eine ganz individuelle Reise in das Randgebiet der
Mandelbrotmenge wird damit möglich.
-
Berechnung der Juliamenge
Durch Klicken auf einen Punkt der Mandelbrotmenge wird die dazugehörige
Juliamenge gezeichnet. Damit lässt sich schnell feststellen, ob der Punkt ein Teil des
Apfelmännchens ist, also ob er zur Mandelbrotmenge gehört, oder nicht.
-
Iterations-Diagramm
Will man das Fluchtverhalten der einzelnen Punkte der komplexen Zahlenebene beim
Iterieren der Funktion Z n +1 = Z n 2 + c betrachten oder will man wissen, bei welcher
Iterationszahl wie viele Funktionen Z n +1 = Z n 2 + c den Grenzwert 2 überschritten
haben, so beinhaltet FraCalc ein nützliches Tool, welche von diesen Punkten ein
Diagramm erstellt (Abb 3.2).
Abb. 3.2
Analysetool
- 24 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
-
Ändern des Startwertes Z 0
Im Menu „andere Mandelbrotmengen“ können weitere Mandelbrotmengen erstellt
werden. Dazu stehen zwei Funktionen bereit. Zum einen kann man den Startwert Z 0
abändern. Dies bewirkt, dass eine Deformation des Aussehens der Mandelbrotmenge
stattfindet. Eine genau Erklärung dazu findet man im Kapitel 2.2.1.4. FraCalc hat drei
vordefinierte Startwerte:
- Z 0 = 0 + 0i (Standart)
- Z 0 = 0.5 + 0.5i
- Z 0 = −0.25 − 0.125i
-
Grundfunktion
Die zweite Möglichkeit, eine andere Mandelbrotmenge zu erstellen, besteht darin, die
Grundfunktion, welche bei der normalen Mandelbrotmenge die bekannt Gleichung
Z n +1 = Z n2 + c ist, abzuändern. FraCalc stellt dabei zwei weitere Gleichungen zur
Verfügung:
- Z n +1 = Z n3 + c
- Z n +1 = Z n4 + c
Abspeichern der Mandelbrotmenge
Die erzeugten Mandelbrotmengen können auch als *.bmp Datei abgespeichert werden. So
lässt sich das erstellte Bild in einem Grafikprogramm abändern und anschliessend kann
man es ausdrucken. FraCalc erlaubt auch das Abspeichern der relevanten Daten welche
zur Erzeugung wichtig sind. Hat man einen schönen Ausschnitt gefunden, so kann man
alle verwendeten Daten in einer *.fcs Datei abspeichern. Dies erlaubt dem Benutzer später
an derselben Stelle die Mandelbrotmenge weiter zu erforschen.
Folgenden Daten werden gespeichert:
- genaue Ausschnitt
- Funktion der Mandelbrotmenge
- Startwert
- Farbe
Das Fenster, in welchem die Juliamenge gezeichnet wird, unterstützt die gleichen
Funktionen, wie das Fenster mit der Mandelbrotmenge. Das Hinein- sowie das
Hinauszoomen wird vollständig unterstützt.
3.2.2 FraCalc für den TI92plus
Da der TI92plus ein sehr leistungsstarker (Taschen-) Rechner ist, habe ich mir zum Ziel
gesetzt, ein Mandelbrotprogramm zu schreiben, welches mir in vernünftiger Zeit das
Apfelmännchen berechnet und anzeigt. Dabei habe ich zwei verschieden
Programmierumgebungen gewählt.
3.2.2.1 TIBasic Programm
Die Rechnerinterne Programmiersprache TIBasic ist sehr einfach aufgebaut und vergleichbar
mit dem Qbasic, welches man von DOS her kennt. Der Nachteil dabei ist, dass Programme,
- 25 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
welche in TIBasic geschrieben wurden, sehr langsam sind. Dies hängt damit zusammen, dass
TIBasic keinen Compiler hat. Der erstellte Code wird also nicht auf die tiefstmögliche Ebene
gebracht und so Byte für Byte ausgeführt. TIBasic ist eine Interpretersprache. Der Quellcode
wird beim Ausführen des Programms Stück für Stück gelesen und interpretiert.
Im Gegensatz zu FraCalc für Windows muss man bei der TI92plus-Version kein neues
Koordinatensystem erstellen, da diese Funktion von der TI92plus Software zur Verfügung
gestellt wird. Des weiteren kann der TI92plus direkt mit komplexen Zahlen rechnen. Dies
führt zu einer weiteren Vereinfachung des Programmieraufwandes.
Um einen Ausschnitt der Mandelbrotmenge zu berechnen, startet man das Programm und gibt
in einem Fenster die benötigten Daten ein. Diese Daten entsprechen denen von FraCalc für
Windows. Somit kann man auf einfachste Weise ein am PC erstelltes Bild auf den TI92plus
nachzeichnen lassen. Das Berechnen des gewünschten Ausschnitts dauert je nach der
Iterationstiefe zwischen 10 und 12 Stunden. Dies ist natürlich viel zu langsam. Um mein
Programm beschleunigen zu können, musste ich nach neuen Wegen suchen. Es stellte sich
schnell heraus, dass man mit TIBasic nicht mehr weiter kommen wird.
3.2.2.2 Assembler Programm
Die zweite Version von FraCalc für den TI92plus habe ich in C geschrieben und zu
Assembler kompiliert. Assembler ist eine sehr leistungsstarke Programmiersprache, da sie
direkt den Prozessor anspricht, also nicht über eine weitere Software laufen muss. Assembler
ist die Grundsprache, mit welcher jeder Chip programmiert wird. Assembler ist die
systemnaheste und somit die schnellste Programmiersprache die es gibt. Der Nachteil von
Assembler ist, dass es keine Bibliotheken mit vorgefertigten Befehlen gibt. Es existieren nur
die wichtigsten Grundfunktionen. Es gibt allerdings Programmiertools, welche es dem
Programmierer erlauben, sein Programm in einer benutzerfreundlicheren Umgebung und
Programmiersprache zu entwickeln und anschliessend den erstellten Quellcode in Assembler
zu kompilieren, also zu konvertieren. Für Assemblerprogramme, welche auf dem TI92plus
laufen sollen, gibt es dazu eine entsprechende Software, mit welcher man auf dem PC
entwickelte Programme in ein TI92plus passendes Format konvertieren kann.
Die Programmiersprache C ermöglicht dem Programmierer viel komplexere Programme zu
entwickeln als mit TIBasic, was für ein einfaches Programm zur Erzeugung der
Mandelbrotmenge jedoch nicht relevant ist. Lediglich die Geschwindigkeit des erstellten
Programms war mir wichtig. Einen Ausschnitt des Apfelmännchens zu berechnen und zu
Zeichnen dauert mit dem Assemblerprogramm nicht mehr als fünf Minuten. Dies ist weniger
als ein Prozent der Zeit, welche das TIBasic-Programm zum Berechnen braucht. Die Eingabe
der Daten erfolgt wie beim TIBasic-Programm (Abb 3.3a). Als zusätzliches Feature wird am
Ende der Berechnung das Bild abgespeichert und kann normal über die TI92plus-Software
(Graph-Menü) geöffnet werden.
- 26 Maturaarbeit 2002, Martin Wirz
3 Programmieren der Mandelbrotmenge
Abb. 3.3a
Eingabefenster
Abb. 3.3b
Bild der
Mandelbrotmenge
- 27 Maturaarbeit 2002, Martin Wirz
4 Mathematische Hintergründe
4 Mathematische Hintergründe und Grundwissen
4.1 Iteration
Der Begriff Iteration stammt vom lateinischen Wort iterio was soviel wie Wiederholung
heisst. Die Übersetzung zeigt schon die Bedeutung dieses Begriffes. Als Iteration bezeichnet
man eine wiederholte Anwendung einer Funktion. Man beginnt mit dem Startwert x0 und
setzte diesen Wert in die Funktion f (x) ein. So bekommt man x1 . Nun wiederholt man den
Vorgang mit dem Anfangswert von x1 . Es gilt also: x 2 = f ( x1 ) .
Fährt man so fort, ergibt sich eine Folge von Zahlen x1 , x 2 , x3 ,..., x n .
Es ist also:
x1 = f ( x0 )
x 2 = f ( x1 ) = f ( f ( x0 )) = f 2 ( x)
x3 = f ( x 2 ) = f ( f ( f ( x0 ))) = f 3 ( x)
x n = f ( x n −1 ) = f n ( x)
Beispiel:
f ( x) = 3 x
x0 = 2, x1 = 3 * 2 = 6, x 2 = 3 * 2 * 3 = 6 * 3 = 18, ..., x k = 3 * 2 k
4.2 Fixpunkt
Ein Punkt x heisst Fixpunkt von f (x) , wenn gilt f ( x) = x . Somit gilt auch f n ( x) = x . Der
Wert der Funktion bleibt also unabhängig von der Iterationszahl immer der selbe.
Beispiel:
f ( x) = x 2 +
1
4
x0 = 12 , x1 = 14 + 14 = 12 , x 2 = 14 + 14 = 12 , ...
Es gibt aber auch Funktionen, die erst nach einer gewissen Iterationszahl einen Fixpunkt
erreichen oder ihm beliebig nahe kommen. Solche Fixpunkte nennt man anziehende
Fixpunkte oder Attraktoren. Einen Attraktor kann man am einfachsten mit einem Pendel
beschreiben. Der tiefste Punkt des Pendels ist der Fixpunkt. Das Pendel schwingt immer um
diesen Punkt herum, er wird von ihm angezogen. Das Pendel kann das System nicht
verlassen. Steht das Pendel still, so hat es den Fixpunkt für dieses System erreicht. Ein stabiler
Zustand wurde erreicht.
Es gibt aber auch abstossende Fixpunkte, sogenannte Repelloren. Ein Repellor ist das
Gegenteil eines Attraktors, also ein besonders “unattraktiver“ Zustand, von dem sich die
Systemdynamik möglichst schnell wieder zu entfernen sucht. Dieser Zustand wird daher nie
stabil sein.
4.3 Orbit
Die Iterationsfolge x1 , x 2 , x3 , ..., x n der Funktion f (x) mit dem Startwert x0 wird als Orbit
bezeichnet.
- 28 Maturaarbeit 2002, Martin Wirz
4 Mathematische Hintergründe
4.4 Fluchtpunkte/Gefangenenmenge
Wird die Funktion f (x) beim Iterieren von einem Attraktor angezogen, so wird der Wert c
bei der Mandelbrotmenge oder der Kontrollwert c bei der Juliamenge als ein Element der
Gefangenenmenge bezeichnet. Alle Punkte der Mangdelbrotmenge, die gefangen bleiben,
also Elemente der Gefangenenmenge sind, bilden das Apfelmännchen. Alle Werte c , die von
keinem Attraktor angezogen werden, (ausser vom Attraktor mit dem Wert ∞ ) sind
Fluchtpunkte. Sie divergieren in Richtung ∞ .
- 29 Maturaarbeit 2002, Martin Wirz
5 Zusammenfassung
5. Zusammenfassung
Um komplexe geometrische Gebilde wie eine Wolke oder ein Farnblatt mathematisch
beschreiben zu können, wurde die Theorie der fraktalen Geometrie eingeführt. Ein Fraktal
zeichnet sich dadurch aus, dass gleiche Formen in verschiedenen Grössen immer wieder
auftreten und ein beliebig kleiner Ausschnitt die gleiche Struktur wie das Originalobjekt
aufweist. Die Erzeugung von Fraktalen ist nicht beschränkt auf geometrische Regeln und
Figuren. Ein Fraktal kann auch das Ergebnis einer mathematischen Abbildung sein. Das wohl
schönste Beispiel eines Fraktals, welches auf diese Weise erzeugt wurde, ist das, von einem
Mathematiker namens Mandelbrot, entdeckte Apfelmännchen. Der erste Teil dieser
Maturaarbeit ist eine allgemeine Einführung in das Gebiet der fraktalen Geometrie. Im
zweiten Teil wird explizit auf die Mandelbrotmenge eingegangen. Es werden die Grundlagen
erklärt sowie Experimente durchgeführt. Im dritten Teil wird auf das Erzeugen der
Mandelbrotmenge mit dem Computer eingegangen. In diesem Kapitel wird der Algorithmus
erläutert und Optimierungsvorschläge vorgestellt.
Parallel zum Skript entstanden zwei Computerprogramme, welche die Mandelbrotmenge zu
berechnen vermögen. Dieser praktische Teil meiner Arbeit, sowie der gesamte Text, befinden
sich auf der beigelegten CD-ROM.
Fazit:
Die Theorie der fraktalen Geometrie und im Speziellen der Mandelbrotmenge zeigt, dass die
Komplexität, die wir in vielen Naturphänomenen entdecken, aus relativ einfachen, sich immer
wiederholenden Gesetzen hervorgehen kann. Es wird deutlich, dass komplexes Verhalten
nicht nur von komplexen Gesetzen abhängen.
- 30 Maturaarbeit 2002, Martin Wirz
6 Anhang
6 Anhang
6.1 Literaturliste
Anhang A
6.1.1 Bücher
1|
Schroeder, Manfred. Fraktale, Chaos und Selbstähnlichkeit: Notizen aus dem
Paradies der Unendlichkeit.
Heidelberg: Spektrum Akademischer Verlag, 1994
2|
Mandelbrot, Benoît B.. Die fraktale Geometrie der Natur.
Hrsg. der dt. Ausg.: Ulrich Zähle. Basel: Birkhäuser, 1987
3|
Peitgen, Heinz-Otto und Dsaupe Dietmar. The Science of fractal imagex.
New York: Springer-Verlag, 1988
4|
Peitgen, Heinz-Otto und Richter P. H... The Beauty of Fractals Images of complex
dynamical Systems.
Berlin: Springer, 1986
5|
Barnsley, Michael. Fractals Everywhere.
San Diego: Academic Press INC., 1988
6.1.1.1 Texte
1|
Dimension für Fraktale. S.10-14
1|
Die Mandelbrotmenge. S.313-318
2|
Der Begriff des Attraktors und Repulsors. S.207-208
3|
Der Begriff des Orbits. S.143-145
3|
The Mandelbrot-set. S.177-179
4|
The Mandelbrot-set. S.56-62
6.1.2 Internet
Alfred, Peter. http://www.math.utah.edu/~alfeld/math/mandelbrot/mandelbrot.html
The Mandelbrot Set. University of Utah. 10.2.2002*
Schlösinger, Christian. http://www.schloesinger.de/deutsch/mandelbrot_u_juliamengen
Mandelbrot- und Juliamengen. 10.2.2002*
Henning, Jacobs. http://www.gymnasiumhittfeld.de/ags/faecher/ma/010423_1/fraktale_malk12fa_hj.pdf
Fraktale – Die Geometrie des Chaos. 10.2.2002*
Mandelbrot, Benoit. http://www.math.yale.edu/mandelbrot/
Fractal Foundation. 10.2.2002*
Ermel, Stepp. http://www.faqs.org/faqs/fractal-faq/
Fractal Frequently Asked Questions and Answers. 10.2.2002*
*
Letzter Besuch der Homepage
- 31 Maturaarbeit 2002, Martin Wirz
6 Anhang
http://www.wolferseder.de/
10.2.2002*
Lichtenegger, Klaus.http://www.uni-klu.ac.at/~gossimit/lv/usw00/w/g5/gettouch.html
Get in touch with chaos. 10.2.2002*
Reichelt, Sebastian. http://tigcc.ticalc.org/
Homepage of the TIGCC-Team. 10.2.2002*
6.1.3 Software
Vassor, Xavier. TIGCC-Compiler v0.93 beta. TIGCC-team, 2001.
Microsoft
Visual Basic 5.0
- 32 Maturaarbeit 2002, Martin Wirz
6 Anhang
6.2 Sourcecode Anhang B
//FraCalc
//TI92plus Programm zur Generiereung der Mandelbrotmenge
//Software zur Maturaarbeit "Mandelbrotmenge: Erstellen und analysieren"
//Martin Wirz 2002
#define OPTIMIZE_ROM_CALLS
// Use ROM Call Optimization
#define SAVE_SCREEN
// Save/Restore LCD Contents
#include <tigcclib.h>
#include "extgraph.h"
#define SIZE
100
#define BLACK
-1
// Include All Header Files
short _ti92plus;
// Produce .9XZ File
void InputStr (char*, short, short, short);
// Main Function
void _main(void)
{
//DEFINITION
short
xkoor, ykoor, count;
long double zr, zi, cr, ci; //long double
long double rsquared, isquared;//long double
long double MaxIters, xEcke, yEcke, Spaltenbreite, Quad;
//long double
char buffer[50], MaxItersC[50], xEckeC[50], yEckeC[50], QuadC[50];
FontSetSys(F_6x8);
ClrScr();
//INPUT
DrawStr(1,10,"X-Achse",A_NORMAL);
InputStr(buffer,20,65,10);
xEcke = atof(buffer);
DrawStr(1,22,"Y-Achse",A_NORMAL);
InputStr(buffer,20,65,22);
yEcke = atof(buffer);
DrawStr(1,34,"Quad",A_NORMAL);
InputStr(buffer,20,65,34);
Quad = atof(buffer);
DrawStr(1,46,"Iteration",A_NORMAL);
InputStr(buffer,20,65,46);
MaxIters = atof(buffer);
ClrScr();
FontSetSys(F_4x6);
//ALGORITHMUS
sprintf(xEckeC,"%f",xEcke);
DrawStr(110,10,"x-Achse",A_NORMAL);
DrawStr(160,10,xEckeC,A_NORMAL);
- 33 Maturaarbeit 2002, Martin Wirz
6 Anhang
sprintf(yEckeC,"%f",yEcke);
DrawStr(110,20,"y-Achse",A_NORMAL);
DrawStr(160,20,yEckeC,A_NORMAL);
sprintf(QuadC,"%f",Quad);
DrawStr(110,30,"Quad",A_NORMAL);
DrawStr(160,30,QuadC,A_NORMAL);
sprintf(MaxItersC,"%f",MaxIters);
DrawStr(110,40,"Iteration",A_NORMAL);
DrawStr(160,40,MaxItersC,A_NORMAL);
DrawLine (107, 10, 107, 44, A_NORMAL);
DrawLine (0, 0, 101, 0, A_NORMAL);
DrawLine (0, 0, 0, 101, A_NORMAL);
DrawLine (101, 101, 101, 0, A_NORMAL);
DrawLine (101, 101, 0, 101, A_NORMAL);
//Schleife durch alle Punkte des Bildes
for (ykoor = 0; ykoor < SIZE; ykoor++)
{
for (xkoor = 0; xkoor < SIZE; xkoor++)
{
//Z0=0
zr = 0.0;
zi = 0.0;
//Koordinaten an Screen anpassen
Spaltenbreite = (Quad) / (SIZE);
cr= xkoor * Spaltenbreite + xEcke;
ci= ykoor * Spaltenbreite + yEcke;
//zr^2
zi^2 (Beschleunigung des Programms)
rsquared = zr * zr;
isquared = zi * zi;
//ITERATIONSSCHLEIFE für einen Punkt bis ItIters
for (count = 0; rsquared + isquared <= 4.0
&& count < MaxIters; count++)
{
//Zn+1=Zn^2+c
//für imaginäre Zahlen
zi = zr * zi * 2;
zi += ci;
//für reelle Zahlen
zr = rsquared - isquared;
zr += cr;
rsquared = zr * zr;
isquared = zi * zi;
}
//Testen, ob der Grenzwert 2 überschritten wurde
if (rsquared + isquared <= 4.0)
//Pixel(x,y) zeichnen
DrawPix (xkoor,ykoor, A_NORMAL);
}
}
DrawStr(110,60,"Done",A_NORMAL);
ngetchx();
- 34 Maturaarbeit 2002, Martin Wirz
6 Anhang
//BILD SPEICHERN
{
SCR_RECT full_screen = {{0, 0, 239, 127}};
char buffer [BITMAP_HDR_SIZE + 240*130/8];
BitmapGet (&full_screen, buffer);
clrscr ();
printf ("Bild abspeichern...");
ngetchx ();
BitmapPut (0, 0, buffer, &full_screen, A_REPLACE);
ngetchx();
{
FILE *f;
f = fopen ("frac", "wb");
fwrite (buffer,BITMAP_HDR_SIZE+240*130/8,1,f);
fputc (PIC_TAG, f);
fclose (f);
}
}
}
ClrScr();
FontSetSys(F_8x10);
DrawStr(1,10,"FraCalc",A_NORMAL);
FontSetSys(F_4x6);
DrawStr(1,20,"M. Wirz 2002",A_NORMAL);
DrawStr(1,40,"[email protected]",A_NORMAL);
DrawStr(1,50,"www.westpak.ch/fw",A_NORMAL);
//INPUT bearbeiten
//nur die Zeichen "0,1,2,3,4,5,6,7,8,9,0,. und -" sind erlaubt
void InputStr (char *buffer, short maxlen, short xini, short yini)
{
short key, i = 0;
OSTimerRestart(APD_TIMER);
strcpy(buffer,"\0");
do
{
MoveTo(xini,yini);
printf ("%s_ ", buffer);
key = GKeyIn(NULL,0);
if (key >=46 && key <=57 && i < maxlen || key==173 && i < maxlen)
buffer[i++] = key;//57
if (key == KEY_BACKSPACE && i) i--;
buffer[ i ] = 0;
if(key==KEY_CLEAR)
strcpy(buffer,"\0") ;
i=0;
}
} while (key != KEY_ENTER);
ST_busy(ST_CLEAR);
}
- 35 Maturaarbeit 2002, Martin Wirz
Herunterladen