[英]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}
也就是说, poly
模13
的根是-5
和4
,根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.