给定一个值数值 x
,你可以这样做 float(x).is_integer()
来检查它是否是一个整数 . 对复杂的数字有没有办法做到这一点?
我正在尝试使用列表推导来仅获取有限域上的多项式的整数根,这些整数是整数 .
[r for r in solve(f,domain=FiniteField(p)) if float(r).is_integer()]
但如果solve函数返回复杂的根,则不起作用 .
有谁知道如何:检查一个给定的(可能是复数)是否是一个整数或者知道是否有一个SymPy函数来获取有限域上的多项式的根是整数?
3 回答
将ground_roots函数与
modulus
关键字参数一起使用 . 这将返回模数为p
的根,具有多重性 . 这是一个例子:这表示
poly
modulo13
的根是-5
和4
,根4
具有多重性2
.顺便说一下,它看起来好像复数是一个red herring:有限域上的积分多项式的根本身不能被视为复数 . 原始帖子中对
solve
的调用忽略了domain
参数,只是将代数数字(可以合理地解释为复数)作为结果,这可能就是你最终查看复数的原因 . 但是当试图找到模数为p
的根时,这些都无济于事 .float.is_integer(z.real)
告诉您实部是否为整数如果要检查虚部是否为零,可以执行以下操作: