Next: Functions and Variables for Facts, Previous: Introduction to Maximas Database, Up: Maximas Database [Contents][Index]
アトムやアトムのリストa_iに、プロパティやプロパティのリストp_iを割り当てます。 a_iやp_iがリストの時、 アトムのそれぞれは、プロパティすべてを得ます。
declareは引数をクォートします。
declareはいつもdoneを返します。
それぞれの宣言フラグに関する記述で注意しているように、
いくつかのフラグに関して、
もしobjectがfeatureを持つよう宣言されているなら、
featurep(object, feature)は、
trueを返します。
しかしながら、featurepはいくつかのフラグを認識しません;
これはバグです。
featuresも参照してください。
declareは以下のプロパティを認識します:
evfunevのフラグ引数としてa_iが現れた時
a_iで名付けられた関数を適用するように
evに伝えます。
evfunを参照してください。
evflagevのフラグ引数としてa_iが現れた時
evの実行中a_iがtrueにバインドされるように
evに伝えます。
evflagを参照してください。
bindtesta_iがバインドされていない状態に評価された時、 Maximaにエラーをトリガーするように伝えます。
nouna_iを名詞としてパースするようにMaximaに伝えます。
この効果は、a_iのインスタンスを'a_iやnounify(a_i)
で置き換えることです。どちらに置き換えるかは文脈に依存します。
constanta_iをシンボル定数と考えるようにMaximaに伝えます。
scalara_iをスカラー変数と考えるようにMaximaに伝えます。
nonscalara_iを非スカラー変数と考えるようにMaximaに伝えます。 普通の使い方は、変数をシンボルベクトルや行列として宣言することです。
nonarrayMaximaにa_iを配列でないものと考えるように伝えます。 この宣言は添字付き変数名の多重評価を抑制します。
mainvara_iを「主変数」と考えるようにMaximaに伝えます。
ordergreatpで決定されるように、
Maximaの式の標準順序では、主変数は他のすべての定数や変数に続きます。
alphabetic(文字列の)a_iの中の文字すべてをアルファベット文字として認識するように Maximaに伝えます。
featurea_iをfeature名として認識するようにMaximaに伝えます。 他のアトムは、a_iプロパティを持つように定義されます。
rassociative, lassociativea_iを右結合、もしくは左結合関数として認識するようにMaximaに伝えます。
narya_iをn項関数として認識するようにMaximaに伝えます。
nary宣言は、nary関数をコールするのとは同じではありません。
declare(foo, nary)だけの効果は、Maxima整理器を
ネストされた式を平坦にするように指示することです。
例えば、foo(x, foo(y, z))をfoo(x, y, z)に整理します。
symmetric, antisymmetric, commutativea_iを対称もしくは反対称関数として認識するようにMaximaに伝えます。
commutativeはsymmetricと同じです。
oddfun, evenfuna_iを偶関数もしくは奇関数として認識するようにMaximaに伝えます。
outativea_i式を最初の引数から定数因子を引き出すことで整理するようにMaximaに伝えます。
a_iが1つ引数を持つ時、 もしリテラル定数や宣言定数なら、因子は定数とみなされます。
a_iが2つ以上の引数を持つ時、 もし2番目の引数がシンボルであり、因子が2番目の引数の制約を受けなければ、 因子は定数とみなされます。
multiplicative代入a_i(x * y * z * ...) -->
a_i(x) * a_i(y) * a_i(z) * ....
によって、a_i式を整理するようにMaximaに伝えます。
代入は、1番目の引数のみで実行されます。
additive代入a_i(x + y + z + ...) -->
a_i(x) + a_i(y) + a_i(z) + ....
によって、a_i式を整理するようにMaximaに伝えます。
代入は、1番目の引数のみで実行されます。
lineara_iをoutativeかつadditiveに宣言することと同値です。
integer, nonintegera_iを整数もしくは非整数変数として認識するようにMaximaに伝えます。
even, odda_iを偶数変数もしくは奇数変数として認識するようにMaximaに伝えます。
rational, irrationala_iを有理変数もしくは非有理実変数として認識するようにMaximaに伝えます。
real, imaginary, complexa_iを実変数もしくは純虚数変数もしくは複素変数として認識するようにMaximaに伝えます。
increasing, decreasinga_iを単調増加関数もしくは単調減少関数として認識するようにMaximaに伝えます。
posfuna_iを正関数として認識するようにMaximaに伝えます。
integervalueda_iを整数値を返す関数として認識するようにMaximaに伝えます。
例:
evfunとevflag宣言。
(%i1) declare (expand, evfun);
(%o1) done
(%i2) (a + b)^3;
3
(%o2) (b + a)
(%i3) (a + b)^3, expand;
3 2 2 3
(%o3) b + 3 a b + 3 a b + a
(%i4) declare (demoivre, evflag);
(%o4) done
(%i5) exp (a + b*%i);
%i b + a
(%o5) %e
(%i6) exp (a + b*%i), demoivre;
a
(%o6) %e (%i sin(b) + cos(b))
bindtest宣言。
(%i1) aa + bb; (%o1) bb + aa (%i2) declare (aa, bindtest); (%o2) done (%i3) aa + bb; aa unbound variable -- an error. Quitting. To debug this try debugmode(true); (%i4) aa : 1234; (%o4) 1234 (%i5) aa + bb; (%o5) bb + 1234
noun宣言。
(%i1) factor (12345678);
2
(%o1) 2 3 47 14593
(%i2) declare (factor, noun);
(%o2) done
(%i3) factor (12345678);
(%o3) factor(12345678)
(%i4) ''%, nouns;
2
(%o4) 2 3 47 14593
constant, scalar, nonscalar, mainvar宣言。
alphabetic宣言。
(%i1) xx\~yy\`\@ : 1729;
(%o1) 1729
(%i2) declare ("~`@", alphabetic);
(%o2) done
(%i3) xx~yy`@ + @yy`xx + `xx@@yy~;
(%o3) `xx@@yy~ + @yy`xx + 1729
(%i4) listofvars (%);
(%o4) [@yy`xx, `xx@@yy~]
feature宣言。
(%i1) declare (FOO, feature); (%o1) done (%i2) declare (x, FOO); (%o2) done (%i3) featurep (x, FOO); (%o3) true
rassociative, lassociative宣言。
nary宣言。
(%i1) H (H (a, b), H (c, H (d, e))); (%o1) H(H(a, b), H(c, H(d, e))) (%i2) declare (H, nary); (%o2) done (%i3) H (H (a, b), H (c, H (d, e))); (%o3) H(a, b, c, d, e)
symmetric, antisymmetric宣言。
(%i1) S (b, a); (%o1) S(b, a) (%i2) declare (S, symmetric); (%o2) done (%i3) S (b, a); (%o3) S(a, b) (%i4) S (a, c, e, d, b); (%o4) S(a, b, c, d, e) (%i5) T (b, a); (%o5) T(b, a) (%i6) declare (T, antisymmetric); (%o6) done (%i7) T (b, a); (%o7) - T(a, b) (%i8) T (a, c, e, d, b); (%o8) T(a, b, c, d, e)
oddfun, evenfun宣言。
(%i1) o (- u) + o (u); (%o1) o(u) + o(- u) (%i2) declare (o, oddfun); (%o2) done (%i3) o (- u) + o (u); (%o3) 0 (%i4) e (- u) - e (u); (%o4) e(- u) - e(u) (%i5) declare (e, evenfun); (%o5) done (%i6) e (- u) - e (u); (%o6) 0
outative宣言。
(%i1) F1 (100 * x); (%o1) F1(100 x) (%i2) declare (F1, outative); (%o2) done (%i3) F1 (100 * x); (%o3) 100 F1(x) (%i4) declare (zz, constant); (%o4) done (%i5) F1 (zz * y); (%o5) zz F1(y)
multiplicative宣言。
(%i1) F2 (a * b * c); (%o1) F2(a b c) (%i2) declare (F2, multiplicative); (%o2) done (%i3) F2 (a * b * c); (%o3) F2(a) F2(b) F2(c)
additive宣言。
(%i1) F3 (a + b + c); (%o1) F3(c + b + a) (%i2) declare (F3, additive); (%o2) done (%i3) F3 (a + b + c); (%o3) F3(c) + F3(b) + F3(a)
linear宣言。
(%i1) 'sum (F(k) + G(k), k, 1, inf);
inf
====
\
(%o1) > (G(k) + F(k))
/
====
k = 1
(%i2) declare (nounify (sum), linear);
(%o2) done
(%i3) 'sum (F(k) + G(k), k, 1, inf);
inf inf
==== ====
\ \
(%o3) > G(k) + > F(k)
/ /
==== ====
k = 1 k = 1
Maximaは、関数や変数のある数学的プロパティを認識します。 それらは「フィーチャー」と呼ばれます。
declare (x, foo)は、
プロパティfooを関数もしくは変数xに与えます。
declare (foo, feature)は、
新しいフィーチャーfooを宣言します。
例えば、
declare ([red, green, blue], feature)は、
3つの新しいフィーチャーred, green, blueを宣言します。
もしxがfooプロパティを持つなら、
述語論理featurep (x, foo)は、trueを返し、
そうでなければ、falseを返します。
インフォリストfeaturesは既知のフィーチャーのリストです。
それらは、
integer noninteger even odd rational irrational real imaginary complex analytic increasing decreasing oddfun evenfun posfun commutative lassociative rassociative symmetric antisymmetric
プラス、任意のユーザー定義フィーチャーです。
featuresは、数学的フィーチャーのリストです。
非数学的で、システム依存のフィーチャーのリストもあります。
statusを参照してください。
iが示すアトム aのユーザープロパティを検索し、
もしaがプロパティ iを持たないなら、 falseを返します。
getは、引数を評価します。
(%i1) put (%e, 'transcendental, 'type);
(%o1) transcendental
(%i2) put (%pi, 'transcendental, 'type)$
(%i3) put (%i, 'algebraic, 'type)$
(%i4) typeof (expr) := block ([q],
if numberp (expr)
then return ('algebraic),
if not atom (expr)
then return (maplist ('typeof, expr)),
q: get (expr, 'type),
if q=false
then errcatch (error(expr,"is not numeric.")) else q)$
(%i5) typeof (2*%e + x*%pi);
x is not numeric.
(%o5) [[transcendental, []], [algebraic, transcendental]]
(%i6) typeof (2*%e + %pi);
(%o6) [transcendental, [algebraic, transcendental]]
コマンドdeclare(a, nonarray)はMaximaに
aが配列でないものと考えるように伝えます。
もしaが添字付き変数なら、この宣言は多重評価を抑制します。
例:
(%i1) a:'b$ b:'c$ c:'d$
(%i4) a[x];
(%o4) d
x
(%i5) declare(a, nonarray);
(%o5) done
(%i6) a[x];
(%o6) a
x
declare (f, posfun)は、
fを正の関数と宣言します。
is (f(x) > 0)はtrueを出力します。
アトムaに関連付けられた指標iの属性を表示します。
aは、アトムのリストもしくはアトムallもありえます。
その場合,与えられたプロパティを持つすべてのアトムに適用します。
例えば、 printprops ([f, g], atvalue)。
printpropsは、表示できないプロパティ、
すなわちatvalue, atomgrad, gradef, matchdeclareのためのものです。
Next: Functions and Variables for Facts, Previous: Introduction to Maximas Database, Up: Maximas Database [Contents][Index]