<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import numpy as np
import scipy.special as sc
import matplotlib.pyplot as plt
import scipy.optimize as spo
from matplotlib.widgets import Slider, Button, RadioButtons
from matplotlib.colors import LogNorm
from mpl_toolkits import mplot3d
from scipy.odr import ODR, Model, Data, RealData

x_beg = 0

#Fonction thÃ©orique de l'Ã©clairement
def E(beta, x):
    x_beg,k = beta[0],beta[1]
    X = (x - x_beg)/k
    C, S = sc.fresnel(X)
    return 0.5 * ((0.5 + C) ** 2 + (0.5 + S) ** 2)

#Importation des donnÃ©es
res_exp=np.loadtxt(r"C:\Users\gluca\OneDrive\Documents\ENS\Agregation\Oral\Montage\MP09_Diffraction\Donne_fresnel\Values38.txt",skiprows=1)
px,ng=res_exp.T
#On garde les points qui nous intÃ©resse
pxf=px[1:]
ngf=ng[1:]

lambda0=632e-9
x_pix=6e-6
D=6.5e-2
x = pxf*x_pix
xspace = np.linspace(x[0],x[-1],10000)
yexp = ngf/np.max(ngf)
beta = [x_beg,np.sqrt(lambda0*D/2)]
Y = E(beta, xspace)
yfit = Y/np.max(Y)

fig, ax = plt.subplots()
lines,=plt.plot(xspace*100, yfit, label="ThÃ©orie")
plt.plot(x*100, yexp, label="ExpÃ©rience", marker=".")
plt.xlabel("x (cm)")
plt.ylabel("I")
plt.legend()

ax_origin=plt.axes([0.25, 0.10, 0.65, 0.03])
ax_D=plt.axes([0.25, 0.15, 0.65, 0.03])
resetax=plt.axes([0.20, 0.05, 0.04, 0.03])
plt.subplots_adjust(bottom=0.25)
button=Button(resetax, "Reset")
sorigin=Slider(ax_origin, "Origine (cm)",-0.1, 0.1, valinit=0)
sD=Slider(ax_D, "D (cm)",  0, 70, valinit=6.5)
#
def update(val):
    x_beg=sorigin.val*0.01
    D=sD.val*0.01
    k=np.sqrt(lambda0*D/2)
    beta = [x_beg,k]
    Y1=E(beta, xspace)
    Yfit=Y1/np.max(Y1)
    lines.set_ydata(Yfit)
    fig.canvas.draw_idle()

def reset(event):
    sD.reset()
    sorigin.reset()

sD.on_changed(update)
sorigin.on_changed(update)
button.on_clicked(reset)

plt.show()</pre></body></html>