我相信简单的答案是,对于当前系统来说进行所需的替换过于复杂。
话虽如此,在这里可能存在求和扩展的问题。
我成功地通过将expand
输出中的Sum
更改为summation
来获得正确的答案,请参见下面的控制台会话。
我认为最后一个可行的原因是,summation(x,(i,0,N))
计算为x*(N + 1)
(summation
函数的影响),而由扩展返回的Sum(x,(i,0,N))
仍然是一个简单的Sum
对象,在solve
函数内部扩展后没有对其进行替换。
>>> from sympy import *
>>>
>>> i, N, x, y = symbols("i, N, x, y")
>>> eq = summation(x + y(i), (i, 0, N))
>>>
>>> expand(eq)
Sum(x, (i, 0, N)) + Sum(y(i), (i, 0, N))
>>>
>>> solve(summation(x, (i, 0, N)) + summation(y(i), (i, 0, N)), x)
[Sum(-y(i), (i, 0, N))/(N + 1)]
solve()
函数似乎没有执行expand()
步骤。当然,你关于N+1
也是正确的。 - Frank-Rene SchäferThe reason which...
。我认为这就是原因,如果是这样的话,那么这可能是一个意外的错误。 - Uriel