# -*- coding: utf-8 -*-
"""
Created on Fri Aug 14 12:02:28 2026

@author: KAPOTA
"""

# 1- importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as rd

# 2- conditions initiales et variables
C0=0.15 #mol/L
Cper = 4.0E-2 #mol/L
V0 = 10 #mL 
D_V0=0.1 #mL
D_Veq=0.05 #mL
u_Cper=0.01*Cper #mol/L
VVeq= 8 #mL pour le calcul d'incertitude à Veq=8mL
N=100000
Veq8=8#mL

#3- calcul de C pour 8 mL
C8=5*Cper*Veq8/(2*V0)

#3- Calcul de N valeur de C8, pour cela on va générer N valeurs de Cper, de Veq8 et de V0
Cper_MC=rd.normal(Cper, u_Cper,N)
Veq8_MC=Veq8+D_Veq*rd.uniform(-1,1,N)
V0_MC=V0+D_V0*rd.uniform(-1,1,N)

C8_MC=5*Cper_MC*Veq8_MC/(2*V0_MC)
lnC8_MC=np.log(C8_MC)

#3- calcul de l'incertitude
u_lnC8=np.std(lnC8_MC,ddof=1)

#4- affichage de k
print('u_lnC8={:.1e}'. format(u_lnC8)) 

# 4-tracé de l'histogramme
plt.hist(lnC8_MC,bins= 'rice')
plt.xlabel('lnC')
plt.ylabel('frequence')
plt.grid()
plt.title('distribution de lnC')