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.
Formelvergleich in Experten-Abfrage
In Experten-Abfragen ist der Standard
is(equal(ev(LEARNERRESPONSE),ev(CORRECTRESPONSE)))
equal oder gleich
Wenn man = zum Prüfen auf Gleichheit verwendet, werden nur sehr elementare Vereinfachungen durchgeführt. Mit dem Befehl equal (wie standardmäßig vorgegeben) werden "rationale" Termvereinfachungen durchgefürhrt. Intern wird bei is(equal(a,b))
geprüft, ob ratsimp(a-b)
Null liefert. Nachfolgend ein Beispiel, in dem = nicht ausreicht.
(%i2) is (equal (x^2 - 1, (x + 1) * (x - 1))); (%o2) true (%i3) is (x^2 - 1 = (x + 1) * (x - 1)); (%o3) false
Aber auch die Verwendung von equal kann in bestimmten Situationen problematisch sein. Dies liefert unknown
, wenn beide Ausdrücke nur bei bestimmten Variablenbelegungen gleich sind.
(%i2) is(equal(x, 0)); (%o2) unknown (%i3) is(x = 0); (%o3) false
Vereinfachung weiterer Funktionen
Es gibt allerdings Fälle, in denen diese "rationalen" Vereinfachungen nicht ausreichen und weitere Vereinfachungsfunktionen erforderlich sind. Hilfreich sind hier z.B. radcan ziemlich universell, trigsimp für trigonometrische Funktionen oder exponentialize für Exponential- und trigonometrische Funktionen.
(%i1) is(equal(ev(sin(x)^2+cos(x)^2),ev(1))); (%o1) unknown (%i2) is(equal(trigsimp(sin(x)^2+cos(x)^2 - 1), 0)); (%o2) true
Zur Vereinfachung von Potenzen nichtnegativer Zahlen kann außerdem radexpand: all
hilfreich sein
(%i2) is(equal(ev(x), ev(sqrt(x^2)))); (%o2) unknown (%i3) radexpand:all$ is(equal(ev(x), ev(sqrt(x^2)))); (%o4) true
Für Logarithmen kann man logexpand: super
setzen.
(%i1) is(equal(log(a/b), log(a) - log(b))); (%o1) unknown (%i2) logexpand:super$ is(equal(log(a/b), log(a) - log(b))); (%o3) true