# 2d-Graphen systematisch dargestellt

Mathematik in wxMaxima www.mathematik-verstehen.de Haftendorn Okt 2010

### Handling

Achtung: Durch Anklicken der linken Zellmarkierung kann man die 
Abschnitte und auch einzelne Zellen aufklappen und auch wieder zuklappen.
Dazu Shift halten, dann werden auch alle Unterebenen aufgeklappt.

Endung *.wxmx ist komfortabel. Ist die Endung *.wxm muss man 
erst noch alle Ausgaben neu erzeugen. Mit Strg r  werden alle aufgeklappten Zellen ausgewertet.
Zum Lernen ist es besser die Zellen einzeln (mit Shift+Enter) auszuwerten.

Werte einzelne Zellen aus mit Shift-Enter. 
Auswertung in einem Rutsch: Falte alle Abschnitte auf,
werte alle Zellen mit Strg r aus ( auch Menu Cell Alle Zellen auswerten). 

### Inhalt

## Graphen von einzelnen Funktionen (kartesisch)

Verwendung des Menus Plotten, Plot2d..., in Eingabemaske passend eintragen:

wxplot2d([sin(x)], [x,-5,5])$

Funktion erst definieren:

f(x):=x^3-2*x^2+1;

wxplot2d([f(x)], [x,-5,5])$

Ohne y-Angaben nimmt Maxima den gesamten Wertebereich zum x-Intervall.
Einen y-Bereich kann man in der Eingabemaske angeben oder von Hand in dem
blauen Text eintragen.

wxplot2d([f(x)], [x,-2,4], [y,-5,5])$

wxplot2d([f(x)], [x,-2,3],[y,-5,3],
 [gnuplot_preamble, "set grid;"])$

Bei Optionen in der Eingabemaske kann man die "Grids" wählen.
Zwischen die Anführungszeichen kann man noch mehr Optionen von Hand 
schreiben, jede Option mit Semikolon.
Der Wunsch "Karopapier" zu haben, wie in Abschnitt 5 erfüllt. 

## Graphen mehrerer Funktionen

Am Einfachsten trägt man in die Listenklammern [] mit Komma getrennt 
weitere Funktionsterme ein:

wxplot2d([x,f(x),(x-1)^2-4], [x,-2,3],[y,-5,3])$

Man kann aber auch automatisch eine Liste erzeugen:

li: makelist(x^3-k*x^2+1,k,-2,7)$
wxplot2d(li, [x,-2,3],[y,-5,3])$

li ist dann schon eine Liste, darum fehlen im Plotbefehl die eckigen Klammern.
Die Meldungen: "plot2d: some values were clipped." würde ich gern unterdrücken, 
ist mir bisher nicht gelungen.

Für Kurvenscharen ist es eleganter, eine Funktion passend zu definieren:

f[k](x):=x^3-k*x^2+1;

Dies entspricht der üblichen Art, k wird als Index aufgefasst.

li: makelist(f[k](x),k,-2,7);

Das ist dieselbe Liste wie oben. Die vielen Funktionsterme unterdückt man
mit [legend,false]
Will man einen engeren Parameterabstand, so geht das so:

li2: makelist(f[i/4](x),i,-8,28)$
wxplot2d(li2, [x,-2,3],[y,-5,3],[legend, false])$

wxplot2d(li, [x,-2,5],[y,-10,7],[legend,false],[style,[lines,4,%n]])$

## Animationen, Schieberegler

Eine moderne und wichtige Möglichkeit für die Lehre sind Schieberegler.

with_slider(k,makelist(i/4,i,-8,28),[k,f[k](x)],[x,-2,5],[y,-10,7]);

Oben in der Werkzeugleiste ist der Schieberegler. Markiere erst das Bild.
Hier ist k selbst auch eingetragen, damit die Legende besser ist.

## Gestaltung von Farben, Dicken, Beschriftungen

Es gibt zwei Prinzipien für Optionen. Die wichtigsten sind in in wxMaxima
durch Listen [Name, Werte] verwirklicht. 
Seltene Optionen kommen aus Maxima und stehen -wie oben "set grid;"- bei 
[gnuplot_preambel, "opt1;opt2;.."]

wxplot2d([sin(x)], [x,-5,5],[xlabel,"Zeit"],[ylabel,"Amplitude"],
    [style,[lines,3,4]])$

wxplot2d([0,sin(x),sin(x)+cos(x),sin(2*x)+cos(2*x),x ], 
    [x,-5,5],[y,-2,2],[xlabel,"Zeit"],[ylabel,"Amplitude"],
    [style,[lines,5,3],[lines,2,4],[lines,3,2],[lines,4,1],
     [lines,1,5]]);

Hier wird der Linienstil in der Reihenfolge die zu zeichnenden Terme genannt.

wxplot2d([sin(x)+3], [x,-5,5])$

Wenn die x-Achse nicht im Wertebereich liegt, wird sie auch nicht gezeichnet.
Entweder man fügt noch 0 zum Zeichnen ein oder fordert den Wertebeich direkt. 

wxplot2d([sin(x)+3], [x,-5,5],[y,0,4])$

## Seitenverhältnis, gleicher Maßstab 

### Vorschlag 2: Übliches Format, aber ymax1 selbst berechnen

(xmin:-1,xmax:2,ymin:-0.2,ymax:2)$
ymax1:ymin+0.6*(xmax-xmin)  /*Nimm ymax1 für gleichen Maßstab*/;

wxplot2d([1/2*x^2], [x,xmin,xmax], [y,ymin,ymax1])$

Die Idee ist: Die Fenster sind fast goldene Rechtecke,Höhe:Breite=0.6. 
ymax1 ist so berechnet,
dass sich damit ein 0.6- Rechteck aus der Breite ergibt. 
Darum sind nun die Einheiten rechts und und oben gleich lang.

