【问题标题】:sympy Version 1.1.1: 'solve()' containing 'summation()'sympy 1.1.1 版:“solve()”包含“summation()”
【发布时间】:2017-10-02 07:55:56
【问题描述】:

我将如何求解包含求和表达式的方程,即 类似的东西。

我会考虑使用以下代码片段来解决这个等式:

from sympy import *

i, N, x = symbols("n, N, x")
y       = Function("y")
eq      = summation(x + y(i), (i, 0, N)) 

print solve(eq, [x])

然而,虽然这个等式很简单solve() 不会产生结果。这 预期的解决方案是

【问题讨论】:

  • 我编辑了添加预期结果的问题。

标签: python sympy equation-solving


【解决方案1】:

我相信简单的答案是当前系统太复杂,无法进行所需的替换。

话虽如此,这里的求和扩展可能存在问题。

通过将expand 输出中的Sums 更改为summations,我设法得到了正确答案,请参阅下面的控制台会话。

我认为最后一个可能的原因是,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)]
  • 顺便说一下,解除以N + 1,因为总和包含0和N(因此,0到N是N + 1次)。

【讨论】:

  • 我想,你说到点子上了。 solve() 函数似乎没有使expand() 步骤处于当前的开发状态。当然,你是对的,N+1
  • @Frank-ReneSchäfer 我添加了最后一段,The reason which...。我相信这就是原因,如果是这样,这可能是一个意外错误。
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
相关资源
最近更新 更多