【发布时间】:2019-02-06 12:17:50
【问题描述】:
我正在尝试找到一种在 Python 中执行 (w+xi) % (y+zi) 的方法。
我试过cmath,但它似乎不支持这个。我已经确定它在数学上是可能的,并尝试对其进行编程,但是它没有用。代码如下,我发现问题是在除数后的某个时候需要四舍五入,但在其他时候这会产生不正确的结果。
def ComplexModulo(a,b):
x = a/b
x = round(x.real) + (round(x.imag)*1j)
z = x*b
return a-z
我需要一个更好的方法来解决这个问题,因为现在如果我这样做 (8+2j)%(2+1j) 我应该得到 (1+1j),但我会得到 (-1+0j)。我还尝试将round 更改为int,以及不同的组合,虽然它在某些情况下有效,但在其他情况下却失败了。
【问题讨论】:
-
它对复数的工作方式不同,即使如此,实部也不应该是负1。这解释了我要做什么quora.com/How-do-I-find-Modulo-of-complex-numbers
-
根据WolframAlpha 你得到正确的输出。
-
这在某处真的有用吗?值得将此添加到 Python 中吗?
-
是的,它很有用,值得添加,虽然它的用途有些晦涩,但鉴于它的简单性,我认为它值得。
标签: python complex-numbers modular-arithmetic