Maxima计算机代数系统:当使用ev()指定上限时,符号上限求和不会简化。

4
以下两段maxima代码应该是等效的:
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无法识别第二个表达式与第一个表达式相同?
除了硬编码答案(如第一段代码中所示)之外,当计算上限稍后指定的求和时,我该如何让maxima完全评估带有索引变量的求和?

有一个社区正在提议中,也许你想加入 - Pankaj Sejwal
谢谢,但我认为这不是一个好主意。社区太小,流量太低。下载量并不能很好地衡量用户活跃度。我不会惊讶如果大多数用户使用Maxima的程度相对较浅(解决一个玩具方程,然后长时间不用或卸载它)。 - daj
这是一个完整的计算机代数系统,我们可以随时探索更多并随着时间的推移不断发展它。但是在一个地方分享和学习会很好。我已经使用过Mathematica,而Maxima几乎可以做到Mathematica所能做的一切。 - Pankaj Sejwal
我同意,我是Maxima的粉丝。但我认为它的社区规模不够大,无法独立于StackOverflow支撑一个问答平台。 - daj
首先让我们试一试,我的统计数据有误,总下载量为3,019,298。来这里,发几个问题并点赞几个。 - Pankaj Sejwal
1个回答

2
总和以 名词形式 出现(在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

我发现simplify_sum()或simpsum:true也可以使用,我猜这就是它在幕后所做的。 - daj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接