Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Darstellung der Mandelbrotmenge in Derive

geschrieben von nils 
In diesem Forum können zur Zeit keine Beiträge verfasst werden. Bitte versuche es später noch einmal.
Ich muss im Moment für die Schule die Mandelbrotmenge sowie Orbitlinien einzelner Punkte der Mandelbrotmenge in Derive darstellen, im Moment komme ich aber überhaupt nicht weiter - kann mir da vielleicht jemand von euch weiterhelfen? Ich habe den mathematischen Teil der Mandelbrotmenge durchaus verstanden (hoffe ich zumindest), mein Problem ist "nur" die Darstellung in Derive.

nils

Re: Darstellung der Mandelbrotmenge in Derive
08. February 2004 20:04
Hallo Nils
In manchen Mathematikprogrammen ist es nicht moeglich direkt ein Pixel in ein Grafikfester zu zeichen. Maple kann ja alles, aber das zum Beispiel nicht. Ist das dein Problem bei Derive ? Oder kannst du ein Pixel setzen ?
Was auf jeden Fall funktionieren sollte.
Du definierst dir ein 2D array. a[x=50][y=50] etwa und schreibst in dieses Feld die Ergebnisse aus deiner Iteration.
Berauschend wird bei solch einer Aufloesung das Ergebnis nicht sein :-)
a(k+1)+ib(k+1)=(a(k)+ib(k))**2 + ca+icb

Das zerlegt man in Real und Imaginaerteil (erstmal ausmultiplizieren)
a(k+1)+ib(k+1)=a(k)**2+i2a(k)b(k) minus! b(k)**2 + ca+icb
REAL: a(k+1)=a(k)**2-b(k)**2+ca
IMAG: b(k+1)=2a(k)b(k)+cb
Davon die Konvergenz testen und als Zahlenwert (0-100, einfach ausprobieren ) in das Array schreiben. Vielleicht startest du auch erstmal schwarz weiss. 0=divergiert. 1=konvergiert.
Als Konvergenzkriterium wird der Betrag sqrt(x*x+y*y) benutzt. Praktisch nimmt man natuerlich das Betragsquadrat.

Und dann laesst Du dir das Array mit einer 3D Farben Plotfunktion anzeigen. Wie die Graphik entsteht siehste also so nicht, nur das Ergebnis.

Fuer Maple findest du hier eine Beschreibung, wie das ganze auch sehr trickreich ohne Hilfsfeld geht.
[url=http://www.math.utsa.edu/mirrors/maple/mfrmandd.htm]mandelbrot[/url]

Zu Kompliziert ?
Versuche also erstmal rauszufinden ob Du ein Pixel direkt setzen kannst.

ciao
richy



Nachricht bearbeitet (09.02.04 14:37)
Re: Darstellung der Mandelbrotmenge in Derive
08. February 2004 20:57
Hier noch die Erklaerung zur trickreichen Methode fuer Maple. Mit Derive muesste das aehnlich gehen.
Grundidee:
Trick 1)
Die Variablen der Plotfunktion werden als Zaehlschleifen missbraucht.
In den Matheprogrammen sind diese ja auch nix anderes. Das Programm muss auch Schleifen bilden um die Funktion Punkt fuer Punkt zu erstellen.

Trick 2)
Die Farbe in der Plotfunktion wird einer Funktion zugeordnet. Der Funktion mandelbrot. Hier lauft die eigentliche Berechnung.

Trick 3)
Es wird in der Funktion komplex gerechnet

Fazit: very tricky !!!


# The Mandelbrot set
#
# 2D display coding by John Oprea, [email protected]

> restart: with(plots):

> mandelbrot := proc(x, y)
> local c, z, m;
> c := evalf(x+y*I);
> z := c;
> for m to 30 while abs(z) < 2 do
> z := z^2+c
> od;
> m
> end:

> plot3d(0, -2 .. 0.7, -1.2 .. 1.2, orientation=[-90,0],
> grid=[250, 250], style=patchnogrid,
> scaling=constrained, color=mandelbrot);
***************************************************

Im Einzelnen:
> restart: *** loescht alle Speicherinhalte
> with(plots): *** bindet plot Bibliothek ein fuer 3 D Plot

> mandelbrot := proc(x, y) *** KOPF der FUNKTION
input x,y werden uebergeben
output ist letzter Wert daher m

> local c, z, m; *** Variablen gelten nur in dieser Funktion
> c := evalf(x+y*I); Wieder sehr Tricky, c wird als eine komplexe Variable aus x,y gebildet

> z := c; *** ANFANGSWERTE DER ITERATION

> for m to 30 while abs(z) < 2 do
> z := z^2+c

A)
FUEHRE DIE ITERATION SO LANGE DURCH SO LANGE BETRAG Z KLEINER 2
2 IST WILLKUERLICHE SCHRANKE. Wegen BETRAG ALSO SOLANGE INNERHALB KREIS MIT RADIUS 2.
B)
ABER MAXIMAL 30 mal. (Dies wird mit der m Schleife 30 mal getestet)

Ist BEDINGUNG A VERLETZT WIRD DIE M SCHLEIFE ABGEBROCHEN
IN M BLEIBT DER AKTUELLE SCHLEIFENWERTWERT ERHALTEN.
Dieser ist der OUTPUT der Funktion. Gibt dann die Farbe an.
Das ist sehr elegant programmiert.
Nee das ist absolut geil programmiert :-)))

> od; *** Bei Maple Ende einer Schleife
> end: Ende der Funktion

DAS HAUPTPROGRAMM

> plot3d(0, -2 .. 0.7, -1.2 .. 1.2, orientation=[-90,0],
> grid=[250, 250], style=patchnogrid,
> scaling=constrained, color=mandelbrot);

ENDE

0, -2 .. 0.7, -1.2 .. 1.2 ist der x/y Wertebereich innerhalb der Funktion plot3D, quasi die zwei Gratisschleifen.
color=mandelbrot ruft mandelbrot auf

Absolut elegant programmiert, hoffe Du siehst das wesentliche darin.
ciao
richy



Nachricht bearbeitet (09.02.04 14:38)