Previous: Funktionen und Variablen für Fakten, Nach oben: Maximas Datenbank [Inhalt][Index]
Gibt den Wert 0 zurück, wenn die Aussage p zu false ausgewertet
werden kann und den Wert 1, wenn die Auswertung true liefert.  Kann
die Aussage weder zu false oder true ausgewertet werden, wird eine
Substantiv-Form zurück gegeben.
Beispiele:
(%i1) charfun (x < 1);
(%o1)                    charfun(x < 1)
(%i2) subst (x = -1, %);
(%o2)                           1
(%i3) e : charfun ('"and" (-1 < x, x < 1))$
(%i4) [subst (x = -1, e), subst (x = 0, e), subst (x = 1, e)];
(%o4)                       [0, 1, 0]
Liefert den Vergleichsoperator op (<, <=, >, 
>=, = oder #), so dass der Ausdruck is(x
op y) zu true ausgewertet werden kann.  Ist eines der
Argumente eine komplexe Zahl, dann wird notcomparable zurückgegeben.
Kann Maxima keinen Vergleichsoperator bestimmen, wird unknown
zurückgegeben.
Beispiele:
(%i1) compare (1, 2); (%o1) < (%i2) compare (1, x); (%o2) unknown (%i3) compare (%i, %i); (%o3) = (%i4) compare (%i, %i + 1); (%o4) notcomparable (%i5) compare (1/x, 0); (%o5) # (%i6) compare (x, abs(x)); (%o6) <=
Die Funktion compare versucht nicht festzustellen, ob der Wertebereich
einer Funktion reelle Zahlen enthält.  Obwohl der Wertebereich von 
acos(x^2+1) bis auf Null keine reellen Zahlen enthält, gibt 
compare das folgende Ergebnis zurück:
(%i1) compare (acos (x^2 + 1), acos (x^2 + 1) + 1); (%o1) <
Repräsentiert die Äquivalenz, das heißt den gleichen Wert.
equal wird nicht ausgewertet oder vereinfacht.  Die Funktion
is versucht einen Ausdruck mit equal zu einem booleschen Wert
auszuwerten.  is(equal(a, b)) gibt true oder
false zurück, wenn und nur wenn a und b gleich oder
ungleich sind für alle Werte ihrer Variablen, was mit ratsimp(a -
b) bestimmt wird.  Gibt ratsimp das Ergebnis 0 zurück, werden
die beiden Ausdrücke als äquivalent betracht.  Zwei Ausdrücke können
äquivalent sein, obwohl sie nicht syntaktisch gleich (im allgemeinen
identisch) sind.
Kann is einen Ausdruck mit equal nicht zu true oder 
false auswerten, hängt das Ergebnis vom Wert des globalen Flags 
prederror ab.  Hat prederror den Wert true, gibt is
eine Fehlermeldung zurück.  Ansonsten wird unknown zurückgegeben.
Es gibt weitere Operatoren, die einen Ausdruck mit equal zu true
oder false auswerten können.  Dazu gehören if,
and, or und not.
Die Umkehrung von equal ist notequal.
Beispiele:
equal wird von allein weder ausgewertet noch vereinfacht:
(%i1) equal (x^2 - 1, (x + 1) * (x - 1));
                        2
(%o1)            equal(x  - 1, (x - 1) (x + 1))
(%i2) equal (x, x + 1);
(%o2)                    equal(x, x + 1)
(%i3) equal (x, y);
(%o3)                      equal(x, y)
Die Funktion is versucht, equal zu einem booleschen Wert
auszuwerten.  Der Ausdruck is(equal(a, b)) gibt den Wert
true zurück, when ratsimp(a - b) den Wert 0 hat.
Zwei Ausdrücke können äquivalent sein, obwohl sie nicht syntaktisch
gleich sind.
(%i1) ratsimp (x^2 - 1 - (x + 1) * (x - 1)); (%o1) 0 (%i2) is (equal (x^2 - 1, (x + 1) * (x - 1))); (%o2) true (%i3) is (x^2 - 1 = (x + 1) * (x - 1)); (%o3) false (%i4) ratsimp (x - (x + 1)); (%o4) - 1 (%i5) is (equal (x, x + 1)); (%o5) false (%i6) is (x = x + 1); (%o6) false (%i7) ratsimp (x - y); (%o7) x - y (%i8) is (equal (x, y)); (%o8) unknown (%i9) is (x = y); (%o9) false
Kann is einen Ausdruck mit equal nicht zu true oder
false vereinfachen, hängt das Ergebnis vom Wert des globalen Flags
prederror ab.
(%i1) [aa : x^2 + 2*x + 1, bb : x^2 - 2*x - 1];
                    2             2
(%o1)             [x  + 2 x + 1, x  - 2 x - 1]
(%i2) ratsimp (aa - bb);
(%o2)                        4 x + 2
(%i3) prederror : true;
(%o3)                         true
(%i4) is (equal (aa, bb));
Maxima was unable to evaluate the predicate:
       2             2
equal(x  + 2 x + 1, x  - 2 x - 1)
 -- an error.  Quitting.  To debug this try debugmode(true);
(%i5) prederror : false;
(%o5)                         false
(%i6) is (equal (aa, bb));
(%o6)                        unknown
Einige weitere Operatoren werten equal und notequal zu einem
booleschen Wert aus.
(%i1) if equal (y, y - 1) then FOO else BAR;
(%o1)                          BAR
(%i2) eq_1 : equal (x, x + 1);
(%o2)                    equal(x, x + 1)
(%i3) eq_2 : equal (y^2 + 2*y + 1, (y + 1)^2);
                         2                   2
(%o3)             equal(y  + 2 y + 1, (y + 1) )
(%i4) [eq_1 and eq_2, eq_1 or eq_2, not eq_1];
(%o4)                  [false, true, true]
Da not expr den Ausdruck expr auswertet, ist 
not equal(a, b) äquivalent zu 
is(notequal(a, b))
(%i1) [notequal (2*z, 2*z - 1), not equal (2*z, 2*z - 1)]; (%o1) [notequal(2 z, 2 z - 1), true] (%i2) is (notequal (2*z, 2*z - 1)); (%o2) true
Repräsentiert die Verneinung von equal(a, b).
Beispiele:
(%i1) equal (a, b); (%o1) equal(a, b) (%i2) maybe (equal (a, b)); (%o2) unknown (%i3) notequal (a, b); (%o3) notequal(a, b) (%i4) not equal (a, b); (%o4) notequal(a, b) (%i5) maybe (notequal (a, b)); (%o5) unknown (%i6) assume (a > b); (%o6) [a > b] (%i7) equal (a, b); (%o7) equal(a, b) (%i8) maybe (equal (a, b)); (%o8) false (%i9) notequal (a, b); (%o9) notequal(a, b) (%i10) maybe (notequal (a, b)); (%o10) true
Gibt den Wert true zurück, wenn der Ausdruck expr einen Operator
oder eine Funktion enthält, die nicht von Maximas Vereinfacher erkannt wird.
Testet, ob ein Ausdruck expr mit der Variablen v äquivalent zu 
Null ist.  Die Funktion gibt true, false oder dontknow 
zurück.
zeroequiv hat Einschränkungen:
zeroequiv(sin(2*x) - 2*sin(x)*cos(x), x) hat zum Beispiel das Ergebnis 
true und  zeroequiv (%e^x + x, x) hat das Ergebnis false.
Andererseits hat zeroequiv (log(a*b) - log(a) - log(b), a) das Ergebnis
dontknow, wegen dem zusätzlichem Parameter b.
Previous: Funktionen und Variablen für Fakten, Nach oben: Maximas Datenbank [Inhalt][Index]