#!/usr/bin/python3 # Transformation de Fourier discrète, Cooley-Tukey # Il faut que len(phi) soit une puissance de 2 def fft(phi): # fast Fourier transform N = len(phi) if N == 1: return phi phi_p = phi[::2] # les composantes avec indices pairs phi_i = phi[1::2] # les composantes avec indices impairs Fphi_p = fft(phi_p) # calcul récursif de la TFD Fphi_i = fft(phi_i) racines = np.exp(-2 * np.pi * 1j * np.arange(N//2) / N) c = np.empty((N), dtype=complex) c[:N//2] = Fphi_p + racines * Fphi_i c[N//2:] = Fphi_p - racines * Fphi_i return c