3

以下两段最大值代码应该是等价的:

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。在第二种情况下,它不会简化并且给我留下 x[i] 的符号求和,因为 i = 1 到 2。

为什么 maxima 无法将第二个表达式识别为与第一个相同?

没有对答案进行硬编码(如第一段代码),在评估稍后指定上限的总和时,如何获得最大值以完全评估索引变量的总和?

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 回答