根据SymPy documentation on solve
,第一个参数可以是:
一个Expr或Poly必须为零,
平等
关系表达式或布尔值
以上一项或多项
但是,有时如果它是solve(equation, x)
或solve([equation], x)
,它确实会产生影响。[equation]
应该是equation
的iterable,对吧?我真的很困惑为什么有时候这只是个问题。
你可以在下面的MCVE中看到我的问题:
from sympy import *
x, y = symbols("x y")
def test_sympy_solve(equation):
print("For given equation", equation, "...")
print("... solve(equation, x) finds", len(solve(equation, x)), "solutions")
print("... solve([equation], x) finds", len(solve([equation], x)), "solutions\n")
test_sympy_solve(Eq((x + 1)**2 - 1, y))
test_sympy_solve(Eq((x + 1)**3 - 1, y))
输出为:
For given equation Eq((x + 1)**2 - 1, y) ...
... solve(equation, x) finds 2 solutions
... solve([equation], x) finds 2 solutions
For given equation Eq((x + 1)**3 - 1, y) ...
... solve(equation, x) finds 3 solutions
... solve([equation], x) finds 0 solutions
Eq((x + 1)**2 - 1, y)
两次都得到两个解,Eq((x + 1)**3 - 1, y)
没有。怎么回事? 最佳答案
可能是虫子。向SymPy的问题跟踪者提交了一个问题:#12326
我会不断更新这个答案。