#!/usr/bin/env python3
import numpy as np
# Données
b = ......        # en mètre
tol_b = 1e-6      # tolérance pour la distance entre les fentes en m

D = 1.50          # Distance bifentes écran en m
tol_D = 0.01      # en m (tolérance sur la distance D)

i = ......        # interfrange mesurée en m
u_i = .......     # incertitude-type pour i en m

# Simulation Monte Carlo
N = 100_000

# Lois de probabilité
b_sim = np.random.uniform(b - tol_b, b + tol_b, N)
D_sim = np.random.uniform(D - tol_D, D + tol_D, N)
i_sim = np.random.uniform(i - u_i*np.sqrt(3), i + u_i*np.sqrt(3), N)
# Calcul de la longueur d'onde
lambda_simul = i_sim * b_sim / D_sim
# Incertitude type de la longueur d'onde
u_lambda = np.std(lambda_simul, ddof=1)

# Affichage des résultats en nm
print(f"λ_inter = {i*b/D*1e9:.0f} nm avec une incertitude-type {u_lambda*1e9:.0f} nm ")
