Учитывая числовое значение x
, вы можете просто сделать это float(x).is_integer()
, чтобы проверить, является ли оно целым числом. Есть ли способ сделать это для комплексных чисел?
Я пытаюсь использовать понимание списка, чтобы брать только целые корни многочлена над конечным полем, которые являются целыми числами.
[r for r in solve(f,domain=FiniteField(p)) if float(r).is_integer()]
но если функция решения возвращает сложные корни, это не работает.
Кто-нибудь знает, как: проверить, является ли заданное (возможно, комплексное число) целым числом, ИЛИ узнать, есть ли функция SymPy для получения корней многочлена над конечным полем, которые являются целыми числами?
domain=FiniteField(p)
дляsolve
, похоже, вообще ничего не делает. - person Mark Dickinson   schedule 25.03.2015[irred for irred in factor(f, modulus=p).as_ordered_factors() if degree(irred) == 1]
. Это дает вам только линейные факторы монического многочленаf
по модулюp
, и из них вы сможете извлечь корни. - person Mark Dickinson   schedule 25.03.2015