3

次の 2 つのマキシマ コードは同等である必要があります。

sum(x[i], i, 1, 2);
ev(%, x[1] = 5, x[2] = 3);

と:

sum(x[i], i, 1, n);
ev(%, n = 2, x[1] = 5, x[2] = 3);

最初のケースでは、maxima は式を 8 に評価することを知っています。2 番目のケースでは、単純化されず、i = 1 から 2 に対する x[i] の記号的な合計が残されます。

maxima が 2 番目の式を最初の式と同じであると認識できないのはなぜですか?

(コードの最初の部分のように) 答えをハードコーディングする以外に、上限が後で指定される合計を評価するときに、インデックス付き変数を使用して合計を完全に評価するにはどうすればよいですか?

4

1 に答える 1

1

sum は名詞形です(Lisp 式の先頭の % を参照してください)。

(%i76) expr: sum(x[i], i, 1, n);
                                    n
                                   ====
                                   \
(%o76)                              >    x
                                   /      i
                                   ====
                                   i = 1
(%i77) :lisp $expr

((%SUM SIMP) (($X SIMP ARRAY) $I) $I 1 $N)

evに名詞を評価するように指示する必要があります

(%i77) ev(expr, n = 2, x[1] = 5, x[2] = 3, nouns);
(%o77)                              x  + x
                                     2    1

追加の事後評価をリクエストする

(%i78) ev(expr, n = 2, x[1] = 5, x[2] = 3, nouns, eval);
(%o78)                                 8
于 2014-02-18T14:23:55.953 に答える