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 : Sélectionner tout - Visualiser dans une fenêtre à part
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()
Partager