from pylab import *

from matplotlib.animation import FuncAnimation
Nx=1000;Nt=Nx/5;Nw=Nx/5
t=linspace(0,30,Nt)
x=linspace(-5,30,Nx)
w=linspace(15,35,Nw)
w0=25;dw=w0/8;c=exp(-((w-w0)/dw)**2/2) # spectre gaussien

def k(w):return sqrt(w**2-15**2) #equation de dispersion
def s(t):return sum(c*cos(w*t-outer(x,k(w))),axis=1) # onde

frames=array([s(ti) for ti in t])
line = plot(x,frames[::Nt/4].T)[0] # scène initiale

grid(); show()