如何检查复数是否为整数

问题描述 投票:0回答:4

给定数值数值x,您只需执行此float(x).is_integer()即可检查它是否为整数。有没有办法对复数执行此操作?

我正在尝试使用列表推导仅在有限字段(即整数)上采用多项式的整数根。

[r for r in solve(f,domain=FiniteField(p)) if float(r).is_integer()]

但如果solve函数返回复杂的根,则不起作用。

有人知道如何:检查给定的(可能是复数)是否为整数,或者是否知道有SymPy函数来获取整数的有限域上的多项式的根?

python sympy complex-numbers
4个回答
2
投票
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取模时,这些将无济于事。

1
投票

如果要检查虚部是否为零,则可以执行此操作:

float.is_integer(z.real)

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.