# Capacité 4 : PROPAGATION D'UN PAQUET D'ONDES ###################################################################################### # 2) CAS 1 : PROPAGATION D'UN PAQUETS D'ONDES GAUSSIEN DANS UN MILIEU DISPERSIF # Relation de dispersion développée à l'ordre 1 en w - w0 import numpy as np import matplotlib.pyplot as plt # Spectre en pulsation w du paquet d'ondes gaussien def A(w): return np.exp(-(w-w0)**2/(2*sigma**2)) wmin = 0 # Pulsation minimale wmax = 10 # Pulsation maximale w0 = 5 # Pulsation centrale sigma = 0.35 # Paramètre caractéristique de la largeur du spectre N = 1000 # Choix du nombre de valeurs de w w = np.linspace(wmin,wmax,N) # Plage de variation de w plt.plot(w,A(w)) plt.xlabel('pulsation w') plt.ylabel('amplitude',rotation=0) plt.title("Spectre du paquet d'ondes") plt.grid() plt.show() plt.pause(5) # Temps d'affichage de la courbe plt.clf() # Effacement de la courbe # Expression du paquet d'ondes def paquet(x,t): sum = 0 for w in np.linspace(wmin,wmax,N): sum = sum + A(w)*np.cos(w*t-k(w)*x) return sum # Relation de dispersion développée à l'odre 1 au voisinage de w0 def k(w): return k0 + dk0*(w-w0) # k(w) = k(w0) + (dk/dw)(w0)(w-w0) k0 = 5 # k(w0) dk0 = 1.2 # (dk/dw)(w0) # Enveloppe du paquet d'ondes def env(x,t): sum=0 for w in np.linspace(wmin,wmax,N): sum=sum+A(w)*np.cos((w-w0)*(t-dk0*x)) return sum # Plage d'abscisses pour les tracés x=np.linspace(-10,50,1000) # Tracé du paquet d'ondes à t = 0 plt.axis([-10,50,-100,100]) 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.plot(x,env(x,0),'r',linewidth=0.5) plt.plot(x,-env(x,0),'r',linewidth=0.5) plt.grid() plt.show() plt.pause(5) # Propagation du paquet d'ondes vphi = w0/k0 # Vitesse de phase vphi = w0/k(w0) vg = 1/dk0 # Vitesse de groupe vg = (dw/dk)(w0) for t in np.arange(0,30,0.25): # t varie de 0 à 30 avec un pas de 0.25 plt.clf() # Effacement de l'image précédente plt.axis([-10,50,-100,100]) 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.plot(x,env(x,t),'r',linewidth=0.5) plt.plot(x,-env(x,t),'r',linewidth=0.5) plt.plot(vphi*t,paquet(vphi*t,t),'ob') # Tracé du point signal situé en x = 0 à t = 0 plt.plot(vg*t,env(vg*t,t),'or') # Tracé du point enveloppe situé en x = 0 à t = 0 plt.grid() plt.pause(0.01) #######################################################################################