#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
TP diffraction  ELEVE MC seul
"""

#importation des bibliothèques 
import numpy as np #pour la manipulation des tableaux
import matplotlib.pyplot as plt #pour le tracé de graphiques 

#données expérimentales
L=np.array([ ]) #compléter avec vos valeurs de longeur de taches centrales en m
d=np.array([ ])#compléter avec valeurs de largeur de fentes en m

y=              #expression des ordonnées en fonction des données A COMPLETER
x=              #expression des abcisses en fonction des données  A COMPLETER

#Simulation de MC.
#listes destinées à accueillir les valeurs successives de a et de b à chaque simulation
pentes=[ ]
ordonnees_origine=[ ]

#nombre de simulations MC
N=             #A compléter

#largeur de la distribution
u_y=                  # Incertitude - type sur les valeurs de L A COMPLETER
Dy=np.sqrt(3)*u_y

u_x= 0 
Dx=np.sqrt(3)*u_x

#réalisation de la simulation
for n in range(0,N):
    L_tirage=[] #liste vide qui va contenir les valeurs de L tirées au sort 
    d_tirage=[] #liste vide qui va contenir les valeurs de d tirées au sort 
    inverse_d_itrage=[] #liste vide qui va contenir les valeurs de 1/d calculées 
    
    for i in range(len(L)): 
        L_tirage.append(np.random.uniform(L[i]-Dy,L[i]+Dy )) #tableau de valeurs de L tirées aléatoirement 						 
        d_tirage.append(np.random.uniform(d[i]-Dx,d[i]+Dx)) #tableau de valeurs de d tirées aléatoirement 		              
        inverse_d_itrage.append(1/d_tirage[i])
		# Régression linéaire de y_tirage en fonction de x_titrage : équation 
    p = np . polyfit (inverse_d_itrage , L_tirage , 1)
    pentes.append(p[0])
    ordonnees_origine.append(p[1])

#valeurs moyennes
a_moy=np.mean(pentes)
b_moy=np.mean(ordonnees_origine)

#incertitudes-types
u_a_MC=np.std(pentes,ddof=1)
u_b_MC=np.std(ordonnees_origine,ddof=1)

#affichage des résultats
print('résultats de la simulation de MC:','a=',a_moy,'u(a)=', u_a_MC,'b=', b_moy,'u(b)=', u_b_MC)
