#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Fichier utile au TP "Fentes d'Young"

@author: pbertin
"""


# =============================================================================
# Imports des modules utiles
# =============================================================================
from math import *
import numpy as np
import matplotlib.pyplot as plt

# =============================================================================
# Données expérimentales
# =============================================================================
liste_a= [] #liste des valeurs de l'écart a entre les fentes en m
liste_i =[] #liste des interfranges i en m
liste_ui=[] #liste des incertitudes-types de i en m, données dans le même ordre que i

#Conversion en tableau numpy
liste_a=np.array(liste_a)
liste_i=np.array(liste_i)
liste_ui=np.array(liste_ui)

# =============================================================================
# Régression linéaire
# =============================================================================

t=np.polyfit(   ) #A COMPLETER
print(t)  #Valeurs de t dans la console

# =============================================================================
# Tracé des données
# =============================================================================

plt.errorbar(1/liste_a,liste_i,liste_ui,fmt='ro',barsabove=True) #tracé des données
plt.plot([1/liste_a[0], 1/liste_a[-1]],[t[0]*1/liste_a[0]+t[1], t[0]*1/liste_a[-1]+t[1]],'b--',label="regression linéaire") #tracé de la régresssion linéaire
plt.xlabel("1/a en m-1")
plt.ylabel("i en m ")
plt.legend()
plt.show()

# # =============================================================================
# # Incertitude sur les paramètres d'une régression linéaire - Monte Carlo
# # =============================================================================

# liste_pentes=[]
# liste_ord0=[]
# for _ in range((500)):
#     liste_i_alea=[]
#     for k in range(len(liste_i)):
#         liste_i_alea.append(liste_i[k] + np.random.normal(0,liste_ui[k]))
#     t=np.polyfit(1/liste_a, liste_i_alea, 1)
#     liste_pentes.append(t[0])
#     liste_ord0.append(t[1])
    
# print("La valeur moyenne de la pente est {}, et son incertitude type de {} (unités à préciser)".format(np.average(liste_pentes),np.std(liste_pentes)))
# print("La valeur moyenne de l'ordonnée à l'origine' est {}, et son incertitude type de {} (unités à préciser)".format(np.average(liste_ord0),np.std(liste_ord0)))