#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Feb  4 13:07:00 2023

@author: yvestalbourdel
"""
import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt
#----------
# Données
#----------
# Double fente LARGE
distancessupports500 = np.array([ 500.0,700.0,810.0,900.0,1000.0,1200.0])
interfranges500 = np.array([ 0.614,0.87,1.012,1.127,1.261,1.518])

# Double fente MOYENNE
distancessupports300 = np.array([ 500.0,700.0,800.0,900.0,1000.0,1200.0])
interfranges300 = np.array([ 1.026,1.454,1.670,1.886,2.104,2.540])

# Double fente ETROITE
distancessupports200 = np.array([ 500.0,700.0,800.0,900.0,1000.0,1200.0])
interfranges200 = np.array([ 1.557,2.223,2.530,2.867,3.167,3.857])

#-------------------------------------
# Fonction régression linéaire simple
#-------------------------------------
def regressionlinéairesimple(distancessupports,interfranges,decimales):
    plt.figure()
    plt.plot(distancessupports,interfranges,'r+')
    #................................................;
    print ("pente=",pente)
    print ("ordonnée=",ordonnée)
    print ("estimation de l'écart a entre les fentes (en µm) par régression linéaire",round(0.6328/pente,decimales))
    


regressionlinéairesimple(distancessupports500,interfranges500,2);
# regressionlinéairesimple(distancessupports300,interfranges300,2);
# regressionlinéairesimple(distancessupports200,interfranges200,2);

#-----------------------------------------------
# Variabilité estimée des lectures de distances
#-----------------------------------------------

# ±4 mm sur les mesures de positions de support sur banc

u_distances=4.0

# ±3 pixels pour les mesures de 10*i puis 5*i puis 3*i

u_interfranges500=(3*0.014)/10
u_interfranges300=(3*0.014)/5
u_interfranges200=0.014

#-------------------------------------------------------------------------------------------
# Fonction Variabilité utilisant la MCM pour estimer la variabilité sur l'écart du doublet
#-------------------------------------------------------------------------------------------

def  Variabilitéa(distancessupports,interfranges,u_distances,u_interfranges,population)     :
    liste_tiragea=[]
    for i in range(0,population):
        l = len(distancessupports) 
        # tiragedistances = .........................................................
        # tirageinterfranges = ......................................................
        tiragea=0.6328/np.polyfit(tiragedistances,tirageinterfranges,1)[0]
        liste_tiragea.append(tiragea)
    plt.figure()
    plt.hist(liste_tiragea,500,density=True,histtype='step')  
    print('La valeur moyenne de a est de',round(np.mean(liste_tiragea),1),'µm')
    print('La variabilité de a est estimée à ±',round(np.std(liste_tiragea),1),'µm')
        
Variabilitéa(distancessupports500,interfranges500,u_distances,u_interfranges500,100000)
# Variabilitéa(distancessupports300,interfranges300,u_distances,u_interfranges300,100000)
# Variabilitéa(distancessupports200,interfranges200,u_distances,u_interfranges200,100000)