使用 SymPy 的二次方程

Quadratic equation with SymPy

当我尝试使用参数 a:

求解二次方程时,SymPy 中 solve 命令的行为非常奇怪
from sympy import *
x, a = symbols("x a")
eq = Eq(0, (4 - 4*x + x**2)/(4*a**2))
print(solve(eq, x))
print(solve(simplify(eq), x))

输出:

[2 - sqrt(a**2 - 1)/a, 2 + sqrt(a**2 - 1)/a]
[2]

只是 solve 给出了两个 (!) 解决方案,这取决于 a。简化后它只给出解 x=2,这是正确的。发生什么了?命令 solveset 工作正常,但我对使用 solve 命令感兴趣。我的 SymPy 版本是 1.9.

这是 as_numer_denom 中的一个错误,它得到一个以 Add 开头但本质上是 Mul 的表达式。正在更正 this PR.