在sympy.factor中获取一系列因子

时间:2016-10-25 19:51:32

标签: sympy

我正在实现一个算法,在其中我需要得到因子a多项式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]的括号之间划分它的解析器,但我想知道:是否存在一种更简单的方法?

1 个答案:

答案 0 :(得分:3)

您正在寻找factor_list,它会返回因子的结构化列表。不幸的是,在Python 3中看起来像是bug这个特定的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)。