파이썬에서 이산 푸리에 변환 (DFT)을 사용해야하고 (역 DFT) 얻은 결과가 약간 이상해 보입니다. 따라서 작은 예제를 시도해 보았습니다. 실수 (수학 또는 코딩 인 경우).파이썬에서의 이산 푸리에 변환
from __future__ import division
import numpy as np
from pylab import *
pi = np.pi
def f(x):
return sin(x)
theta = np.arange(0,2*pi,2*pi/4)
k = np.arange(0,4,1)
x = f(theta)
y = np.fft.fft(x)
derivative = np.fft.ifft(1j*k*y)
print(derivative)
그래서 내가 할 것은 0과 2pi 사이에 4 개 개의 다른 지점에서 죄를 샘플링하고이 숫자와 벡터 X를 만드는 것입니다 : 여기에 코드의 내 작은 버전입니다. 그런 다음 y를 얻기 위해 x의 DFT를 취합니다. 내가 원한 것은 선택된 지점에서 죄의 파생물을 얻는 것입니다. 그래서 이것을하기 위해 k (이 경우 0,1,2,3이 될 파수)와 허수 1j를 곱합니다 이것은 푸리에 (Fourier) 합계에서 각 용어에 대해 e^{ikx} 형태의 무언가가 있기 때문입니다. 그래서 결국 나는 1j의 역 DFT를 취합니다. k y 그리고 나는 죄의 파생물을 얻는다고 생각합니다. 그러나 내가 얻는 것은 이것입니다. 내가 반올림 오류를 무시하고이
[1,0,-1,0]
을 얻을했는데
[ -1.00000000e+00 -6.12323400e-17j -6.12323400e-17 +2.00000000e+00j
1.00000000e+00 +1.83697020e-16j 6.12323400e-17 -2.00000000e+00j]
. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까? 고맙습니다!