Transformée de fourier inverse
Bonjour, j'essaye d'approximer une courbe à l'aide des coefficients de Fourier(une épicycloïde) mais depuis un mois et malgré tous mes efforts, une coquille se trouve dans mon code mais je ne vois pas où.
Important: Je ne connais quasiment pas les transformées/série de fourier, elles sont hors programmes en MPSI.
pour la ifft dans la documentation il est écrit que :
coeffepi[1:n//2] should contain the positive-frequency terms,
coeffepi[n//2 + 1:] should contain the negative-frequency terms, in increasing order starting from the most negative frequency.
Je suis à peu près certain que le problème est que je n'applique pas les séries de fourier correctement.
Si quelqu'un me résout mon problème, je serais très reconnaissant.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
import matplotlib.pyplot as plt
import numpy as np
t=np.linspace(0,2*np.pi,400)
epicycloide=(lambda t:2*np.exp(1j*4*t)+6*np.exp(1j*t)+3*np.cos(2*t-np.pi/3)+3*1j*np.sin(2*t+1/3*2*np.pi))(t)
coeffepi=np.fft.ifft(epicycloide)
def fapprox(t,coeff):
somme1=coeff[0].real
for k in range(1,len(coeff)//2):
somme1+=coeff[k]*np.exp(k*t*1j)
for k in range(len(coeff)//2+1,len(coeff)):
somme1+=coeff[k]*np.exp(k*t*-1j)
return somme1
fonctionappro1=[]
for k in t:
fonctionappro1.append(fapprox(k,coeffepi))
fonctionappro1=np.asarray(fonctionappro1)
plt.plot(epicycloide.real,epicycloide.imag,color='blue')
plt.plot(fonctionappro1.real,fonctionappro1.imag,color='red')
plt.show() |