import numpy as np
import matplotlib.pyplot as plt

Ec=np.array([2.40,1.69,0.91,0.57,0.35])*1.6e-19
v=[11.825e14,10.111e14,8.210e14,7.4129e14,6.8838e14]
u_ec=np.array([0.05,0.05,0.05,0.05,0.05])*1.6e-19
u_v=[2.3e12,1.7e12,1.1e12,0.91e12,0.79e12]


N=100000
h=[]
vs=[]
for i in range(N):
    Ec_MC = np.zeros(len(Ec))
    V_MC = np.zeros(len(v))
    for k in range(len(Ec)):
        Ec_MC[k]=np.random.normal(Ec[k],u_ec[k],1)
        V_MC[k]=np.random.normal(v[k],u_v[k],1)
    d=np.polyfit(V_MC,Ec_MC,1)
    h.append(d[0])
    vs.append(-d[1]/d[0])

h_moy=np.mean(h)
vs_moy=np.mean(vs)
u_h=np.sqrt(N/(N-1))*np.std(h)
u_vs=np.sqrt(N/(N-1))*np.std(vs)
t=np.linspace(0,1.5e15,1000)


print("h="+str(h_moy)+"; u_h="+str(u_h))
print("vs="+str(vs_moy)+"; u_vs="+str(u_vs))

for i in range(len(Ec)):
    plt.plot(v[i],Ec[i])
plt.plot(t,h_moy*t-h_moy*vs_moy)

