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
は以下のプロパティを認識します:
evfun
ev
のフラグ引数としてa_iが現れた時
a_iで名付けられた関数を適用するように
ev
に伝えます。
evfun
を参照してください。
evflag
ev
のフラグ引数としてa_iが現れた時
ev
の実行中a_iがtrue
にバインドされるように
ev
に伝えます。
evflag
を参照してください。
bindtest
a_iがバインドされていない状態に評価された時、 Maximaにエラーをトリガーするように伝えます。
noun
a_iを名詞としてパースするようにMaximaに伝えます。
この効果は、a_iのインスタンスを'a_i
やnounify(a_i)
で置き換えることです。どちらに置き換えるかは文脈に依存します。
constant
a_iをシンボル定数と考えるようにMaximaに伝えます。
scalar
a_iをスカラー変数と考えるようにMaximaに伝えます。
nonscalar
a_iを非スカラー変数と考えるようにMaximaに伝えます。 普通の使い方は、変数をシンボルベクトルや行列として宣言することです。
nonarray
Maximaにa_iを配列でないものと考えるように伝えます。 この宣言は添字付き変数名の多重評価を抑制します。
mainvar
a_iを「主変数」と考えるようにMaximaに伝えます。
ordergreatp
で決定されるように、
Maximaの式の標準順序では、主変数は他のすべての定数や変数に続きます。
alphabetic
(文字列の)a_iの中の文字すべてをアルファベット文字として認識するように Maximaに伝えます。
feature
a_iをfeature名として認識するようにMaximaに伝えます。 他のアトムは、a_iプロパティを持つように定義されます。
rassociative
, lassociative
a_iを右結合、もしくは左結合関数として認識するようにMaximaに伝えます。
nary
a_iをn項関数として認識するようにMaximaに伝えます。
nary
宣言は、nary
関数をコールするのとは同じではありません。
declare(foo, nary)
だけの効果は、Maxima整理器を
ネストされた式を平坦にするように指示することです。
例えば、foo(x, foo(y, z))
をfoo(x, y, z)
に整理します。
symmetric
, antisymmetric
, commutative
a_iを対称もしくは反対称関数として認識するようにMaximaに伝えます。
commutative
はsymmetric
と同じです。
oddfun
, evenfun
a_iを偶関数もしくは奇関数として認識するようにMaximaに伝えます。
outative
a_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番目の引数のみで実行されます。
linear
a_iをoutative
かつadditive
に宣言することと同値です。
integer
, noninteger
a_iを整数もしくは非整数変数として認識するようにMaximaに伝えます。
even
, odd
a_iを偶数変数もしくは奇数変数として認識するようにMaximaに伝えます。
rational
, irrational
a_iを有理変数もしくは非有理実変数として認識するようにMaximaに伝えます。
real
, imaginary
, complex
a_iを実変数もしくは純虚数変数もしくは複素変数として認識するようにMaximaに伝えます。
increasing
, decreasing
a_iを単調増加関数もしくは単調減少関数として認識するようにMaximaに伝えます。
posfun
a_iを正関数として認識するようにMaximaに伝えます。
integervalued
a_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]