# Exercice 22 page 54 - question f

import numpy as np
import matplotlib.pyplot as plt

# Constantes

A = 1                      # Amplitude 
w = 4.5                    # Pulsation 
delta = 0.25               # Distance caractéristique
c = 1                      # Célérité

# Expression du paquet d'ondes

def paquet(x,t):
    return 3*A*np.cos(w*t-k(w)*x) + A*np.cos(3*w*t-k(3*w)*x)

# Relation de dispersion : k² = w²/c² - 1/delta²

def k(w):
    return np.sqrt(w**2/c**2-1/delta**2)    

# Plage d'abscisses pour les tracés
  
x=np.linspace(0,30,1000)

# Tracé du paquet d'ondes à t = 0

plt.axis([0,30,-4.5,4.5])
plt.xlabel('abscisse x')
plt.ylabel('s(x,0)',rotation=0)  
plt.title("Paquet d'ondes s(x,0)")
plt.plot(x,paquet(x,0),'b')
plt.grid()
plt.show()
plt.pause(5)   

# Propagation du paquet d'ondes

for t in np.arange(0,30,0.1):
    
    plt.clf()                         # Effacement de l'image précédente
    plt.axis([0,30,-4.5,4.5])
    plt.xlabel('abscisse x')
    plt.ylabel('s(x,t)',rotation=0)
    plt.title("Paquet d'ondes s(x,t)")  
    plt.plot(x,paquet(x,t),'b')
    plt.grid()
    plt.pause(0.01)