##importation
import matplotlib.pyplot as plt
import numpy as np
import math as m
import os
from scipy.special import erf

## Récupération des données expérimentales
# on précise le répertoire dans lequel se trouve le fichier de données (chemin et nom du répertoire A COMPLETER) :
os.chdir(r"C:\")
# on convertit le fichier texte de données en un tableau comportant 10 colonnes (nom du fichier A COMPLETER) : 
num,texp,T0,T1,T2,T3,T4,T5,T6,T7=np.loadtxt(".txt",unpack=True)

## Caracteristiques du problème
# Paramètres de la barre d'aluminium A COMPLETER
S=2e-4 # section en m^2
capath=897 # capacité thermique massique en J/(K.kg)
rho=2.7e3 # masse volumique en kg/m^3
Ti= # température initiale de la barre
P0= # puissance de chauffe en W en x = 0
phi= # puissance surfacique de chauffe en W/m^2 en x = 0


## Tracer des courbes T(xk,t) pour visualiser l'évolution des températures pendant l'acquisition
plt.plot(texp,T0,texp,T1,texp,T2,texp,T3,texp,T4,texp,T5,texp,T6,texp,T7)
plt.title("évolutions temporelles au niveau des différents capteurs")
plt.legend(["T0","T1", "T2", "T3","T4", "T5", "T6","T7"],loc="best")
plt.xlabel("t (s)")
plt.ylabel("Tk (°C)")
plt.grid(True)
plt.show()


## Analyse de l’évolution temporelle de la température en x = 0
# Construction de la liste des abscisses A COMPLETER
abs=[]
# Régression linéaire A COMPLETER
a,b=np.polyfit()
# Construction de la liste des températures en x = 0 à partir du résultat de la régression linéaire
T0mod=[a*absi+b for absi in abs]
# Tracés de la courbe expérimentale et de la courbe modèle A COMPLETER
delta_T = np.array([]*len(T0))
plt.errorbar(abs,T0,xerr=0 ,yerr=2*delta_T/np.sqrt(3),fmt='b.',label='Mesures')
plt.plot(abs,T0mod,label='régression linéaire')
plt.title("Analyse de l’évolution temporelle de la température en x = 0")
plt.xlabel("t^0.5 (s^0.5)")
plt.ylabel("T(x=0,t) (°C)")
plt.legend()
plt.grid()
plt.show()
# Calcul et affichage de la conductivité thermique de l'aluminium A COMPLETER
conduct_exp=
print("conductivité thermique déterminée expérimentalement en W/(m.K)=",conduct_exp)

# Simulations Monte Carlo pour obtenir l'incertitude sur la pente de la droite modèle 
N =  # nombre des simulations
liste_pente = []
for i in range(N):
# A COMPLETER 
    l=len(abs)
    tirage_T0=
    modele=np.polyfit()
    liste_pente.append()     
pente_moy =   # pour vérification, A COMPLETER
u_pente =  # A COMPLETER
u_conduct =  # A COMPLETER

print("moyenne sur la pente de la droite T0(t^0.5) en K/s^0.5 =",pente_moy) 
print("incertitude-type sur la pente de la droite T0(t^0.5) en K/s^0.5 =",u_pente) 
print("incertitude-type sur la conductivité thermique en W/(m.K) =",u_conduct) 


## Analyse de l’évolution temporelle de la température en x = 9 cm
# Paramètres 
x5=9e-2 # position du capteur n°6
D =     # coefficient de diffusion en m^2/s A COMPLETER
# Construction de la liste des températures en x = 9 cm à partir du modèle théorique (solution analytique) 
def modele5(t):
    return(Ti+(phi/conduct_exp)*(2*m.sqrt(D*t/(m.pi))*m.exp(-x5**2/(4*D*t)) -x5*(1-erf(x5/(2*m.sqrt(D*t))))))
T5mod=[modele5(texpi) for texpi in texp]
# Tracés de l'évolution temporelle de la température en x = 9 cm selon l'expérience et le modèle théorique
plt.errorbar(texp,T5,xerr=0 ,yerr=2*delta_T/np.sqrt(3),fmt='b.',label='Mesures')
plt.plot(texp,T5mod,label='modèle')
plt.title("Analyse de l’évolution temporelle de la température en x = 9 cm")
plt.xlabel("t (s)")
plt.ylabel("T(x=9 cm,t) (°C)")
plt.legend()
plt.grid(True)
plt.show()