[Maple OLE 2.0 Object]


Überblick

Dieses Worksheet gibt einen ersten Einblick in die wunderbare Welt der Fraktale. Es werden Begriffe eingeführt wie z.B. gebrochene Dimension und Selbstähnlichkeit und am Beispiel der Kochschen Kurve und des Sierpinski-Dreiecks erklärt. Die Prozedur sierpinski visualisiert die Konstruktion des Sierpinski-Dreiecks über Dreiecke, während der Prozedur sierpinski2 ein alternativer Konstruktionsalgorithmus zugrunde liegt. Es wird auf Iterationsvorschriften eingegangen, die auf die Mandelbrot- und auf die Julia-Mengen führen. Die Prozedur visualisiert die Konstruktion des Sierpinski-Dreiecks über Dreiecke, während der Prozedur sierpinski ein alternativer Konstruktionsalgorithmus zugrunde liegt. Die Prozeduren mandelbrot und julia stellen dreidimensionale Graphiken für die Apfelmännchen- bzw. 3D-Gebirge der entsprechenden Mengen auf. Die Prozedur cantor stellt eine nicht zusammenhängende Julia-Menge dar.


Inhaltsverzeichnis

Einleitung
Begriffe und Definitionen
Iterierte Abbildungen
Die Mandelbrotmenge
Die Juliamenge
-----------------------
zurück zur Startseite


Einleitung

Aus der Schulgeometrie kennen wir nur die Dimensionen1, 2 und 3. Dass es noch weitere ganzzahlige Dimensionen gibt, ist allgemein bekannt. Vernachlässigt wurde dagegen oft die Tatsache, dass es neben diesen ganzzahligen Dimensionen auch noch welche dazwischen gibt. Diese beschreiben die reale Welt manchmal sogar besser als die "glatten" bekannten Gebilde. Die vom mathematischen Außenseiter Benoit Mandelbrot erforschten, gebrochenen Dimensionen wie zum Beispiel 1,65 oder 2,37 tragen den Namen "Fraktale" (lateinisch "fractum" = gebrochen). Obwohl niemand die Phänomene dieser Dimensionen versteht, weiß man mittlerweile recht viel über sie. So ist beispielsweise bekannt, dass sich fraktale Geometrien selbst ähnlich sind. Auch die Berechnung von fraktalen Graphiken ist tatsächlich sehr einfach durchführbar. Das Apfelmännchen zum Beispiel berechnet sich aus der Formel:

z[n+1] = z[n]^2+c ,

(z und c sind komplexe Zahlen). Was dabei entsteht, wird im unteren Bild dargestellt, jedoch warum und wie dies geschieht, wird später erläutert.

3D-Darstellung!

[Maple Plot]

Egal wo man mit der Thematik der Fraktalen auftritt, wird immer dieselbe Frage nach einem konkreten Nutzen dieses mathematischen Wissens laut. Ist das ganze nur Spielerei und Faszination oder gibt es tatsächlich eine Anwendung für eine Formel, die einen "Tintenfleck" berechnet? Hier seien einige Anwendungsbereiche genannt: Die Beschreibung von in der Natur auftretenden Muster wie z.B. Farnblätter, Blumenkohle und unzählige andere Pflanzen sind fraktal aufgebaut. Auch in den Fellen von Tieren und sogar im Gehirn des Menschen findet man einen fraktalen Aufbau. Eine einzigartige Anwendung stellen fraktale Geometrien bei der Berechnung von virtuellen Welten dar. Das Oberflächenmuster einer Holzwand, ein Wolkenhimmel, Bäume, Berge, die Oberfläche eines Sees und unzählige weitere Objekte lassen sich mit iterativen Formeln auf einfache Art beschreiben.

Fraktale werden auch dazu verwendet, Einzelaufnahmen und Videobilder auf Computern zu komprimieren. 1987 entdeckte der Mathematiker Dr. Michael F.Barnsley die Fraktale Transformierte, mit deren Hilfe sich in digitalisierten Fotografien automatisch fraktale Strukturen auffinden lassen. Diese Entdeckung brachte die fraktale Bildkomprimierung hervor, die bei einer Vielzahl von Multimedia- und anderen auf Bildern basierenden Computeranwendungen verwendet wird.

zurück zum Inhaltsverzeichnis


Begriffe und Definitionen

