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()