Helmut Albrecht:

# 10 Minuten Maxima

Deutsche Übersetzung des "10 minute (wx)Maxima tutorial:
a quick introduction to wxMaxima and Maxima" von Žiga Lenarčič

Willkommen bei Maxima!
In diesem einführenden Tutorial werden Sie einige Grundlagen
von Maxima bzw. wxMaxima kennenlernen. Maxima ist ein CAS - ein
Computer-Algebra-System - ähnlich wie Mathematica, Maple und
weitere Vertreter dieser Spezies. Während das ursprüngliche
Maxima eine reine "Kommandozeilen-Version" ist (bei der man
alle Kommandos auswendig wissen und eintippen muss), hat
wxMaxima, mit dem Sie hier arbeiten, eine deutlich einfacher
zu bedienende grafische Benutzeroberfläche, in der viele
"Befehle" aus Menüs ausgewählt werden können.

Beginnen wir mit einigen einfachen Rechenbeispielen!
Unterhalb dieses blaugrau hinterlegten Kommentarfelds steht
eine "Eingabezelle" mit einer einfachen Addition. Positionieren
Sie den Cursor irgendwo in diese Eingabezelle und drücken Sie
die Tastenkombination <SHIFT>-<ENTER> (Großschreibetaste festhalten
und Eingabetaste drücken!), um die Eingabezelle auszuwerten.

1 + 1;

