sympy 版本 1.1.1:'solve()' 包含 'summation()'
sympy Version 1.1.1: 'solve()' containing 'summation()'
我将如何求解包含求和表达式的方程式,即
类似的东西。
我会考虑使用以下代码片段来求解这个等式:
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()
并没有产生结果。这
预期的解决方案是
我认为简单的答案是当前系统太复杂,无法进行所需的替换。
话虽如此,这里求和的扩展可能存在问题。
我设法通过将 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)]
- 顺便说一下,解决方案除以 N + 1,因为求和包含 0 和 N(因此,0 到N是N+1次)。
我将如何求解包含求和表达式的方程式,即 类似的东西。
我会考虑使用以下代码片段来求解这个等式:
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()
并没有产生结果。这
预期的解决方案是
我认为简单的答案是当前系统太复杂,无法进行所需的替换。
话虽如此,这里求和的扩展可能存在问题。
我设法通过将 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)]
- 顺便说一下,解决方案除以 N + 1,因为求和包含 0 和 N(因此,0 到N是N+1次)。