Maxima: plot3d (Lernpfad)

(zu tm.jpg Themenheft Mathematik mit GeoGebra)

In diesem Lernpfad lernst du, Funktionen dreidimensional mit Hilfe des Computer-Algebra-Systems Maxima grafisch darzustellen. Darüber hinaus erlaubt dir dieses Werkzeug eine Reihe eigener Entdeckungen …

Funktionen in zwei Variablen

Der Graph einer Funktion in zwei Variablen ist im Allgemeinen eine Fläche im Raum: tex:z = f(x,y). Für die folgenden Darstellungen mit Maxima sind neben dem Funktionsterm zumindest die Intervalle für die Variablen x und y anzugeben.

Beispiel: f(x,y) = x^2

plot3d(x^2,[x,-5,5],[y,-5,5]);

Grafik: Alfred Nussbaumer (maxima)

Aufgaben:

Untersuche die Funktionsgraphen und erläutere, wie die Fläche von den Variablen abhängt / abhängen könnte!

  1. tex:f(x,y) = y^2
  2. tex:f(x,y) = x^2 + y^2
  3. tex:f(x,y) = x^2 - y^2
  4. tex:f(x,y) = \frac {x \cdot y \cdot (x^2 - y^2)}{x^2+y^2}}
  5. tex:f(x,y) = epx(-x^2) \cdot exp(-y^2)

Hinweis: Wähle geeignete Intervalle für die Variablen x und y!

Kurven und Flächen im Raum (Parameterdarstellung)

Geraden

plot3d([t,2*t,-t],[t,-4,4],[u,-4,4],['grid,20,20]);

Grafik: Alfred Nussbaumer (maxima)

Helix (Schraubenlinie)

plot3d([cos(t), sin(t), -12 + t],[t,0,8*%pi],[u,0,2*%pi],['grid,100,2]);

Grafik: Alfred Nussbaumer (maxima)

Ebenen

plot3d([1+t+u, -t+2*u, 1+u],[t,-4,4],[u,-4,4]);

Grafik: Alfred Nussbaumer (maxima)

Aufgaben:

Ausgabe

Verwende für die Darstellung und Ausgabe einer Grafik (mit gnuplot) verschiedene Parameter:

'grid

Legt die Anzahl der Gitterpunkte für die Variablen fest, z.B.:

plot3d([cos(u),sin(u),v],[u,0,4*%pi],[v,-5,5], ['grid,60,10]);

Hinweis: Der Vorgabewert für 'grid ist ['grid, 30, 30]

Grafik: Alfred Nussbaumer (maxima)

In diesem Fall werden die „Kreise“ aufgrund der 60 Gitterpunkte sehr glatt dargestellt, während in der Richtung des Parameters v (z-Koordinate) nur 10 Gitterpunkte berücksichtigt werden.

gnuplot_pm3d

Lädt erweiterte GNUPLOT-Grafikfunktionen, zB. die Darstellung von Konturen oder farbigen Flächen.

plot3d([cos(u)*(1/v),sin(u)*(1/v),-v],[u,0,2*%pi],[v,0.5,5], [gnuplot_pm3d,true]);

Grafik: Alfred Nussbaumer (maxima, gnuplot)

gnuplot_preamble

Legt Grafikoptionen für die Ausgabe (mit gnuplot) fest, z.B.:

plot3d([cos(u),sin(u),v],[u,0,4*%pi],[v,-5,5], ['grid,60,10], 
  [gnuplot_preamble, "set terminal png; set out 'public_html/thema-mathematik/images/zylinderflaeche_04'"]);

Legt als Ausgabedatei eine Grafikdatei im PNG-Format, im angegebenen Pfad fest. Die Ausgabe von farbigen Grafiken wie im obigen Beispiel ist dabei nicht möglich.

Polardarstellung

Die Darstellung von Rotationsflächen ist mit Hilfe der Polardarstellung recht einfach.

Beispiel: Rotation einer linearen Funktion

Beachte: Die lineare Funktion -r wird im Intervall [2,5] dargestellt. Eine Strecke rotiert und erzeugt den Mantel eines Kegelstumpfes.

Die Rotationsfläche wird im Intervall [-%pi/5, 3*%pi/2] dargestellt. Die Rotationsfläche wird nicht in einer vollen Umdrehung dargestellt, sondern erscheint „aufgeschnitten“

plot3d(-r,[r,2,5],[th,-%pi/5,3*%pi/2], ['transform_xy,polar_to_xy], [gnuplot_pm3d,true]);

Grafik: Alfred Nussbaumer (maxima, gnuplot)

Beispiel: Rotation der Sinuskurve

Beachte: Die Sinuskurve sin® wird im Intervall [%pi/2; 3*%pi/2] dargestellt. Dieses Stück der Sinuskurve rotiert und erzeugt die Rotationsfläche.

Die Rotationsfläche wird im Intervall [-%pi/5, 3*%pi/2] dargestellt. Die Rotationsfläche wird nicht in einer vollen Umdrehung dargestellt, sondern erscheint „aufgeschnitten“

plot3d(sin(r),[r,%pi/2,3*%pi/2],[th,-%pi/5,3*%pi/2], ['transform_xy,polar_to_xy], [gnuplot_pm3d,true]);

Grafik: Alfred Nussbaumer (maxima, gnuplot)

Weitere Beispiele:

plot3d(sqrt(r),[r,0.8,5],[th,-%pi/5,3*%pi/2], ['transform_xy,polar_to_xy], [gnuplot_pm3d,true]);

Grafik: Alfred Nussbaumer (maxima, gnuplot)

Rotation um x-Achse

Kugel

Beachte: Zuerst das Paket „draw“ laden!

load(draw);

Dann Funktion definieren, deren Graph um die x-Achse rotiert:

(%i37) f(x):=sqrt(9-x^2);

Mantelfläche (nach gnuplot) ausgeben:

(%i40) draw3d(surface_hide=true,enhanced3d=true,parametric_surface(x,-f(x)*sin(t),f(x)*cos(t),t,0,2*%pi,x,-3,3));
(%o40)                    [gr3d(parametric_surface)]

Screenshot: A. Nussbaumer

Anmerkung: Die Skalierung in Richtung der x-Achse kann durch die Angabe eines weiteren Darstellungsintervalls, z.B. x,-6,-6 beeinflusst werden.

Rotationskörper durch Zylinderscheiben annähern:

(%i12)    
draw3d(surface_hide=true,enhanced3d=true,parametric_surface(x,-f(1)*sin(t),f(1)*cos(t),t,0,2*%pi,x,1,1.5),
  parametric_surface(x,-f(1.5)*sin(t),f(1.5)*cos(t),t,0,2*%pi,x,1.5,2),
  parametric_surface(x,-f(2)*sin(t),f(2)*cos(t),t,0,2*%pi,x,2,2.5),
  parametric_surface(x,-f(2.5)*sin(t),f(2.5)*cos(t),t,0,2*%pi,x,2.5,3),
  parametric_surface(x,-f(3)*sin(t),f(3)*cos(t),t,0,2*%pi,x,3,3.5),color=black,line_width=3,enhanced3d=false,parametric(x,0,f(x),x,0,2*%pi));

Screenshot: A. Nussbaumer