繁体   English   中英

如何检查复数是否为整数

[英]How to check if complex number is a whole number

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

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

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

但是,如果solve函数返回复杂的根,则此方法将无效。

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

ground_roots函数与modulus关键字参数一起使用。 这将返回具有多重性的模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}

也就是说, poly13的根是-54 ,根4具有多重性2

顺便说一句,在我看来,复数在这里就像是一条红鲱鱼 :有限域上的整数多项式的根自然不能视为复数。 在您的原始帖子中,调用solve会忽略domain参数,而只是给出代数( 可以合理地解释为复数)作为结果,这可能就是您最终查看复数的原因。 但是,当试图找到以质数p模的根时,这些方法将无济于事。

float.is_integer(z.real)告诉您实部是否为整数

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

In [17]: a=2 + 2j

In [18]: bool(a.imag)
Out[18]: True

In [19]: b=2 + 0j

In [20]: bool(b.imag)
Out[20]: False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM