Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9...

35
Mandelbrotmenge Erzeugen und analysieren

Transcript of Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9...

Page 1: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

Mandelbrotmenge

Erzeugen und analysieren

Page 2: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift
Page 3: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

Mandelbrotmenge

Erzeugen und analysieren

Maturaarbeit

von Martin Wirz

Betreut durch Peter Hohler

Kantonsschule Olten 2002

Page 4: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift
Page 5: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

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 0Z 18

2.2.1.5 Die Geleichung cZZ knn +=+1 18

2.2.2 Die Juliamenge 19 2.2.2.1 Zusammenhang zwischen Julia- und Mandelbrotmenge 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

Page 6: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

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

Page 7: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

1 Allgemeines zu Fraktalen

- 7 - Maturaarbeit 2002, Martin Wirz

1 Allgemeines zu Fraktalen 1.1 Einführung in die fraktale Geometrie 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

Benoit Mandelbrot 1975 Die fraktale Geometrie der Natur

Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keineKreise. Die Rinde ist nicht glatt - und auch der Blitz bahnt sich seinenWeg nicht gerade... Die Existenz solcher Formen fordert uns zum Studium dessen heraus,was Euklid als formlos beiseite lässt, führt uns zur Morphologie desAmorphen. Bisher sind die Mathematiker jedoch dieserHerausforderung ausgewichen. Durch die Entwicklung von Theorien,die keine Beziehung mehr zu sichtbaren Dingen aufweisen, haben siesich von der Natur entfernt. Als Antwort darauf werden wir eine neueGeometrie der Natur entwickeln und ihren Nutzen auf verschiedenenGebieten nachweisen. Diese neue Geometrie beschreibt viele derunregelmässigen und zersplitterten Formen um uns herum - und zwarmit einer Familie von Figuren, die wir Fraktale nennen werden...

Page 8: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

1 Allgemeines zu Fraktalen

- 8 - Maturaarbeit 2002, Martin Wirz

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. 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. 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.1 Die Cantormenge

Abb. 1.2a Grundfigur der Kochschen Kurve

Abb. 1.2b Kochsche Kurve mit der Iteration 5

Abb. 1.3 Ein fraktales Farnblatt. Erzeugt am Computer

Page 9: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

1 Allgemeines zu Fraktalen

- 9 - Maturaarbeit 2002, Martin Wirz

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. 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 Nf 1= 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

21

1

Nf = des ursprünglichen

Abb. 1.4 Fraktale Gebilde am Beispiel des Baumes

Page 10: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

1 Allgemeines zu Fraktalen

- 10 - Maturaarbeit 2002, Martin Wirz

Quadrats verkleinert. Die N Miniaturwürfel, die sich bei einer entsprechenden Zerlegung eines Würfels ergeben, werden auf

31

1

Nf = hinunterskaliert.

Die Formel lautet also: DN

