import numpy as np
import matplotlib.pyplot as plt

Nx=1000;Nw=200

x1=np.linspace(-5,30,Nx)
w=np.linspace(15,35,Nw)
w0=25;dw=w0/8;

def amp(w):
    return np.exp(-((w-w0)/dw)**2/2) # spectre gaussien

def k(w):
    return np.sqrt(w**2-15**2) #equation de dispersion
    
def s(x,t):
    somme=0
    i=0
    while i<Nw:
        somme=somme+amp(w[i])*np.cos(w[i]*t-k(w[i])*x)
        i=i+1 
    return somme

plt.plot(x1, s(x1,1))
plt.plot(x1, s(x1,10))
plt.plot(x1, s(x1,20))
plt.show()