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