#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

' Objectif : Sommer des signaux sinusoidaux de fréquenes proches pour former des paquets d ondes'

S0 = 1  # Amplitude 
f0=1 # fréqence du signal moyen en Hz
omega0 = 2*np.pi*f0 # Pulsation de la fréquence centrale ou moyenne
T0 = 1/f0  # Période moyenne du signal
print(T0)

' Définition de s signal sinusoïdal pur '
def ssin(S,omega,t) :
    y = S*np.cos(omega*t)
    return y

NT = 5001 # nombre de dates
t = np.linspace(0,25*T0,NT) # axe des temps

sin1 = ssin(S0,omega0,t)

#plt.plot(t,sin1)
#plt.grid()
#plt.show()

' Somme de N signaux entre omega0- Deltaom/2 et omega0 + Deltaom/2'

Deltaom=omega0/10
N1 = 5# nombre maximal de de composantes

omegamin = omega0 - Deltaom/2
omegamax = omega0 + Deltaom/2
dom = Deltaom/(N1-1)

t1 = np.linspace(-10*T0,25*T0,NT) # axe des temps

'somme de k signaux'
def ssomme(k,t):
    u=0
    for j in range (k) :
        u = u + 1/k*ssin(S0,(omegamin+(j*Deltaom)/(k-1)),t)
    return u

'Tracé pour k signaux entre 1 et 5'
plt.plot(t1,sin1, label = '1 composante')
for k in range (2,N1+1) :
    plt.plot(t1,ssomme(k,t1) + 2.5*(k-1), label = k)
plt.grid()
plt.legend('12345')
plt.show()

'Tracé pour 50 composantes'
N2 = 50

plt.plot(t1,ssomme(N2,t1), label = N2)
plt.grid()
plt.legend()
plt.show()

