関数ev

ev (expr, arg_1, …, arg_n)

引数arg_1, …, arg_nにおける状態の下、式exprを評価。評価の結果(別の式)を返す。

評価手順

  1. 引数より環境の設定。
    simp exprを整理する。falseなら整理を抑制するスイッチsimpの設定に関わらずです。
    noeval evの評価フェイズを抑制する。 (以下のステップ(4)を参照) これは、他のスイッチとの連携時や、exprを再評価せずに再整理をさせる時に有用。
    nouns exprの中の名詞形式 (例えば'integrateや'diffのような未評価関数)を評価する。
    expand 展開する。
    expand (m, n) maxposexとmaxnegexの値をそれぞれmとnに設定して展開する。
    detout exprの中で計算されるどんな逆行列も、逆行列の外側に行列式を保つようにする。
    diff exprの中のすべての微分を実行する。
    derivlist (x, y, z, ...) 指定された変数に関する微分のみを実行する。
    risch exprの中の積分をRischアルゴリズムを使って評価する。特殊なシンボルnounsを使った時には標準の積分ルーチンが呼び出される。
    float 非整数有理数浮動小数点に変換する。
    numer 数値引数が指定された(指数関数を含む)いくつかの数学関数を浮動小数点に評価する。 また、exprの中の numerval宣言された変数は、宣言された値に置き換えられる。 また、floatスイッチをオンにする。
    pred 述語(trueもしくはfalseに評価される式)を評価する。
    eval exprの特別な後評価をする。(ステップ(5)を参照。) evalは複数の場合があり、それぞれのインスタンスについて再評価される。
    評価フラグ(evflagを参照)として宣言されたアトムA exprの評価の最中、Aがtrueにバインドされる。
    V: expression(あるいはV=expression) exprの評価の最中、Vがexpressionの値にバインドされる。
    • もしVがMaximaオプションなら、exprの評価の最中、Vの値にexpressionが使われることに注意。
    • もしevの複数の引数がこのタイプの場合、並列してバインドされる。
    • もしVが非アトムの式なら、バインドではなく、代入が実行される。
    評価関数(evfun参照)として宣言されている場合の関数名F Fが exprに適用される。
    他のどんな関数名(例えば、sum) exprの中にそれらの名前が現れた時それらが動詞であるかのように評価する。 加えて、exprの中で出現する関数(例えばF(x))を、exprの今回の評価の目的のため、 F(X) := expressionをevの引数に与えて、局所的に定義することができる。
    以上で言及しなかったアトム、添字付き変数、または、添字付き式 それを評価して、もしその結果が等式もしくは割り当てであったら、示されたバインドもしくは代入を実行する。 もしその結果がリストなら、リストのメンバが、 evに与えられた追加の引数であるかのように扱う。 これにより solveが返すような、与えられた等式のリスト(例えば、 [X=1,Y=A**2])や等式の名前のリスト(例えば、[%t1, %t2]。ここで %t1, %t2は等式)が使える。

    evの引数は代入等式と評価関数以外はどんな順序で与えてもかまわない。代入等式は左から右へ順に扱われ、評価関数は、例えば、ev (expr, ratsimp, realpart)は realpart (ratsimp (expr))と扱われるように合成される。

    simp, numer, floatスイッチは、ブロックの中でローカルにも、 またMaximaの中でグローバルにも設定でき、その場合リセットされるまで効果を保つ。

    numerと floatスイッチがともに trueでない場合、 もし exprが標準有理式(CRE)なら evが返す式もまたCRE。

  2. step (1)の最中に、引数の中のもしくは引数の値の、等式の左辺に現れる添字なしの変数のリストを作る。 exprの中の変数(添字なし変数や配列関数に関連づけられていない添字付き変数)は、 先のリストに現れるものを除いて、グローバルな値に置き換えられる。 普通、 exprは、ただのラベルだったり (以下の例の %i2のように) %だったりするので、 その場合,このステップは単にラベルされた式を取り出し、 evはその式に対して機能することとなる。
  3. 引数で指定されたどんな代入文もすぐ実行される。
  4. (引数でnoevalが指定されていない限り)結果の式は再評価され 引数に従って整理される。 exprの中のどんな関数コールもその中の変数が評価された後実行されること、 ev(F(x))は F(ev(x))のように振る舞うことに注意。
  5. 引数の中のevalのそれぞれのインスタンスのために step (3)(4)を繰り返す。