Netzwerk Mathematik/Physik + E-Learning

Ziel dieses Bausteins ist es, eine Liste kurz umrissener Szenarien und UseCases in der Verwendung von MAXIMA in ONYX-Aufgaben zusammenzutragen, für die es lohnenwert erscheint, in einem zweiten Schritt ggf. eine nützliche Dokumentation (Erläuterung / Anwendungsbeispiel) im ONYX Hilfesystem zu erstellen.

Mehrschrittige MAXIMA-Berechnungen

Besteht eine Berechnung aus mehreren MAXIMA-Kommandos, ist darauf zu achten, dass trotzdem nur eine einzelne Rückgabe/Ausgabe erfolgt.

Möglichkeit 1:

   a:{var1}$
   b:{var2}$
   if a>=0 then c:a^b else c:0$
   c; 
Die mit $ abgeschlossenen Kommandos erzeugen keine Ausgabe. Eine noch sauberere Lösung bietet die block-Anweisung:

Möglichkeit 2:

   block([a,b,c], a:{var1}, b:{var2}, if a>=0 then c:a^b else c:0, c);
Sie führt die durch Komma getrennten Anweisungen der Reihe nach aus und gibt den Wert der letzten Anweisung zurück. Die in den \([\cdot]\)-Klammern aufgelisteten Variablen werden als lokale Variablen innerhalb des Blocks behandelt. Globale Variablen gleichen Namens (außerhalb des Blocks) werden dann nicht verändert. Dies ist insbesondere dann ratsam, wenn für die Berechnung Systemvariablen des MAXIMA zeitweilig verändert werden müssen.

Desweiteren können (und sollten) auch Funktionen nur lokal definiert werden (dieses verringert Laufzeitprobleme, siehe Generierungsfehler auf Allgemeine Hinweise zum Programmieren mit Maxima in Onyx). Struktur-Beispiel:

block( /* name_xyz, Kommentar */ 
   [var1:{var1}, var2:{var2}, ...], /* lokale Variablen */ 
   local(f,...),                    /* lokale Funktionen */ 
   f(x,y):= ..., 
   ... 
);

Weitere Hinweise:

  • mit den Geschweiften Klammern {...} greift man auf die ONYX-Variable mit dem genannten Namen zu.
  • Zur Fehlersuche ist der Kommentar am Anfang des blocks nützlich, da dieses als erstes in der Maxima-Ausgabe erscheint. Sinnvoll ist es hier den Namen der Variablen der das Ergebnis zugewiesen wird zu nennen.
  • Wenn der Rückgabewert nicht nur eine Zahl ist, sollte dieser mit string(...) ausgegeben werden und einer Text-Variablen zugewiesen werden. Diese Variable kann man dann in einem weiteren Maxima-Code einen lokalen Variablen zuweisen und damit weiter rechnen.

Diskussion: [Name der Diskussion]