Fraktal, fraktale Geometrie

Das Wort Fraktal stammt aus dem lateinischen und bedeutet dort "gebrochen" (in der Medizin gibt es ein ähnliches Wort: Fraktur). Die von B. B. Mandelbrot 1975 eingeführte Bezeichnung befasst sich mit komplexen geometrischen Gebilden, sog. Fraktalen, wie sie ähnlich in der Natur vorkommen (z. B. Verästelung der Blutgefäße, Küstenlinie, Oberfläche eines Gebirges). Ein Fraktal besitzt zwei wesentliche Eigenschaften: Selbstähnlichkeit und gebrochene Dimension . Selbstähnlichkeit bedeutet, dass jeder Teil eines fraktalen Gebildes dem Ganzen geometrisch ähnlich ist. Gebrochene Dimension heißt, dass von der Ganzzahligkeit (z. B. 2 für die Ebene, 3 für den Raum) abgerückt wird.

Beispiel einer Kurve mit gebrochener Dimension ist die 1904 von H. von Koch beschriebene Schneeflockenkurve
(auch Kochsche Kurve). Bei ihrer Konstruktion geht man von einem gleichseitigen Dreieck aus, an das man an jeder Seite ein kleines gleichseitiges Dreieck (Seitenlänge ein Drittel der ursprünglichen Seitenlänge) in der Mitte der Seite ansetzt. Dadurch entsteht ein sechszackiger Stern, mit dessen Seiten man in der gleichen Weise verfährt. Da sich die Länge bei jedem Schritt um den Faktor 4/3 erhöht, wächst der Umfang ins Unermessliche, obwohl die Kurve nur eine endliche Fläche umschließt. Der Kochschen Kurve wird die fraktale Dimension 1,26 zugewiesen. Eine Prozedur zur Animation der Kochkurve ist im Kapitel über Folgen von Ch. Fisches zu finden:

Animation!

[Maple Plot]

Ein weiteres Beispiel für ein Fraktal ist das Sierpinski-Dreieck . Dieses Dreieck lässt sich erhalten, wenn man in der Mitte eines Dreiecks wiederholt kleinere Dreiecke mit fortlaufend kleineren Seiten konstruiert. Theoretisch erhält man als Ergebnis eine Figur von endlicher Fläche, die aber einen Umfang von unendlicher Länge besitzt. In der mathematischen Sprache der Infinitesimalrechnung wird eine derartige Kurve nicht behandelt. Eine Animation des Sierpinski-Dreieckes liefert:

Animation!

[Maple Plot]

Mandelbrot führte eine viel abstraktere Definition ein, als sie für die Elementargeometrie (Euklidische Geometrie) gilt. Wenn man die Größe eines Fraktals bestimmen will, muss gemäß dieser Definition die Dimension eines Fraktals als Exponent behandelt werden. Aus diesem Grund kann ein Fraktal nicht so behandelt werden, als ob es in einer, zwei oder jeder anderen ganzzahligen Dimension existiert. Man muss statt dessen bei der mathematischen Behandlung davon ausgehen, dass es eine gebrochene (fraktale) Dimension besitzt. Beispielsweise liegt die Dimension eines Gebirges zwischen zwei (einer Ebene) und drei (eines Körpers), das oben beschriebene Sierpinski-Dreieck hat die gebrochene Dimension 1,585. Auf diesem Aspekt werden wir nun genauer eingehen.

Gebrochene Dimension / Selbstähnlichkeit

Mandelbrot wurde einmal gefragt, wie genau das Ergebnis einer Messung sein würde, wenn man die Länge der Küste Großbritanniens von einem Flugzeug aus messen würde. Mandelbrot antwortete, dass das Ergebnis wahrscheinlich in keinster Weise der Realität entsprechen würde. Durch die Höhe des Flugzeuges würde kleine Buchten bei der Messung verloren gehen. Aber selbst wenn man die Küste ablaufen würde und immer gerade Stäbe mit einem halben Meter Länge aneinander legen würde, wäre das Ergebnis nur unwesentlich genauer. Selbst wenn man jedes Sandkorn vermessen würde, wäre das Ergebnis falsch, da es immer noch Einschnitte geben würde, die teilweise nicht einmal sichtbar sind und somit nicht berücksichtigt werden. Der Schluss, der sich daraus ziehen lässt, ist, dass die Küste von Großbritannien unendlich lang ist. Die Fläche des Landes ist jedoch trotzdem begrenzt. Wie kann es also kommen, dass ein Gebilde einen unendlich großen Umfang hat, jedoch eine endlich große Fläche besitzt?