Nun das fast-Karopapier mit dieser Darstellung. 

wxplot2d([1/2*x^2], [x,xmin,xmax], [y,ymin,ymax1],
     [gnuplot_preamble, "set grid;"]);

Oft wird das ja schon reichen für einen schulisch sinnvollen Eindruck.
Notfalls experimentiert man ein wenig mit anderen Grenzen.

### Vorschlag 2: Grenzen wünschen, aber Format ändern

(xmin:-1,xmax:2,ymin:-0.2,ymax:3)$
(xpix:400, ypix:(ymax-ymin)/(xmax-xmin)*xpix);

wxplot2d([1/2*x^2], [x,xmin,xmax], [y,ymin,ymax]),
    wxplot_size=[xpix,ypix];

Achtung!!! der Befehl wxplot_size steht hinter!!! der Klammer-zu!!!

Nun das fast-Karopapier mit dieser Darstellung

wxplot2d([1/2*x^2], [x,xmin,xmax], [y,ymin,ymax],[ylabel,none],
     [gnuplot_preamble, "set grid;"]),
    wxplot_size=[xpix,ypix]$

### Vorschlag des Tutorials mit Option Ratio 

(xmin:-2,xmax:4,ymin:-2,ymax:2)$
myratio:float((ymax-ymin)/(xmax-xmin));

Diesen letzen Wert muss man nun leider von Hand übertragen nach ratio.

wxplot2d([sqrt(4-x^2),-sqrt(4-x^2),sqrt(4-(x-2)^2),-sqrt(4-(x-2)^2)],
    [x,xmin,xmax], [y,ymin,ymax],[legend, false],
[gnuplot_preamble, "set title 'Another way to make a circle 
appear spherical'; set size ratio 0.66666666666667 ;"]);

Nun also das versprochene Karopapier mit dieser Version.

(xmin:-2,xmax:4,ymin:-4,ymax:4)$
myratio:float((ymax-ymin)/(xmax-xmin));

wxplot2d([f[-1](x),f[3](x),-(x-1)^2+2],
    [x,xmin,xmax], [y,ymin,ymax],[legend, false],
    [style,[lines,3]],
    [gnuplot_preamble,"set grid;
     set size ratio 1.333333333333333 ;"]);

Diese Möglich keit bietet sich an, weil man wegen der Grids sowieso
gnuplot_preamble ansprechen muss.

über das wxMaxima zugrundeliedende Maxima kann man auf viel mehr 
Möglichkeiten zugreifen. Es enstehen dann aber keine eingebetten Graphen,
sondern die erscheinen in einem Extrafenster. 
Lies dazu die Datei "Erweiterte Zeichenmöglichkeiten". 
Hier folgt nur ein Befehl als erster Eindruck.

load(draw)$

myplot:draw2d(xtics = 1/2,xtics_axis=true,grid=true,
       ytics = 1/2,ytics_axis=true,
       line_width=4, color="red",
             implicit(x^2+y^2=1,x,-5/3,5/3,y,-1,1)  )$

Im entstandene Graphen-Fenster mit Options das Bild ins Clippboard nehemen,
dann schließen des Fensters, damit es hier weitergeht.

## Stückweise  definierte Funktionen

H(x) := if x < 0 then x^4 - 1 else 1 - x^2 $
wxplot2d([H(x)], [x,-2,2],[y,-5,5],[ylabel,"H(x)"])$

## Parameterdarstellung

In der Eingabemaske für Plotten kann man bei "Besondere Werte" parametrisch 
wählen.

wxplot2d([['parametric, t*cos(t), t*sin(t), [t, 0, 25],
     [nticks, 300]]], [x,-25,25]),wxplot_size=[400,400]$

Der Befehl wxplot_size=[400,400] ist hier nicht berechnet sondern 
einfach so gesetzt, da in y-Richtung auch 50 Einheiten dargestellt waren.

## Polarkoordinaten

In der Eingabemaske von Ploten kann unten bei Otionen 
"polar" gewähltwerden. 
Die folgende Darstellung hat aber den Fehler, dass keine
zwei Runden gezeichnet werden.

wxplot2d([ph], [ph,0,4*%pi],[y,-13,10],
 [gnuplot_preamble, "set polar; set zeroaxis;"])$

Also empfiehlt es sich, diese Möglichkeit zu meiden und
stattdessen Polarkoordinaten parametrisch zu erzeugen.
Dieselbe Archimedische Pirale also:

wxplot2d([['parametric, t*cos(t), t*sin(t), [t, 0, 4*%pi],
     [nticks, 300]]], 
     [x,-10,15],[y,-15,10]),wxplot_size=[400,400]$

## Implizite Darstellung

load(implicit_plot)$

Dies ist mir hier noch nicht gelungen. In der Datei
"erweiterte Zeichenmöglichkeiten" habe ich eine Lösung mit gnuplot.

wxplot2d([['implicit, x^2=y^3-3*y+1,[x,-4,4],[y,-4,4],
   [nticks, 300]]],
  [x,-4,4] );

## Graphen verschiedener Typen in einem Bild.

Als Erstes steht in dem Befehl wxplot2d([...] die Liste der zu 
zeichnenden Objekte. Diese können von unterschiedlichem Typ sein.

p(x):=-(x-3*%pi)^2/%pi+%pi;

Hier also zwei Objekte: eine Parabel und eine Parametrische Kurve.

wxplot2d([p(x),['parametric, t*cos(t), t*sin(t), [t, 0, 4*%pi],
     [nticks, 300]]], 
     [x,-10,15],[y,-15,10]),wxplot_size=[400,400]$

s;