"""On étudie à l’oscilloscope la réponse indicielle d’un passe-bas du second ordre.

 On mesure le facteur de qualité Q = 4,99 et la pseudo-période des oscillations T = 990μs.

 Les incertitudes-type sont u(Q) =  0,84, avec une distribution supposée uniforme, u(T) = 120 μs, pour une distribution normale . Les distributions sont uniformes.

Déterminer la fréquence des oscillations libres non amorties f0 = 1 / T * 1 / sqrt (1 - 1 / (4 * Q ** 2))
et son incertitude-
type.


Recommencer avec u(Q) = 0.12 et u(T) = 40 µs    """
##
import numpy as np
import numpy.random as rd

N = 1000000 # Nombre de tirage

Tmoy = 990e-6
uT = 120e-6
#uT = 40e-6

Qmoy = 4.99
uQ = 0.84
#uQ = 0.12

T = rd.normal(Tmoy, uT, N)

# domaine dans lequel on tire Q uniformément
Qmin, Qmax = Qmoy - uQ * 3**.5, Qmoy - uQ **.5
Q = rd.uniform(Qmin, Qmax, N)

f0 = 1 / (T * (1 - 1 / (4 * Q ** 2.)) ** 0.5)

f0moy = np.mean(f0)
uf0 = np.std(f0, ddof = 1)
print(f0moy, uf0)

## Représentation
import matplotlib.pyplot as plt

# On décore un peu le graphique
plt.title("Histogramme du tirage")
plt.xlabel("f0")
plt.ylabel("Nombre d'apparitions")

# On trace l'histogramme
plt.hist(f0, bins = 200) # 200 classes par exemple

# Affichage de la figure
plt.show()