#Simulation d'une incertitude-type sur la masse en eau d'un calorimètre de TP

import numpy as np
import matplotlib.pyplot as plt

# Entrez la valeur des paramètres

m1 = 249.9 # masse d'eau froide (en g)
m2 = 250.6 # masse d'eau chaude (en g)
theta1 = 17.2 # température de l'eau froide (en °C)
theta2 = 53.1 # température de l'eau chaude (en °C)
thetaf = 33.8 # température du mélange à l'équilibre (en °C)

# Entrez la précision sur la masse et la température

# =============================================================================
# ATTENTION : la précision d'une mesure n'est pas son incertitude-type ! Celle-ci est donnée
# par u=Delta/sqrt(3) si Delta est la précision.
# =============================================================================

Delta_m = 0.1 # g
Delta_t = 0.1 # °C


# Entrez la fonction permettant le calcul de la masse en eau du calorimètre

def masse_eau(m1,m2,theta1,theta2,thetaf): # renvoie la valeur de mu issue du processus aléatoire, en g
    return m2*(theta2-thetaf)/(thetaf-theta1)-m1

# Entrez le nombre de simulation que vous voulez effectuer

N = 100000

# Calcul de la masse en eau mu avec une distribution de probabilité normale

mu=[] # liste des N valeurs de mu simulées

for i in range(0,N):
    simu_m1 = np.random.normal(m1,Delta_m/np.sqrt(3))
    simu_m2 = np.random.normal(m2,Delta_m/np.sqrt(3))
    simu_theta1 = np.random.normal(theta1,Delta_t/np.sqrt(3))
    simu_theta2 = np.random.normal(theta2,Delta_t/np.sqrt(3))
    simu_thetaf = np.random.normal(thetaf,Delta_t/np.sqrt(3))
    mu.append(masse_eau(simu_m1,simu_m2,simu_theta1,simu_theta2,simu_thetaf))

plt.figure(1)
plt.hist(mu,bins = 'rice')
plt.title('Résultat du tirage aléatoire du produit après simulation')
plt.xlabel("masse en eau (g)")
plt.show()
# Calcul et affichage moyenne et écart type

moy = np.mean(mu)
std = np.std(mu,ddof=1)

print("Moyenne = {:.2f} g".format(moy))
print("Ecart type = {:.2f} g".format(std)) # l'écart-type est l'incertitude-type sur la mesure simulée de mu