Koch-Kurve. Ein Modell für die Küste lieferte dabei der Wissenschaftler Koch mit seiner Schneeflocke. Dabei wird jede Seite eines gleichseitigen Dreieckes in drei Teile zerlegt. Das Mittelteil jeder Seite wird herausgenommen und durch zwei Teile gleicher Länge ersetzt (siehe folgende Animation aus drei Bilder).
> koch1();

Animation!

[Maple Plot]

Jede der Seiten hat nun 4/3 ihrer ursprünglichen Länge, folglich auch der Umfang. Entstanden ist dabei ein Stern, mit dessen Seiten das Verfahren wiederholt wird. Dadurch, dass der Umfang mit jedem Schritt auf 4/3 des vorhergehenden Wertes ansteigt, wird er gegen Unendlich streben. Die Fläche des Dreiecks lässt sich jedoch begrenzen, indem man einen Kreis um das Ursprungsdreieck zieht, mit dem Durchmesser der Höhe des Dreieckes. Der Mittelpunkt des Kreises liegt in der Mitte des Dreieckes. Durch die eben beschriebene Vorgehensweise kommt man zur Kochschen Kurve, die durch die Prozedur Umfang aus dem Paket Kochkurve realisiert wird (siehe auch Kapitel Folgen):
> with(Kochkurve):
> Umfang;

Das Prinzip, nach dem fraktale Gebilde aufgebaut sind, ist stets das Gleiche: Eine Formel oder Konstruktionsvorschrift wird immer wieder mit ihrem eigenen Resultat "gefüttert". Gehen wir von einem Dreieck der Seitenlänge a aus, dann gilt für die Anzahl der Seiten Anzahl(n) , dem Umfang Umfang(n,a) und die Fläche(n,a) die folgenden Formeln, wenn n die Anzahl der Iterationen darstellt:
> Anzahl:=(n)-> 3*4^(n-1);

