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)