import numpy as np
import matplotlib.pyplot as plt
#### Ratt
# Valeurs théoriques


R1 =  #Ohm
C1 =   #F
f = 10000 #Hz
omega = 2*np.pi*f

# Entrez les précisions

DeltaR1 =    # Ohm
DeltaC1 =    # F


# Entrez la fonction de composition

def Part_relle(R1,C1,omega):
    return (R1)/(1+(R1*C1*omega)**2)

# Entrez le nombre de simulation que vous voulez effectuer

N = 100000

# Calculs avec une distribution de probabilité uniforme
Ratt = []

for i in range(0,N):
    R1temp = np.random.uniform(R1-DeltaR1,R1+DeltaR1)
    C1temp = np.random.uniform(C1-DeltaC1,C1+DeltaC1)
    Ratt.append(Part_relle(R1temp,C1temp,omega))

plt.figure(1)
plt.hist(Ratt,bins = 'rice')
plt.title('Résultat du tirage aléatoire de Ratt après simulation')
plt.xlabel("f' (cm)")


# Calcul et affichage moyenne et écart type

moy = np.mean(Part_relle)
std = np.std(Part_relle,ddof=1)

print("Moyenne de Ratt = {:.2f} cm".format(moy))
print("Ecart type de Ratt = {:.2f} cm".format(std))

#### Xatt

# Valeurs theoriques

R1 =  #Ohm
C1 =   #F
f = 10000 #Hz
omega = 2*np.pi*f

# Entrez les précisions

DeltaR1 =    # Ohm
DeltaC1 =    # F


# Entrez la fonction de composition

def Part_imag(R1,C1,omega):
    return (-R1*C1*omega)/(1+(R1*C1*omega)**2)

# Entrez le nombre de simulation que vous voulez effectuer

N = 100000

# Calculs avec une distribution de probabilité uniforme
Xatt = []

for i in range(0,N):
    R1temp = np.random.uniform(R1-DeltaR1,R1+DeltaR1)
    C1temp = np.random.uniform(C1-DeltaC1,C1+DeltaC1)
    Xatt.append(Part_relle(R1temp,C1temp,omega))

plt.figure(1)
plt.hist(Xatt,bins = 'rice')
plt.title('Résultat du tirage aléatoire de Ratt après simulation')
plt.xlabel("f' (cm)")


# Calcul et affichage moyenne et écart type

moy = np.mean(Part_imag)
std = np.std(Part_imag,ddof=1)

print("Moyenne de Xatt = {:.2f} cm".format(moy))
print("Ecart type de Xatt = {:.2f} cm".format(std))