# TP 8 - RESEAUX - Programme 3 : mesure du pas a d'un CD (questions 15 et 16)
##################################################################################
# Importation des bibliotèques

import numpy as np
import matplotlib.pyplot as plt
import numpy.random as rd
##################################################################################
# Entrées des valeurs expérimentales

Lambda = 633e-9                # Longueur d'onde laser rouge

alpha0_min_degré =                                                   # Nombre de degrés mesurés pour alpha0 minimum                     A COMPLETER
alpha0_min_minute =                                                  # Nombre de minutes mesurées pour alpha0 minimum                   A COMPLETER 
alpha0_min =                                                         # alpha0 minimum converti en radian                                A COMPLETER

alpha0_max_degré =                                                   # Nombre de degrés mesurés pour alpha0 maximum                     A COMPLETER
alpha0_max_minute =                                                  # Nombre de minutes mesurées pour alpha0 maximum                   A COMPLETER
alpha0_max =                                                         # alpha0 maximum converti en radian                                A COMPLETER

alpha0 = (alpha0_min + alpha0_max)/2                                 # alpha0 moyen en radian     
deltaalpha0 = (alpha0_max - alpha0_min)/2                            # demi-largeur de l'intervalle de variation de alpha0 en radian

alpha1_min_degré =                                                   # Nombre de degrés mesurés pour alpha1 minimum                     A COMPLETER
alpha1_min_minute =                                                  # Nombre de minutes mesurées pour alpha1 minimum                   A COMPLETER
alpha1_min =                                                         # alpha1 minimum converti en radian                                A COMPLETER

alpha1_max_degré =                                                   # Nombre de degrés mesurés pour alpha1 maximum                     A COMPLETER
alpha1_max_minute =                                                  # Nombre de minutes mesurées pour alpha1 maximum                   A COMPLETER
alpha1_max =                                                         # alpha1 maximum converti en radian                                A COMPLETER

alpha1 = (alpha1_min + alpha1_max)/2                                 # alpha1 moyen en radian        
deltaalpha1 = (alpha1_max - alpha1_min)/2                            # demi-largeur de l'intervalle de variation de alpha1 en radian 
##################################################################################
# Calcul de a et u(a) par simulation Monte-Carlo

N = 100000             # Nombre d'expériences simulées

a = np.zeros(N)        # Initialisation du tableau dans lequel on stocke les N valeurs du pas a

for i in range(0,N):   # Pour chacune des N expériences

    alpha0i = rd.uniform(alpha0-deltaalpha0,alpha0+deltaalpha0)      # Tirage aléatoire d'une valeur de alpha0 pour l'expérience i
    alpha1i =                                                        # Tirage aléatoire d'une valeur de alpha1 pour l'expérience i       A COMPLETER
    
    a[i] =                                                           # Calcul du pas a pour l'expérience i                               A COMPLETER
     
a = a*1e6                    # Conversion du pas en µm

amoy = np.mean(a)            # Calcul de la moyenne des N valeurs de a
ua = np.std(a,ddof=1)        # Calcul de l'écart-type u(a)

print('a =',amoy,'µm')
print('u(a)) =',ua,'µm')                      
##################################################################################
# Tracé de l'histogramme des N valeurs de a

plt.title('Histogramme de a')
plt.xlabel('a en µm')
plt.ylabel('Effectifs')
plt.hist(a,bins='rice')      
plt.grid()
plt.show() 
##################################################################################i