Anzahl := proc (n) options operator, arrow; 3*4^(n-...

> Umfang:=(n,a)-> a*3*(4/3)^(n-1);

Umfang := proc (n, a) options operator, arrow; 3*a*...

> Flaeche:=(n,a)-> a^2*sqrt(3)*(1/4+(3/4)^3*Sum((2/3)^(2*i),i = 2 .. n));

Flaeche := proc (n, a) options operator, arrow; a^2...


In der folgenden Tabelle werden die oben beschriebenen Größen für ein Dreieck der Seitenlänge von a=20 mm als Funktion von n angegeben:

Schritt

Anzahl(x)

Umfang(x,20)

Flaeche(x,20)


Linien

in_mm

in_mm^2

1

3.

60.

173.2050808

2

12.

80.

230.9401077

3

48.

106.6666667

256.6001197

4

192.

142.2222222

268.0045694

5

768.

189.6296296

273.0732138


NULL



9

196608.

599.3232739

276.9699128

10

786432.

799.0976985

277.0578108

100

.1205203533e61

.1403092085e15

277.1281293


Man erkennt, dass mit der Anzahl der Iterationen n
sowohl die Linienzahl als auch der Umfang rasch anwächst, aber die Fläche immer kleiner 280 bleibt. Mit Maple berechnen wir die Grenzwerte für proc (n) options operator, arrow; infinity end proc... :
> Limit( 'Anzahl(n)', n=infinity )=limit( Anzahl(n), n=infinity );

Limit(Anzahl(n),n = infinity) = infinity

> Limit( 'Umfang(n,20)', n=infinity )=limit( Umfang(n,20), n=infinity );

Limit(Umfang(n,20),n = infinity) = infinity

> Limit( 'Flaeche(n,20)', n=infinity )=evalf(limit( Flaeche(n,20), n=infinity ));

Limit(Flaeche(n,20),n = infinity) = 277.1281292


Sierpinski-Dreieck. Eine weitere fraktale Geometrie ist das Sierpinski-Dreieck: Dabei werden für ein Dreieck ABC die drei Seitenmitten bestimmt. Über diese drei Seitenmitten wird ein innenliegendes Dreieck definiert, welches aus dem Dreieck ABC herausgeschnitten wird. Gleiches kann man dann mit den verbleibenden drei Dreiecken machen. Der Umfang des Dreiecks wird dadurch größer, seine Fläche jedoch kleiner. Nach mehrmaliger Fortführung dieser Vorgangs stellt man fest, dass die Fläche des Gebildes gegen Null geht, während der Umfang gegen Unendlich strebt.

Die Prozedur sierpinski visualisiert die graphische Konstruktion des Sierpinski-Dreiecks und erzeugt eine Animation, die die iterativen Schritte zeigt. Der Aufruf erfolgt durch sierpinski ( [x1, y1] , [x2, y2] , [x3, y3] , iteration ); wobei [x1, y1] , [x2, y2] , [x3, y3] die Eck-Koordinaten des Dreiecks sind und iteration für die Anzahl der Iterationen steht. Ein Beispiel für den Aufruf der Prozedur bei einer Iterationstiefe von 6 lautet:
> sierpinski([0, 0], [2, 4], [4, 0], 6);

Animation!

[Maple Plot]


Dimension

Die Eigenschaften, einen unendlich großen Umfang zu haben, und dabei keine oder eine beschränkte Fläche einzunehmen, erfüllen keine unserer normalen ein-, zwei- oder dreidimensionalen Gebilde. Deshalb bedient man sich zunächst einer anderen Darstellung der Dimension. Nimmt man eine Strecke mit der Dimension D=1 und teilt diese in n gleichgroße Teile, so entspricht die Länge der einzelnen Stücke gleich 1/n der ursprünglichen Strecke. Das Verhältnis zwischen Gesamtstrecke und Teilstrecke ist also

r = Gesamtstrecke/Teilstrecke = 1/(1/n) = n .

Das gleiche Verfahren wendet man nun auf ein Rechteck an, welches im Gegensatz zur Strecke zweidimensional ist, somit ist D=2. Auch hier werden die Seiten in n gleiche Teile zerlegt. Dabei entstehen n*n kleine Rechtecke, deren Seitenlänge gleich 1/n der ursprünglichen Seitenlänge ist. Das Verhältnis von Gesamtstrecke zur Teilstrecke r ist auch hier wieder n. Um von der Anzahl der Flächen ( n*n ) wieder auf das Verhältnis r zu kommen, muss also die Quadratwurzel gezogen werden. Es lässt sich daher folgende Gleichung aufstellen:
> r=n^(1/D);

r = n^(1/D)

D entspricht der Dimension, n der Anzahl der verbleibenden Teilstrecken (Teilflächen) und r entspricht dem Verhältnis der Gesamtstrecke zur Teilstrecke. Man hat also eine Gleichung gefunden, die man nach der Dimension D umstellen kann:
> D=solve(r=n^(1/D),D);

D = ln(n)/ln(r)


Dimension der Kochkurve: Die obige Gleichung wendet man nun auf die Kochkurve an. Dabei ist die Anzahl der Teilstücke, die aus einem entstehen, stets vier: n=4. Das Teilstücke ist hier jedoch 1:3 des Gesamten. Deshalb gilt r=3. Damit ist
> D=evalf(ln(4)/ln(3));

D = 1.261859507

Es ergibt sich eine Dimension von 1,26 für die Kochkurve.

Dimension des Sierpinski-Dreieckes: Analog der Kochkurve bestimmt man die Dimension für das Sierpinski-Dreieck: Die Anzahl der verbleibenden Teilflächen nach dem Herausnehmen des Mitteldreieckes ist n=3; die Länge der Dreickecksseiten ist halb solang wie die des Gesamten, also r=2. Damit ist
> D=evalf(ln(3)/ln(2));

D = 1.584962501

Auch hier ergibt sich also eine gebrochene Dimension!

zurück zum Inhaltsverzeichnis


Iterierte Abbildungen

Bei den Fraktalen kommt man ohne die komplexen Zahlen aus. Das ändert sich, sobald man die faszinierende Struktur der Mandelbrot- und Julia-Mengen verstehen will. Dazu benötigen wir im wesentlichen die Darstellung der komplexen Zahlen c = a+i*b bestehend aus einem Realteil a und Imaginärteil b , sowie dem Betrag der komplexen Zahl abs(c) = sqrt(a^2+b^2), der den Abstand zum Ursprung angibt. Jede komplexe Zahl kann man sich daher als einen Punkt der komplexen Ebene vorstellen. Die komplexe Ebene besteht aus überabzählbar vielen derartigen Punkten. Ihre Real- und Imaginärteile können positiv oder negativ, ganzzahlig oder nicht ganzzahlig, rational oder irrational sein.

Innerhalb der komplexen Zahlen können wir den Iterationsprozess beschreiben, der die Mandelbrot- und Julia-Mengen erzeugt. Beginnen wir mit dem algebraischen Ausdruck
z^2+c, dabei ist z eine komplexe Variable und c eine feste komplexe Zahl. Setzen wir zunächst z = 0 = 0+0*i. Das Quadrat von z ist dann immer noch 0 und die Addition von c ergibt c. Dieses Resultat setzen wir im nächsten Schritt für die Variable z in den Ausdruck z^2+c ein. Als neue Summe ergibt sich dann c^2+c. Das setzen wir wieder ein und erhalten (c^2+c)^2+c. So fahren wir fort, indem wir immer das Ergebnis des letzten Schrittes auf der rechten Seite der Vorschrift für z einsetzen:

z[n+1] := z[n]^2+c

Führt man diese Iteration für bestimmte Werte von c durch, so passieren seltsame Dinge. Nehmen wir zum Beispiel für die komplexe Zahl c= .5+.1*i, so erhalten wir:



NULL

Betrag

Anfangsbedingung


.5+.1*I

.5099019514

Iterationsschritt

1

.74+.20*I

.7665507159


2

1.0076+.3960*I

1.082623554


3

1.35844176+.89801920*I

1.628435599


4

1.538925532+2.539813565*I

2.969670813


5

-3.582361152+7.917167883*I

8.689928579


6

-49.34823586-56.62430932*I

75.11032411


7

-770.5640235+5588.719543*I

5641.591535


8

-30640016.72-8612932.335*I

31827554.54


Bei den einzelnen Iterationsschritten können Real- und Imaginärteil wachsen, fallen oder ihre Vorzeichen wechseln. Wenn wir diese Iteration fortsetzen, dann werden die Beträge der komplexen Zahlen für manche c größer, für andere kleiner. Die komplexe Folgen z[n] , die für gegebenes c im Verlaufe der beschriebenen Iteration eine gewisse Größe erreichen, wachsen danach sehr schnell weiter und überschreiten bald die größte in einem Computer darstellbare Zahl. Welchen Verlauf die Iteration nimmt hängt im wesentlichen vom Parameter c ab. Im folgenden werden wir an 3 Beispielen zeigen, wie das Verhalten qualitativ von c abhängen kann. Dazu verwenden wir die Prozedur iteration . Durch diese Prozedur werden die einzelnen Iterationsschritte von z[n+1] = z[n]^2+c graphisch dargestellt. Der Aufruf erfolgt durch iteration(c= xxx , z0= yyy , n= zzz ); dabei ist xxx der konstante komplexe Parameter c, yyy der komplexe Startwert z[0] und zzz gibt die Anzahl der Iterationen an.

Das folgende Beispiel zeigt den Aufruf der Prozedur für z[0] = 0 und c = .2+.5*i mit 70 Iterationen
> iteration(c=0.2+0.5*I, z0=0, n=70);

`Nach der `, 70, `-ten Iteration beträgt der Betrag...
[Maple Plot]

Bei diesem Beispiel bleibt der Betrag immer kleiner 1. Auch nach n Wiederholungen wird der Betrag nicht größer, sondern geht gegen Null.


Beispiel 2: z[0] = 0 und c = .35+.37*i:
> iteration(c=0.35+0.37*I, z0=0, n=60);

`Nach der `, 60, `-ten Iteration beträgt der Betrag...

[Maple Plot]

Auch in diesem Beispiel bleibt der Betrag nach 60 Iterationen noch beschränkt. Wählt man jedoch 70 Iterationen erkennt man, dass nun doch der Betrag anfängt rasch anzuwachsen und für 100 Iterationen erhält man einen Floating Point Overflow.

3. Beispiel: z[0] = 0 und c = .4+.7*i:
> iteration(c=0.4-0.7*I, z0=0, n=7);

`Nach der `, 7, `-ten Iteration beträgt der Betrag ...

[Maple Plot]

Im Gegensatz zu Beispiel 1 und 2 strebt der Betrag der Folgenglieder sehr schell gegen Unendlich.


Für die meisten komplexen Parameter c divergiert die Iterationsfolge, d.h. die Beträge gehen gegen Unendlich. Zum Glück kann man in unserem Zusammenhang aber alle Zahlen ignorieren, die unter der Iteration nach Unendlich divergieren:

3D-Darstellung!

[Maple Plot]

zurück zum Inhaltsverzeichnis


Die Mandelbrot-Menge

Wenn man die Bilder in der komplexen Zahlenebene betrachtet, die aussehen wie ein Apfel oder wie eine Acht mit Warzen, vermutet man, dass sich dahinter ein riesiger Aufwand an Arbeit und Mathematik verbirgt. Dabei ist die Formel

z[n+1] := z[n]^2+c

das ganze Geheimnis, das hinter den Bildern steckt. Die einzige Besonderheit dabei ist, dass die Variablen nicht für reelle, sondern für komplexe Zahlen stehen. Der Startwert der Iteration z[0] ist bei der Mandelbrot-Menge immer Null, die Konvergenz hängt nur vom komplexen Parameter c ab. Die Prozedur fraktaltest bestimmt zu vorgegebenem Betrag b die Iterationsnummer n , bei der das Folgenglied z[n] betragsmäßig größer als b wird. Der Aufruf erfolgt durch fraktaltest(c= c0 , z=z0, n=n0, b=b0); wenn c0 der konstante komplexe Parameter c, z0 der Startwert der Iteration, n0 die maximale Anzahl der Iterationen und b0 der maximale Betrag für die Abbruchbedingung ist. Ein Beispiel für den Aufruf der Prozedur ist:
> fraktaltest(c=-0.7+0.3*I, z=0, n=100, b=100);

26

D.h. nach 26 Iterationen überschreitet der Folgenwert den Betrag b=100. Es lässt sich so feststellen, dass das Verhalten der z-Werte ganz erheblich vom entsprechenden c-Wert abhängt. Die c -Werte, bei denen die Iterationswerte nach einer bestimmten Anzahl von Durchgängen (z.B. 100) ein vorgegebender Betrag (z.B. 2) noch nicht überschritten haben, gehören zur Mandelbrot-Menge.



Entstehung der Computerbilder:

Die Prozedur mandelbrot visualisiert die Mandelbrot-Menge und stellt sie dreidimensional graphisch dar. Der Aufruf erfolgt durch mandelbrot(x = xmin..xmax , y= ymin..ymax , n= iteration , b = betrag , grid= [m,n] ); Dabei stellen xmin, xmax den minimalen und maximalen Realteil und ymin, ymax den Imaginärteil dar, iteration entspricht der maximalen Anzahl von Iterationen und betrag ist der Betrag für die Abbruchbedingung. grid gibt die Auflösung der Punkte in der komplexen Zahlenebene an. (Achtung: m,n >40 bedeutet hohe Rechenzeit und großen Speicherbedarf!!) Ein Beispiel für den Aufruf der Prozedur ist:
> mandelbrot(x=0.3..0.5, y=0.4..0.6, n=50, b=50, grid=[40,40]);

3D-Darstellung!

[Maple Plot]

Die unterschiedliche Farbskalierung entspricht der Iterationstiefe. Für rot dargestellte Punkte ist der vorgegebene Betrag schon sehr bald erreicht. Für lila dargestellte Punkte ist nach 50 Iterationen der maximal Betrag von b=50 noch nicht erreicht.

Zur Bildergalerie: Hier sind für vorgegebene Parameter-Bereiche die Mandelbrot-Menge mit hoher Auflösung dargestellt.

zurück zum Inhaltsverzeichnis


Die Julia-Menge

Sowohl die Berechnung der Mandelbrot- als auch die der Julia-Mengen beruht auf der Iteration z[n+1] = z[n]^2+c . Bei der Mandelbrot-Menge ist der Startwert der Iteration immer z[0] = 0 und das Konvergenzverhalten hängt nur vom komplexen Parameter c ab. Bei der Julia-Menge hingegen ist c ein vorgegebener fester Wert. Der Startwert z[0] wird nun variiert; das Konvergenzverhalten hängt von z[0] ab. Es gibt zwei Klassen, zusammenhängende Julia-Mengen und nicht zusammenhängende Punktwolken, die auch als Cantor-Staub bezeichnet werden. Die zusammenhängenden Julia-Mengen kann man durch eine einfache Variation der Prozedur mandelbrot erhalten, indem eben nicht mehr z[0] = 0 gesetzt wird, sondern z[0] in der Prozedur variiert wird.


Zusammenhängende Julia-Mengen

Im Vergleich zur Darstellung der Mandelbrot-Menge wird in der Prozedur julia für die Darstellung der Julia-Menge c konstant gehalten und z[0] variiert. Der Aufruf erfolgt durch julia(x = xmin..xmax , y = ymin..ymax , c = c0 , n = iteration , b = betrag , grid= [m,n] ); Dabei stellen xmin, xmax den minimalen und maximalen Realteil und ymin, ymax den Imaginärteil dar, c0 ist der komplexe Parameter c, iteration entspricht der maximalen Anzahl von Iterationen und betrag ist der Betrag für die Abbruchbedingung. grid gibt die Auflösung der Punkte in der komplexen Zahlenebene an. (Achtung: m,n >40 bedeutet hohe Rechenzeit und großen Speicherbedarf!!) Ein Beispiel für den Aufruf der Prozedur ist:
> julia(x=-2..2, y=-2..2, c=0.6+0.7*I, n=30, b=100, grid=[40,40]);

3D-Darstellung!

[Maple Plot]

Jeder Punkt der Mandelbrot-Menge ist zugleich die Konstante c für die entsprechende Julia-Menge. Die Farben geben wieder Aufschluss darüber nach wieviel Iterationen der vorgegebene Betrag erreicht wird.

Zur Bildergalerie: Hier sind für vorgegebene Parameter c die Julia-Menge mit hoher Auflösung dargestellt.


Eine nicht zusammenhängende Julia-Menge: Der Cantor-Staub

Der Mathematiker Georg Cantor nahm das abgeschlossene Intervall [0,1] auf der reellen Achse und wendete folgende Algorithmus darauf an:
- Teile das Intervall in 3 gleiche Teile
- Nimm das mittlere Stück heraus
- Teile die verbleibenden 2 Intervalle wiederum in drei gleiche Teile
- Nimm das jeweils mittlere Stück heraus
- usw.

Die Prozedur cantor stellt den Cantor-Staub graphisch dar. Man beachte, dass durch die geringe Auflösung ab N=5 kein Unterschied mehr zu erkennen ist. Setzt man jedoch den view -Parameter z.B. auf view =[0..0.11, -2..-7.1] kann man die Iteration noch weiter verfolgen. Der Aufruf erfolgt durch cantor(N , plotoption s ); Dabei steht N für die Anzahl der Iterationen und plotoptions für optionale Plotparameter. Für 7 Iterationen lautet der Aufruf
> cantor(7);

[Maple Plot]

In der oberen Abbildung ist das erste Intervall von der Länge 1; nach unten nehmen die Iterationen jeweils um 1 zu. Zwischen den letzten beiden Reihen kann man schon keinen Unterschied mehr feststellen: Durch die Vergrößerung des x -Bereichs sind die Iterationsschritte bis 7 getrennt zu verfolgen:
> cantor(7, view=[0..0.11,1..-7.1]);

[Maple Plot]

Die Dimension des Cantor-Staubs beträgt mit N=2 und r=3 nach der in Kap. 2 beschriebenen Formel D = log(2)/log(3) = 0.6309.


zurück zum Inhaltsverzeichnis


Literatur und weitere Informationsquellen

Bausteine des Chaos: Fraktale, Klett-Cotta / Springer-Verlag
Computer-Kurzweil, Spektrum der Wissenschaft
Computer-Kurzweil 2, Spektrum der Wissenschaft
Bertelsmann Discovery '97 Multimedia CD-ROM, Bertelsmann Lexikon Verlag

Internet-Seiten
http://spanky.triumf.ca/www/fractint/FRACTINT.html
http://mgw.dinet.de/Physik/Fraktale/Fraktale.html
http://mgw.dinet.de/Physik/Neuigkeiten.html
http://tqd.advanced.org/3703/