Functions and Variables for Properties (Maxima 5.46.0 Manual)

Next: Functions and Variables for Facts, Previous: Introduction to Maximas Database, Up: Maximas Database [Contents][Index]

### 11.2 Functions and Variables for Properties

関数: declare (a_1, p_1, a_2, p_2, …) ¶

  アトムやアトムのリスト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が１つ引数を持つ時、 もしリテラル定数や宣言定数なら、因子は定数とみなされます。

    a_iが２つ以上の引数を持つ時、 もし２番目の引数がシンボルであり、因子が２番目の引数の制約を受けなければ、 因子は定数とみなされます。

  `multiplicative`

    代入`a_i(x * y * z * ...)` `-->` `a_i(x) * a_i(y) * a_i(z) * ...`. によって、a_i式を整理するようにMaximaに伝えます。 代入は、１番目の引数のみで実行されます。

  `additive`

    代入`a_i(x + y + z + ...)` `-->` `a_i(x) + a_i(y) + a_i(z) + ...`. によって、a_i式を整理するようにMaximaに伝えます。 代入は、１番目の引数のみで実行されます。

  `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

  Declarations and inferences ·

宣言: features ¶

  Maximaは、関数や変数のある数学的プロパティを認識します。 それらは「フィーチャー」と呼ばれます。

  `declare (x, foo)`は、 プロパティfooを関数もしくは変数xに与えます。

  `declare (foo, feature)`は、 新しいフィーチャーfooを宣言します。 例えば、 `declare ([red, green, blue], feature)`は、 ３つの新しいフィーチャー`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`を参照してください。

  Declarations and inferences ·

関数: get (a, i) ¶

  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]]

  Declarations and inferences ·

プロパティ: nonarray ¶

  コマンド`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

  Expressions ·

宣言: posfun ¶

  `declare (f, posfun)`は、 `f`を正の関数と宣言します。 `is (f(x) > 0)`は`true`を出力します。

  Declarations and inferences · Operators ·

関数: printprops (a, i) ¶
関数: printprops ([a_1, ..., a_n], i) ¶
関数: printprops (all, i) ¶

  アトムaに関連付けられた指標iの属性を表示します。 aは、アトムのリストもしくはアトム`all`もありえます。 その場合，与えられたプロパティを持つすべてのアトムに適用します。 例えば、 `printprops ([f, g], atvalue)`。 `printprops`は、表示できないプロパティ、 すなわち`atvalue`, `atomgrad`, `gradef`, `matchdeclare`のためのものです。

  Declarations and inferences · Display functions ·

Next: Functions and Variables for Facts, Previous: Introduction to Maximas Database, Up: Maximas Database [Contents][Index]