我正在实现一个算法,在其中我需要得到一个多项式 f(x) = p(x)q(x) 的因子,其中 p 和 q 互为质数。当然,我可以使用 sympy.factor,但我想构建一个函数,它可能会在 sympy.factor 结果中返回一个因子列表。
例如,
x = sympy.Symbol('x')
y = sympy.Symbol('y')
g = sympy.Poly(y**4 + x*y**3 + y**2 + x*y, y)
sympy.factor(g)
抛出
y*(x + y)*(y**2 + 1)
所以也许我可以构建一个解析器来解释字符串并将其划分在呈现列表 [y, x+y, y * * 2 + 1] 的括号之间,但我想知道:是否存在更简单的方法?
最佳答案
您正在寻找 factor_list
,它返回一个结构化的因子列表。不幸的是,看起来有一个 bug在 Python 3 中使用这个特定的 polynomail。在 Python 2 中,我得到
In [1]: factor_list(y**4 + x*y**3 + y**2 + x*y, y)
Out[1]:
⎛ ⎡ ⎛ 2 ⎞⎤⎞
⎝1, ⎣(y, 1), (x + y, 1), ⎝y + 1, 1⎠⎦⎠
第一个元素是常数系数。第二个是 (factor, power)
对列表(最终表达式等于 constant * factor**power * ... * factor**power
)。
关于sympy - 获取 sympy.factor 中的因子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40248557/