SymPy 是否失去了除以多项式的功能



SymPy 的新手,正在尝试除多项式。目前,我正在运行带有SymPy 1.1.1(pip(的Python 3.6.4。浏览他们的文档后,我在他们的 0.6.7 文档页面上找到了以下有用的示例:

另一种选择是同时除以多个多项式。通常,输出不是唯一的,并且取决于除数的阶数和给定的单项式阶数(如果指定(。

>>> f = x*y + y*z + z*x
>>> g1 = x + 1
>>> g2 = 2*y + 1
>>> q, r = div(f, [g1, g2], x, y, z)
>>> q
               z
[y + z, -1/2 + -]
               2
>>> r
      3*z
1/2 - ---
       2

但是,此功能至少在 1.1.1 文档页面中不存在。而且,更重要的是,如果我尝试在 1.1.1 上执行类似的操作,则会出现以下错误:

>>> f = x*y + y*z + z*x
>>> g1 = x + 1
>>> g2 = 2*y + 1
>>> q, r = div(f, [g1, g2], x, y, z)
Traceback (most recent call last):
  File "C:[...]PythonPython36libsite-packagessympypolyspolytools.py", line 4659, in div
    (F, G), opt = parallel_poly_from_expr((f, g), *gens, **args)
  File "C:[...]PythonPython36libsite-packagessympypolyspolytools.py", line 4266, in parallel_poly_from_expr
    return _parallel_poly_from_expr(exprs, opt)
  File "C:[...]PythonPython36libsite-packagessympypolyspolytools.py", line 4312, in _parallel_poly_from_expr
    raise PolificationFailed(opt, origs, exprs, True)
sympy.polys.polyerrors.PolificationFailed: can't construct polynomials from x*y + x*z + y*z, [x + 1, 2*y + 1]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:[...]PythonPython36libsite-packagessympypolyspolytools.py", line 4661, in div
    raise ComputationFailed('div', 2, exc)
sympy.polys.polyerrors.ComputationFailed: div(x*y + x*z + y*z, [x + 1, 2*y + 1]) failed without generators

非常怀疑这个功能已被删除,因为这是一个非常重要的功能,特别是对于仿射变量和格罗布纳基分析,(我正在研究的主题(

有人可以指出我使用 SymPy 的一个工作示例吗?

此功能现在可从函数减少中获得。使用示例中的 f、g1、g2,

>>> reduced(f, [g1, g2], x, y, z)
([y + z, z/2 - 1/2], -3*z/2 + 1/2)

最新更新