给定数值数值x
,您只需执行此float(x).is_integer()
即可检查它是否为整数。有没有办法对复数执行此操作?
我正在尝试使用列表推导仅在有限字段(即整数)上采用多项式的整数根。
[r for r in solve(f,domain=FiniteField(p)) if float(r).is_integer()]
但如果solve函数返回复杂的根,则不起作用。
有人知道如何:检查给定的(可能是复数)是否为整数,或者是否知道有SymPy函数来获取整数的有限域上的多项式的根?
p
这表示>>> from sympy import Symbol, ground_roots
>>> x = Symbol('x')
>>> f = x**5 + 7*x + 1
>>> p = 13
>>> ground_roots(f, modulus=p)
{-5: 1, 4: 2}
取模poly
的根是13
和-5
,且根4
的相乘性是4
。
顺便说一下,在我看来,这里的复数是2
:有限域上的整数多项式的根不能自然地视为复数。在原始帖子中对red herring的调用忽略了solve
参数,只是给出了代数数字(合理地将其[解释为复数),这可能就是您最终着眼于复数。但是,当尝试以素数 domain
取模时,这些将无济于事。
如果要检查虚部是否为零,则可以执行此操作:
float.is_integer(z.real)