1

我需要对一个复数进行地板除法,但似乎在 Python 3.x 中删除了复数的地板除法。

有什么解决方法吗?任何想法,将不胜感激。

例如。

(2 + 3i) // (complex anything) will throw an error.
4

3 回答 3

3

python 3 中的复数定义为虚部j,而不是i

你是对的,在 Python 3 中你不能再计算复数的底除法,但是如果你需要一个解决方法,你需要指定你希望它的行为方式。

在任何情况下,您都需要实现一个继承自 的新类complex,并覆盖该__floordiv__方法

于 2017-05-03T10:00:15.967 回答
1

除非(anything)是 的倍数(2+3j),否则您的答案也将很复杂,因此地板除法没有明确定义。您可以通过乘以实现除法(anything).conjugate / (abs(anything)**2)

于 2017-05-03T10:13:11.480 回答
0

我刚刚找到了 mpmath 库。它有大量的工具,包括用于复数的 floor 和 mod。看来它实际上包含在 SymPy 中。

于 2017-05-03T10:11:06.260 回答