sympy - 获取 sympy.factor 中的因子列表

标签 sympy

我正在实现一个算法,在其中我需要得到一个多项式 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/

相关文章:

python - 替换为 sympy 而不评估或简化表达式

julia - 与在 python 中使用 SymPy 相比,SymPy.jl 奇怪的特征值报告

python - 如何用Python(Sympy)实现一个函数,在Wolfram Mathematica中实现与 '_'相同的替换规则?

python - sympy 中的矩阵运算错误

python - Lambdify/Evaluate 给定的参数值

python - 在 Sympy 中求解简单的凸优化

python - 如何在 sympy 中获得数字输出

微分方程的 Python 解析器 : syntax errors with ast and sympify

python - 绘制/转换来自 sympy : Taylor series with matplotlib 的表达式

python - 如何使用 sympy 操作矩阵中的表达式?