sympy mignotte_bound и кольцо - PullRequest
       29

sympy mignotte_bound и кольцо

2 голосов
/ 29 апреля 2020

Я пытаюсь сравнить результаты 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)


Возвращает ошибку при попытке вызвать factor (). Как я могу использовать обе функции? Большое спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Объект poly, который вы создаете с помощью переменной ring, получается как полиномиальный объект, 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)
0 голосов
/ 30 апреля 2020

Мой профессор дал следующий ответ, где он соответственно манипулирует функцией dup_zz_mignotte_bound, импортируя ее сначала из sympy. Это правильное решение, поскольку мы не уничтожаем x с помощью функции ring(). Итак, решение:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...