同情 mignotte_bound 和戒指
sympy mignotte_bound and ring
我正在尝试将 dup_zz_mignotte_bound(f, K) 的结果与其他边界进行比较,但我未能在所有边界中使用变量 x当我添加 dup_zz_mignotte_bound。例如:
from sympy.polys import ring, ZZ
from sympy.abc import x
from sympy import factor
R, x = ring('x', ZZ)
poly = x**8 +8*x**7 +47*x**6 +136*x**5 +285*x**4 +171*x**3 - 20*x**2 - 21*x+2
print(factor(poly, x)) # this is an example of a function which is used in other bounds
p = R.dup_zz_mignotte_bound(poly) #Sympys function
print(p)
这 returns 在尝试调用 factor() 时出错。我怎样才能同时使用这两个功能?
非常感谢您的宝贵时间!
你使用环变量创建的poly
对象是一个多项式对象,一个PolyElement
,它不构成sympy
.
中的表达式
factor
但是,需要一个表达式。好消息是您可以轻松地将多项式转换为表达式(并且您不应该发送 x
作为参数):
>>> factor(poly.as_expr())
(x**4 + 4*x**3 + 15*x**2 + 3*x - 2)*(x**4 + 4*x**3 + 16*x**2 + 9*x - 1)
我的教授给出了以下答案,他通过首先从 sympy 导入它来相应地操作函数 dup_zz_mignotte_bound
。这是正确的解决方案,因为我们不使用 ring()
函数破坏 x。所以解决方案是:
from sympy.polys.factortools import dup_zz_mignotte_bound
from sympy.abc import x
from sympy import factor, Poly, ZZ
poly = x**8 +8*x**7 +47*x**6 +136*x**5 +285*x**4 +171*x**3 - 20*x**2 - 21*x+2
print(factor(poly, x), '\n') # this is an example of a function which is used in other bounds
p = dup_zz_mignotte_bound(Poly(poly).all_coeffs(), ZZ) #Sympys function
print(p)
我正在尝试将 dup_zz_mignotte_bound(f, K) 的结果与其他边界进行比较,但我未能在所有边界中使用变量 x当我添加 dup_zz_mignotte_bound。例如:
from sympy.polys import ring, ZZ
from sympy.abc import x
from sympy import factor
R, x = ring('x', ZZ)
poly = x**8 +8*x**7 +47*x**6 +136*x**5 +285*x**4 +171*x**3 - 20*x**2 - 21*x+2
print(factor(poly, x)) # this is an example of a function which is used in other bounds
p = R.dup_zz_mignotte_bound(poly) #Sympys function
print(p)
这 returns 在尝试调用 factor() 时出错。我怎样才能同时使用这两个功能? 非常感谢您的宝贵时间!
你使用环变量创建的poly
对象是一个多项式对象,一个PolyElement
,它不构成sympy
.
factor
但是,需要一个表达式。好消息是您可以轻松地将多项式转换为表达式(并且您不应该发送 x
作为参数):
>>> factor(poly.as_expr())
(x**4 + 4*x**3 + 15*x**2 + 3*x - 2)*(x**4 + 4*x**3 + 16*x**2 + 9*x - 1)
我的教授给出了以下答案,他通过首先从 sympy 导入它来相应地操作函数 dup_zz_mignotte_bound
。这是正确的解决方案,因为我们不使用 ring()
函数破坏 x。所以解决方案是:
from sympy.polys.factortools import dup_zz_mignotte_bound
from sympy.abc import x
from sympy import factor, Poly, ZZ
poly = x**8 +8*x**7 +47*x**6 +136*x**5 +285*x**4 +171*x**3 - 20*x**2 - 21*x+2
print(factor(poly, x), '\n') # this is an example of a function which is used in other bounds
p = dup_zz_mignotte_bound(Poly(poly).all_coeffs(), ZZ) #Sympys function
print(p)