f 11= ; 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.

)log()log(

1f

ND =

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 4=N identische Teile zerlegt wurde. Jedes Teilstück besitzt eine Länge von 3

1=f der ursprünglichen Länge. Die Dimension der Kochschen Kurve beträgt also:

26.1)3log()4log(

)log()log(

1 ===f

ND

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. Die Dimension der Linie beträgt: 1)3log(

)3log( ==linieD

Die Dimension des Quadrats beträgt: 2)3log()9log( ==QuadratD

Die Dimension des Würfels beträgt: 3)3log()27log( ==WürfelD

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.

Länge der Linie: 1 Einheit (z.B. Kilometer); Massstab 1:3; Ergebnis: 3 Teile.

Page 11: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 11 - Maturaarbeit 2002, Martin Wirz

2. Die Mandelbrtomenge 2.1 Biographie von 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

Abb. 2.1 Benoit Mandelbrot

Page 12: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 12 - Maturaarbeit 2002, Martin Wirz

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.

cZZ nn +=+2

1 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. Die c , für welche die Funktion cZZ nn +=+

21 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. 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,

Abb. 2.2 Grundfigur des Apfelmännchens

Page 13: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 13 - Maturaarbeit 2002, Martin Wirz

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. 2.2.1 Analyse der Mandelbrotmenge 2.2.1.1 Mathematische Definition Iteriert man die Funktion cZZ nn +=+

21 mit ZahlenKomplexerc ∈ . Divergiert die Funktion

nicht, so ist c ein Element der Mandelbrotmenge. Die Menge aller nichtdivergenten Punkte ZahlenKomplexerc ∈ bilden die Mandelbrotmenge M. Man definiert daher die ideale

Mandelbrotmenge M { }∞→/∈=

∞→ nncCcM lim|

Mit der Iterationsfunktion cZZfZ nnn +==+2

1 )( CcZ ∈,

Für die Darstellung am Computer muss man sich aber auf die realistische Mandelbrotmenge beschränken.

{ }NnAcCcM n ≤<∈= ,| Wobei A den Orbitalgrenzwert und N die Iterationstiefe angibt. Im Weiteren wird nur noch, sofern nichts anderes angegeben ist, die Iterationsfunktion

cZZfZ nnn +==+2

1 )( CcZ ∈, betrachtet. Zu beliebig anderen Iterationsvorschriften lassen sich aber genauso Mandelbrotmengen berechnen.

Abb. 2.3 Zoom in die Mandelbrotmenge

Page 14: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 14 - Maturaarbeit 2002, Martin Wirz

)()(

)()(

)()(

21

21

21

PP

PP

PP

−ℑ=ℑ

ℑ=ℑ

ℜ=ℜ

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:

21 ˆ2ˆ1ˆˆ PPuntkPPunktLIMGINÄRTEIREALTEIL ==ℑ=ℜ= Bedingung: Solche Zahlen werden als konjugiert komplexe Zahlen c bezeichnet. Damit Mc ∈ muss

∞→/∞→ nn

clim gelten (siehe oben).

Es sei ibac += dann gilt:

)2()()()()()2()()()()(

2222

2222

babiabaibaibaccZfbabiabaibaibaccZf

+−+−=−+−=+=

+++−=+++=+=

Da 22 bac += gilt, ist )()( ZfZf = . Es gilt auch )()( ZfZf nn = ,

Da _____

)()( ZfZf = ist und weil )(Zf und )(Zf im nächsten Iterationsschritt an Stelle von c für Z in )(Zf eingesetzt werden. Damit ist Mc ∈ , wenn Mc ∈ gilt. Betrachtet man ein beliebiges c , so ergibt sich aus obiger Betrachtung nn cc = , 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 00 =Z 2 Beweis von http://www.schloesinger.de/deutsch/mandelbrot-_u_juliamengen

ic 7.022.01 += ic 4.07.02 −−= ic 7.022.03 +=

Die Funktion )(cf

divergiert 1c => Mc ∉

Die Funktion )(cf

divergiert für 2c => Mc ∉

Die Funktion )(cf

konvergiert für 3c

=> Mc ∈

Page 15: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 15 - Maturaarbeit 2002, Martin Wirz

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. 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 überschreitet die Funktion )( nZf Mc ∉ den Orbitalwert 2. Ist dieser Grenzwert überschritten, strebt die Funktion ∞→)( nZf . Um diesen Sachverhalt beweisen zu können, verwendet man die vollständige Induktion. Der Beweis3 wird wie folgt geführt:

Divergenz der Menge für |c|>2:

ccZcZ

Z

+=

==

22

1

0 0

3 Beweis von http://www.stud.tu-muenchen.de/~andreas.putz/fraktal/beweis.htm#Ist |zn| Überarbeitet mit Herrn Hohler

Abb. 2.4 Verlauf des Orbits für 4 Punkte

Page 16: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 16 - Maturaarbeit 2002, Martin Wirz

Es sei |c| = 2+t wobei t > 0

Bedingung: Falls 2>c , dann ist tnZn *2 +≥

Verankerung: ttcZ *1221 +=+==

Induktionsschritt: tnZn *2 +≥

tnZn *)1(21 ++≥+

tntntnt

ttnntttncZcZZ nnn

)1(2)14(242

42)2()*2( 2222

1*

21

++>−+=−+

≥−++=+−+=−≥+=+

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 2>nZ für beliebiges n, so ist nZ unbeschränkt.

Ist 2>c so ist diese Aussage nach dem vorherigen Beweis trivial.

Sei nun 2≤c

Sei tZn += 2 0>t

ttttcZcZZ nnn 4224422)()( 222

1*

21 +≥−++=−+≥−≥+=+

Damit zeigt sich durch Induktion wie oben, die Behauptung.

*1Dreiecksungleichung )(. ZahlenkomplexenCba

baba∈

−≥+

Nun stellt sich dazu eine weitere interessante Frage: Nach wie vielen Iterationen überschreitet die Funktion )( nZf 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 )( nZf 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.

Page 17: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 17 - Maturaarbeit 2002, Martin Wirz

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 )( nZf mit dem Startwert c entweder nach wenigen Iterationen bereits definitiv in Richtung ∞ strebt oder Mc ∈ 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). 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).

Iterationsstufe Anzahl

2>c bei 1. Iteration 632

2>c bei 2. Iteration 744

2>c bei 3. Iteration 2432

2>c bei 4. Iteration 1176

