Page inachevée, encore en travaux...
Intensité et franges créées par N fentes de largeur e distantes de a éclairées par une source monochromatique de longueur d'onde λ.
xxxxxxxxxx
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cc
courbes = ['Interférences N fentes', 'Diffraction 1 fente', 'Interférences et diffraction']
layout=[['Intensite','Nfentes'],['e'],['a'],['l'],['xmini','xmax'],['normalise','ymaxi']]) (
def _(Intensite = selector(courbes,label="Intensité"),
e=slider(0.05,2,0.05,0.2,label="Largeur fente e"), a=slider(0.1,2,0.1,1,label="Ecartement fentes a"),
Nfentes = input_box([2],label="N fentes",type=list),
l=slider(440,760,20,600,label="Longueur d'onde"),
xmini = checkbox(False,label="p_min=0"), xmax=slider(1,30,1,5,label="p_max"),
ymaxi = input_box('Imax',label="Imax", type=str), normalise = checkbox(False,label="I/Imax")): #auto_update=false
plt.clf()
fig = plt.figure()
ax1 = plt.subplot2grid((4, 1), (0, 0))
ax2 = plt.subplot2grid((4, 1), (1, 0), rowspan=3)
#ax2 = fig.add_axes([0, 1000, 1000, 0]) ; ax2.set_axis_off()
if xmini: xmin = 0
else: xmin = -xmax
if ymaxi != 'Imax' and ymaxi != '': ax2.set_ylim(top=float(ymaxi))
x = np.linspace(xmin, xmax, 1000)
Xm,Ym = np.meshgrid(x,x)
#plt.title('Interférences à N fentes')
r = a/e ; X =x ; X1=Xm #X = x*a/l*10**3 ; X1 = Xm*a/l*10**3
for N in Nfentes:
Imax = (e*N)**2
Id = (np.sinc(X/r))**2 ; Id1 = (np.sinc(X1/r))**2 ;
IN = (e*N*np.sinc(N*X)/np.sinc(X))**2 ; IN1 = (e*N*np.sinc(N*X1)/np.sinc(X1))**2
if normalise:
IN =IN/Imax
Imax = 1
ax2.set_ylabel('I(p)/Imax')
else:
ax2.set_ylabel('I(p)/Io')
if Intensite !='Diffraction 1 fente': ax2.annotate('Imax = '+str(np.round(Imax,2)),[0,Imax])
if Intensite=='Interférences N fentes':
ax2.plot(x, IN, label=str(N)+' fentes')
ax1.imshow(IN1,cmap=cc.gray, aspect='auto')
elif Intensite=='Interférences et diffraction':
ax2.plot(x, Id*IN, label=str(N)+' fentes')
ax2.plot(x, Id*Imax, label=' Diffraction 1 fente', color='red', linewidth=1, linestyle='--')
ax1.imshow(Id1*IN1,cmap=cc.gray, aspect='auto')
if Intensite=='Diffraction 1 fente':
ax2.plot(x, Id, label=' Diffraction 1 fente', color='red')
ax1.imshow(Id1,cmap=cc.gray, aspect='auto')
ax2.set_xlabel('p')
ax2.set_xticks(list(range(xmin, xmax+1,1)))
if xmini:
ax2.legend(loc='upper right')
else:
ax2.legend(loc='upper left')
plt.tight_layout()
plt.show()