import numpy as np
import math as m
import matplotlib.pyplot as plt

# Dans les trois fonctions qui suivent, x désigne le rapport t/T, où
# T est la période du signal.

def FourierCreneau(n, x) :
    s = 0
    p = 0
    while 2*p+1 <= n :
        s += 4/(2*p+1)/m.pi*m.sin( (2*p+1)*2*m.pi*x )
        p += 1
    return s

def FourierTriangle(n, x) :
    s = 0
    p = 0
    while 2*p+1 <= n :
        s += (-1)**p*8/(2*p+1)**2/(m.pi)**2*m.sin( (2*p+1)*2*(m.pi)*x )
        p += 1
    return s

def FourierRampe(n, x) :
    s = 1/2
    p = 1
    while p <= n :
        s += -1/p/m.pi*m.sin( p*2*(m.pi)*x )
        p += 1
    return s

n = 100
plt.figure()
X = np.linspace(-1,1,1000)
Y = [ FourierCreneau(n,x) for x in X ]
plt.plot(X,Y)
plt.show()

