# CALCUL DE LA FUGURE D'INTERFÉRENCE D'UN MICHELSON EN LAME D'AIR # ÉCLAIRÉ PAR UN DOUBLET import numpy as np import matplotlib.pyplot as plt # définition de la zone de calcul x, y x=np.linspace(-0.05,0.05,500) y=np.linspace(-0.05,0.05,500) l=[589e-9,589.6e-9] # Longueur d'onde du doublet (Na) , si on retire une longueur # d'onde le programme calcule pour une raie unique I0=[1,0.8] # intensité de chaque raie e=6.2e-4 # épaisseur lame d'air au voisinage d'une coïncidence # si on décale de 0.15 mm environ, le contraste sera # faible (anticoïncidence) f=1 # focale de L2 la lentille de projection sur l'écran I=np.zeros((500,500)) # tableau où on stokera les différentes intensités lumineuses X,Y=np.meshgrid(x,y)# créé deux tableaux X et Y qui permettent de faire # du calcul vectoriel sur la surface X, Y r2=X**2+Y**2 # calcul de la distance au centre de l'écran pour chaque # points for i in range(len(l)): # pour chaque longueur d'onde I = I+I0[i]*(1+np.cos(4*np.pi*e/l[i]*(1-r2/(2*f**2)))) # on somme les éclairements données par Fresnel # pour chaque longueur d'onde # voir expression démontrée en cours # on trace plt.figure(figsize=(8,8)) plt.contourf(X,Y,I,200,cmap='gray',vmin=0) plt.axis('equal') # pour des axes orthonormés à la même échelle plt.axis([-0.05,0.05,-0.05,0.05]) plt.title("Anneaux d'égale inclinaison, échelle en mètre") plt.show() # pour le tracer de l'éclairement selon un axe de l'écran plt.figure(figsize=(15,7)) plt.plot(x,I[250,:]) # on prend tous les point d'abscisse 250, au milieu plt.axis([-0.05,0.05,0,np.max(I)]) plt.title("Eclairement Michelson en lame d'air, p="+str(round(2*e/l[0],2))+\ " au centre") plt.xlabel("abcisse sur l'écran en m") plt.ylabel("Eclairement") plt.show()