因此,我正在尝试编写一个算法 croot(k, n),它返回 n == n 的第 k 个统一根。我得到的答案大多是正确的,但它给了我非常奇怪的表示,对于某些数字来说似乎是错误的。这是一个例子。
import cmath
def croot(k, n):
if n<=0:
return None
return cmath.exp((2 * cmath.pi * 1j * k) / n)
for k in range(8):
print croot(k, 8)
输出是:
(1+0j)
(0.70710...+0.70710...j)
(6.12323399574e-17+1j)
哇哇哇。所以当 k = 2 和 n = 8 时的根是错误的,因为它应该只是 i,它可以表示为 1j、j 或 1.00000j 等。有人可以帮我吗?我这样做是因为我正在尝试编写 FFT 算法。我对复数和 Python 不是很有经验,所以我很可能犯了一个简单的错误。
谢谢,
如果你们需要任何其他信息,请询问。