2>c bei 5. Iteration 740

2>c bei 6. Iteration 442

2>c bei 7. Iteration 310

2>c bei 8. Iteration 201

2>c bei 9. Iteration 160

2>c bei 10. Iteration 105

Iterationszahl 20 Iterationszahl 100

Abb. 2.6 Apfelmännchen mit verschiedenen Iterationen

Iterationszahl 100 Iterationszahl 20

Abb. 2.7 Ausschnitte des Apfelmännchen mit verschiedenen Iterationen

Iterationen

Punkt

Abb. 2.5 Iterationsverlauf

Page 18: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 18 - Maturaarbeit 2002, Martin Wirz

Aus diesen beiden Sachverhalten ergibt sich folgenden Grundsatz für die Randlinie der Mandelbrotmenge: Je näher sich der Punkt Mc ∉ am Rande der Mandelbrotmenge befindet, desto schneller divergiert die die Funktion )( nZf mit c ∞→ . 2.2.1.4 Startwert 0Z

0Z , der Startwert der Iterationsfolge )(Zf , 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 00 ≠Z 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 0Z summiert sich schnell, da die Mandelbrotmenge durch eine quadratische Gleichung erzeugt wird. Warum aber wählt man 00 =Z ? 0 ist der kritische Punkt von cZ +2 . Ein kritischer Punkt ist ein Punkt, bei dem

0)(' 2 =+= cZd dzd ist. An dieser Stelle hat die Kurve also ein Extremum. Wenn man aber

eine andere Funktion anstelle von cZ +2 einsetzt, ändert sich auch der Startwert 0Z . Für die Funktion cZZZf ++= 2)( ist der kritische Punkt 2

1−=Z , da die 012)(' =+= ZZf 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). 2.2.1.5 Die Geleichung cZZ k

nn +=+1

Die Gleichung für die bekannte Mandelbrotmenge lautet cZZ nn +=+2

1 . Was würde

geschehen, wenn man anstelle von 2nZ eine andere Bedingung verwendet? Es kommen

wieder frakte Gebilde heraus, die eine gewisse Ähnlichkeit mit der Mandelbrotmenge haben (Abb. 2.9).

iZ 000 += iZ 125.025.00 −+−= iZ 5.05.00 +=

Abb 2.8 Apfelmännchen mit verschiedenen Startwerten für 0Z

Page 19: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 19 - Maturaarbeit 2002, Martin Wirz

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 bleibt aber jenes mit der Iterationsbedingung cZZ nn +=+

21 .

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

{ }∞→/∈=∞→ nnc ZCcJ lim|

und die realistische Juliamenge { }AZCZJ nc <∈= |

Im Folgenden wird analog zur Betrachtung der Mandelbrotmenge nur die Funktion cZZ nn +=+

21 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

cZZ nn +=+2

1 mit 00 =Z 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 cZZ nn +=+1 bei unterschiedlichen 0Z verhält oder für welche Werte von 0Z die iterierten 0Z 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: cZZ nn +=+1 . Allerdings ist c bei der Juliamenge die Konstante (wird zu Beginn definiert) und für 0Z werden Punkte der komplexen Zahlenebene eingesetzt. Bei der Mandelbrotmenge ist 00 =Z . Man wandert Punkt für Punkt über die Gaussche Zahlenebene und ermittelt c . 0Z und c haben bei der Juliamenge ihre Aufgaben getauscht. So kann man sagen: Für den gegebenen Parameter c bildet die Menge der Anfangswerte 0Z , für die nZ beschränkt (gefangen) sind, die sogenannte gefüllte Juliamenge cJ . Die eigentliche Juliamenge besteht aus den Randpunkten von cJ . Im Gegensatz zur Mandelbrotmenge hängt das Aussehen der Juliamenge vom Kontrollparameter c ab. Dabei gibt es zwei prinzipielle Möglichkeiten. Die Juliamenge ist

cZZ nn +=+3

1 cZZ nn +=+4

1

Abb. 2.9 Apfelmännchen mit verschiedenen Grundgleichungen

Page 20: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

2 Die Mandelbrotmenge

- 20 - Maturaarbeit 2002, Martin Wirz

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, 00 =Z mit c zu untersuchen. Divergiert dieser Punkt beim Iterieren in Richtung ∞ , so ist cJ nicht zusammenhängend. Divergiert 00 =Z mit c nicht, so ist die Juliamenge zusammenhängend. Daher kann man sagen, dass aus Mc ∈ folgt,

cJ 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 cJ 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

Page 21: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 21 - Maturaarbeit 2002, Martin Wirz

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

{ }NnAcCcM n ≤<∈= , sowie die Grundfunktion

cZZzf nnn +== +2

1)( . 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.

)(PicMainWidthQuaditeSpaltenbre =

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 )/( CiCrc , 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

Page 22: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 22 - Maturaarbeit 2002, Martin Wirz

Schritt 2:

Man setzt eine komplexe Variable Z (Realteil Zr, Imaginärteil Zi) auf iZ 000 += (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.

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

2

)()(

1ZÄHLERZÄHLER

ZiZrZvonBetragBetrag

cZZ

+==

+=+=

Page 23: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 23 - Maturaarbeit 2002, Martin Wirz

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 Mc ∈ 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 PC-Programms, 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.

Page 24: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 24 - Maturaarbeit 2002, Martin Wirz

3.2.1 FraCalc für Windows 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 cZZ nn +=+

21 betrachten oder will man wissen, bei welcher

Iterationszahl wie viele Funktionen cZZ nn +=+2

1 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

Abb. 3.1 Übersicht der wichtigsten Fenster von FraCalc

Page 25: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 25 - Maturaarbeit 2002, Martin Wirz

- Ändern des Startwertes 0Z Im Menu „andere Mandelbrotmengen“ können weitere Mandelbrotmengen erstellt werden. Dazu stehen zwei Funktionen bereit. Zum einen kann man den Startwert 0Z 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: - iZ 000 += (Standart) - iZ 5.05.00 += - iZ 125.025.00 −−=

- Grundfunktion

Die zweite Möglichkeit, eine andere Mandelbrotmenge zu erstellen, besteht darin, die Grundfunktion, welche bei der normalen Mandelbrotmenge die bekannt Gleichung

cZZ nn +=+2

1 ist, abzuändern. FraCalc stellt dabei zwei weitere Gleichungen zur Verfügung:

- cZZ nn +=+3

1 - cZZ nn +=+

41

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,

Page 26: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 26 - Maturaarbeit 2002, Martin Wirz

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.

Page 27: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

3 Programmieren der Mandelbrotmenge

- 27 - Maturaarbeit 2002, Martin Wirz

Abb. 3.3a Eingabefenster

Abb. 3.3b Bild der Mandelbrotmenge

Page 28: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

4 Mathematische Hintergründe

- 28 - Maturaarbeit 2002, Martin Wirz

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 0x und setzte diesen Wert in die Funktion )(xf ein. So bekommt man 1x . Nun wiederholt man den Vorgang mit dem Anfangswert von 1x . Es gilt also: )( 12 xfx = . Fährt man so fort, ergibt sich eine Folge von Zahlen 1x , 2x , 3x ,..., nx . Es ist also:

)()(

)()))((()(

)())(()(

)(

1

3023

2012

01

xfxfxxfxfffxfx

xfxffxfxxfx

nnn ==

===

===

=

Beispiel:

kkxxxx

xxf2*3...,,183*63*2*3,62*3,2

3)(

210 =======

=

4.2 Fixpunkt Ein Punkt x heisst Fixpunkt von )(xf , wenn gilt xxf =)( . Somit gilt auch xxf n =)( . Der Wert der Funktion bleibt also unabhängig von der Iterationszahl immer der selbe. Beispiel:

...,,,)(

21

41

41

221

41

41

121

0

412

=+==+==+=

xxxxxf

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 nxxxx ...,,,, 321 der Funktion )(xf mit dem Startwert 0x wird als Orbit bezeichnet.

Page 29: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

4 Mathematische Hintergründe

- 29 - Maturaarbeit 2002, Martin Wirz

4.4 Fluchtpunkte/Gefangenenmenge Wird die Funktion )(xf 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 ∞ .

Page 30: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

5 Zusammenfassung

- 30 - Maturaarbeit 2002, Martin Wirz

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.

Page 31: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

6 Anhang

- 31 - Maturaarbeit 2002, Martin Wirz

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.gymnasium-hittfeld.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

Page 32: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

6 Anhang

- 32 - Maturaarbeit 2002, Martin Wirz

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

Page 33: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

6 Anhang

- 33 - Maturaarbeit 2002, Martin Wirz

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 All Header Files #include "extgraph.h" #define SIZE 100 #define BLACK -1 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);

Page 34: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

6 Anhang

- 34 - Maturaarbeit 2002, Martin Wirz

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();

Page 35: Mandelbrotmenge Erzeugen und analysieren - wirzm.ch · PDF file1 Allgemeines zu Fraktalen - 9 - Maturaarbeit 2002, Martin Wirz Warum die Natur auf selbstähnliche Formen zurückgreift

6 Anhang

- 35 - Maturaarbeit 2002, Martin Wirz

//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); }