Previous: Functions and Variables for Facts, Up: Maximas Database [Contents][Index]
述語論理pがfalse
に評価される時、0を返します;
述語論理pがtrue
に評価される時、1を返します。
述語論理がtrue
もfalse
でもない何かに評価される時(unknown),
名詞形を返します。
例:
(%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]
is (x op y)
が
true
に評価されるような比較演算子op
(<
,<=
,>
,>=
,=
,#
)を返します;
xかyが %i
に依存して、x #
の時、
y
notcomparable
を返します;
該当する演算子がなかったり、Maximaが演算子を決定できなかった時には
unknown
を返します。
例:
(%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) <=
関数compare
は引数の実領域が空でないか決定しようとはしません; 従って、
(%i1) compare (acos (x^2 + 1), acos (x^2 + 1) + 1); (%o1) <
acos (x^2 + 1)
の実領域は空です。
declare (a, constant)
は、aを定数に宣言します。
declare
を参照してください。
もしexprが定数式なら、true
を返します。
そうでなければ、false
を返します。
もし引数が、(/R/
をつけて表示される有理数を含む)数や
%pi
, %e
, %i
にようなシンボル定数、
定数にバインドされた変数、declare
で宣言された定数、
引数が定数の関数のいずれかなら、
式は定数式と考えられます。
constantp
は引数を評価します。
例:
(%i1) constantp (7 * sin(2)); (%o1) true (%i2) constantp (rat (17/29)); (%o2) true (%i3) constantp (%pi * sin(%e)); (%o3) true (%i4) constantp (exp (x)); (%o4) false (%i5) declare (x, constant); (%o5) done (%i6) constantp (exp (x)); (%o6) true (%i7) constantp (foo (x) + bar (%e) + baz (2)); (%o7) false (%i8)
同値、すなわち、同じ値であることを表します。
equal
はそれ自身で評価も整理もされません。
関数is
は、equal
をブーリアン値に評価しようとします。
is(equal(a, b)
は、
もしaとbが、ratisimp(a - b)
を評価することで決定されるように、
変数の可能な値すべてで等しいときだけtrue
を返します;
もしratsimp
が0を返したら、2つの式は同値と考えれます。
2つの式は構文法的に等しくなくても(すなわち同一でなくても)同値でありえます。
is
がequal
をtrue
もしくはfalse
への換算に失敗した時、
結果は、グローバルフラグprederror
に依ります。
prederror
がtrue
の時、is
はエラーメッセージを出力します。
そうでなければ、is
はunknown
を返します。
is
に加えて、
いくつかの他の演算子、if
, and
, or
, not
は
equal
とnotequal
をtrue
もしくはfalse
に評価します。
equal
の否定がnotequal
です。
例:
equal
はそれ自身で評価も整理もされません。
(%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)
関数is
は、equal
をブーリアン値に評価しようとします。
is(equal(a, b)
は、
ratisimp(a - b)
が0を返すときtrue
を返します。
2つの式は構文法的に等しくなくても(すなわち同一でなくても)同値でありえます。
(%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
is
が、equal
をtrue
もしくはfalse
への換算に失敗したとき、
結果は、グローバルフラグprederror
に依ります。
(%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
いくつかの演算子がequal
やnotequal
を
true
もしくはfalse
に評価します。
(%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]
not expr
は、exprの評価を伴うので、
not equal(a, b)
は、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
equal(a, b)
の否定を表します。
例:
(%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
exprがMaximaの整理器が認識しない演算子や関数を含む時だけ、
true
を返します。
変数vの式exprがゼロと同値かどうかテストし、
true
, false
, もしくはdontknow
を返します。
zeroequiv
は以下の制限を持ちます:
例えば、zeroequiv (sin(2 * x) - 2 * sin(x) * cos(x), x)
はtrue
を返し、
zeroequiv (%e^x + x, x)
はfalse
を返します。
一方、
zeroequiv (log(a * b) - log(a) - log(b), a)
は、
余分なパラメータb
があるので、dontknow
を返します。
Previous: Functions and Variables for Facts, Up: Maximas Database [Contents][Index]