Sie sollten das richtige Ergebnis und keine Fehlermeldungen erhalten
haben. Fehlermeldungen können eigentlich nur aus einer fehlerhaften
Installation herrühren. In diesem Fall überprüfen Sie bitte Ihre
Konfiguration von Maxima und/oder besuchen die Website von Maxima
(http://wxmaxima.sourceforge.net/), um Hinweise für eine korrekte
Installation von Maxima zu erhalten.

Da die Installation in aller Regel problemlos verläuft, sollten
Sie keine Fehlermeldungen erhalten haben, so dass wir mit einigen
weiteren Berechnungen fortfahren können. Positionieren Sie dazu den
Cursor wieder in die untenstehende Eingabezelle und drücken erneut
die Tastenkombination Großschreibe- und Eingabetaste, um die Eingabe
auszuwerten. 

5!;
% * 10;
%o1 * 100;
1 / 3;
1.0 / 3.0;

In der obigen Eingabezelle haben wir 5 "Zeilen" an Maxima gesandt. 
Jede dieser Zeilen muss mit einem ";" oder einem "§" enden. In die
jeweils nächste Zeile gelangen Sie mit mit dem einfachen Drücken der
Eingabetaste.
Wenn eine Zeile mit ";" endet, dann zeigt Maxima das zugehörige Ergebnis
an, bei einem "§" am Ende wird zwar das Ergebnis intern berechnet, dessen
Ausgabe jedoch unterdrückt. Dies ist ganz praktisch, wenn man aufwändige
(Zwischen-)Berechnungen mit umfangreichem Output durchführt.
Falls Sie nur immer eine einzige Zeile eingeben, müssen Sie das ";" am Ende
nicht eingeben, dies übernimmt Maxima automatisch für Sie. Das "§" muss
allerdings immer explizit eingegeben werden!
Bitte beachten Sie außerdem, dass die Ergebnisse von 1/3 und 1.0/3.0
voneinander abweichen. Dies liegt daran, dass Maxima - anders als
numerische Softwarepakete - immer danach trachtet, Ergebisse möglicht
exakt anzugeben und 1/3 ist nun mal genauer als 0.33333333!
Maxima wertet also Ausdrücke wie 1/3 oder sqrt(2) (Wurzel aus 2) nicht
aus - solange man diese Auswertung nicht explizit anfordert.
In der letzten Zeile 1.0/3.0 haben wir Fließkommazahlen angegeben, was
Maxima anweist, eine Auswertung vorzunehmen.

Diese Fließkomma-Näherung kann man man für beliebige Ausdrücke anfordern,
wie das nächste Beispiel zeigt. Werten Sie die Eingabe aus und betrachten
Sie die Ergebnisse.

sqrt(2 * %pi);
float(%);

In der Zeile "float(%);" wurde das Symbol "%" benutzt. Hinter diesem
Prozentzeichen verbirgt sich immer das Ergebnis der (zeitlich) zuletzt
ausgewerteten Zeile.
Da alle Ausgabezeilen mit "%o1", "%o2" "%o3" u.s.w. durchnummeriert werden,
kann man durch Eingeben dieser Ausgabezeilenkennung das jeweilige Ergebnis
wieder herholen. "%o1", "%o2" ... sind damit quasi Variable, in welchen die
erzeugten Ausgaben automatisch gespeichert werden.

Natürlich kann man auch eigene Variable vereinbaren. In solchen Variablen
können nicht nur Werte sondern beliebeige Objekte (Terme, Gleichungen, ...)
gespeichert werden. Die Zuweisung erfolgt immer nach dem Prinzip
    variablenname:objekt
um ein Objekt in "variablenname" zu speichern. Am Besten schauen wir uns dies
in der nächsten Eingabezelle an:

radius: 10 $
height: 100 $
area: %pi * radius^2;
volume: area * height;

Das letzte Ergebnis lassen wir noch numerisch evaluieren:

float(%);

Seither haben wir Maxima lediglich als  "Taschenrechner" benutzt.
Nachfolgend wollen wir Dinge tun, die mit einem einfachen Rechner nicht
möglich sind - beispielsweise unbestimmte und bestimmte Integrale errechnen:

integrate( sin(x), x);
integrate( sin(x), x, 0, %pi);

Nachfolgend definieren wir eine Funktion. Eine Funktion benötigt einen
(beliebigen) Namen, im nachfolgenden Beispiel nennen wir die Funktion "f".
Danach muss in runden Klammern der Aufrufparameter (hier "x" genannt)
angegeben werden. (Wie wir noch sehen werden, kann eine Funktion auch mehrere
solche Aufrufparameter haben.) Die Zuweisung des Funktionsterms - hier
"x^2+a" geschieht über den speziellen "Funktions"-Zuweisungsoperator ":=".
Ansonsten geschieht eine solche Funktionsdefinition in Maxima genau wie aus
der Schule gewohnt!

f(x) := x^2 + a;

Nun kann man beliebige Funktionswerte bestimmen lassen, beispielsweise

f(5);
f(7);

Solange der Wert von a noch nicht festgelegt ist, erhalten wir als Funktionsergebnisse
natürlich nur die entsprechenden Terme.
Legt man a fest, so erhalten wir natürlich konkrete Werte:

f(5), a=-5;
f(7), a=3;

Schließlich kann man dies Funktion noch integrieren:

integrate( f(var), var );

Manchmal benötigt Maxima zusätzliche Informationen, um einen Ausdruck auszu-
werten und und fragt die benötigten Dinge nach. In aller Regel erscheint
ein Cursor nach der Frage, so dass man die gewünschte Antwort nur noch
einzutippen braucht. Falls nicht, so schreibt man die Antwort einfach darunter
und sendet sie mit "Großschreibe-Eingabetaste" an Maxima.
Im unteren Beispiel reicht die Antwort "p" aus, man muss nicht explizit
"positive" eingeben.

integrate( 1 / (x^2 + a), x);

Man kann Maxima allerdings mit der Funktion "assume()" schon im Vorfeld über
solche Annahmen informieren. Um eine solche Annahme rückgängig zu machen,
kann man "forget" benutzen.
Um Hilfe für eine bestimmte Funktion zu erhalten, klickt man in den Funktions-
namen und drückt die F1-Taste. Ausprobieren!

assume(a > 0)$
integrate( 1 / (x^2 + a), x);
forget(a > 0)$

Nach diesen einführenden Grundlagen schauen wir uns noch einige allgemeine
mathematischen Aufgaben an. Denken Sie daran: Wenn Sie mehr über eine spezielle
Funktion erfahren wollen, dann klicken Sie in deren Namen und drücken Sie F1.

Um Gleichungen symbolisch oder numerisch zu lösen gibt es die Funktion "solve()":

solve(a*x^2 + b*x + c = 0, x);

Lineare Algebra.
Mit der Funktion "matrix()" kann man Matitzen erzeugen. Diese können auch nicht-
numerische Ausdrücke enthalten. Die Funktion "invert()" berechnet Inverse und für
die Matritzenmultiplikation wird der Punkt "." verwendet.

A: matrix([1,-1],
          [1,sin(c)]);
B: invert(A);

A.B;
ratsimp(A.B);

In der letzten zeile haben wir "ratsimp()" verwendet, um das Ergebnis
von "A.B" zu vereinfachen.
Maxima hat eine ganze Menge an solchen "Vereinfachungsfunktionen", wobei
es natürlich immer darauf ankommt, was vereinfacht werden soll. Dieses
"Vereinfachen" ist daher ein relativ komlexes Thema, in welches man sich
nach und nach einarbeiten wird. Solange Sie sich hierin noch nicht so gut
auskennen, ist "ratsimp()" sicher immer die beste Wahl.

Schauen wir uns zur Abwechslung einige 2D- und 3D-Plots an:

wxplot2d([sin(x), cos(x)], [x,0, 2*%pi]);
wxplot3d( exp(-x^2 - y^2), [x,-2,2],[y,-2,2]);

Nun wagen wir uns noch ans Differenzieren, indem wir die "diff()"-Funktion
nutzen:

f(x) := x^2 $
diff(f(x), x);
g(y) := sin(y)$
g(f(x));
diff( g(f(x)) , x);

Maxima kennt natürlich die Kettenregel!

Am Schluss lassen wir Maxima noch eine gewöhnliche Differentialgleichung
zweiter Ordnung lösen:

y''(t) + omega^2 * y(t) = 0

assume(omega > 0);
ode2( 'diff(y, t, 2) + omega^2 * y = 0, y, t );

ic2(%, t = 0, y = amp, 'diff(y,t) = 0 );

Damit sollten Sie einen ersten Einblick in die Fähigkeiten von und in den
Umgang mit Maxima gewonnen haben, der es Ihnen ermöglicht, selbst auf Entdeckungsreise
zu gehen.
Ein erster Schritt kann darin liegen, die oben aufgeführten Beispiele jeweils leicht zu
verändern und die Auswirkungen zu beobachten. Editieren Sie hierfür einfach die jeweilige
Eingabezelle und drücken Sie abschließend immer SHIFT-RETURN um Ihre Änderungen an
Maxima zu übermitteln.
Eigene Versuche können Sie auch hier unterhalb dieses letzten Kommentarfeldes eingeben, trauen
Sie sich, Sie können ja nichts kaputt machen!
Denken Sie auch daran, dass Sie mit F1 immer eine Hilfestellung für eine bestimmte
Funktion erhalten können.
Sollten Sie Probleme haben, das englischsprachige Manual zu verstehen, so sei Ihnen die Seite

http://maxima.sourceforge.net/docs/manual/de/maxima.html#SEC_Top

empfohlen. 

Maxima kann Sie nicht nur beim Lösen mathematischer Probleme unterstützen, es kann Ihnen
auch helfen, Mathematik besser zu verstehen! Viel Spass und Erfolg dabei!