したがって、n == n で 1 の k 乗根を返すアルゴリズム croot(k, n) を作成しようとしています。私はほとんど正しい答えを得ていますが、特定の数値では間違っているように見える本当に奇妙な表現を与えています。ここに例があります。
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 のときのルートは間違っています。1j、j、または 1.00000j などのように表される i である必要があるためです。これは、FFT アルゴリズムを作成しようとしているからです。私は複素数と Python の経験があまりないので、単純な間違いを犯している可能性があります。
ありがとう、
追加情報が必要な場合は、お尋ねください。