以下两段最大代码应相同:
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.在第二种情况下,它不会简化并且为i = 1到2留下x [i]的符号求和。
为什么maxima无法识别第二个表达式与第一个表达式相同?
如果没有对答案进行硬编码(如第一段代码中所述),在评估稍后指定上限的总和时,如何使用索引变量完全评估总和?
答案 0 :(得分:1)
sum在noun form中(参见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