Histogramme d'une série de mesure

Programme de classe terminale, enseignement de spécialité, voie générale

Représenter l’histogramme associé à une série de mesures à l’aide d’un tableur ou d'un langage de programmation.

Principe

Tracer l'histogramme d'une série de \(n\) mesures d'une grandeur \(x\).

Déterminer la valeur moyenne :

\[\bar{x} = \dfrac{x_1 + x_2 + ... + x_n}{n}\]

l'écart-type :

\[s = \sqrt{\dfrac{(x_1-\bar{x})^2 + (x_2-\bar{x})^2 + ... + (x_n-\bar{x})^2}{n-1}}\]

et l'incertitude-type :

\[u(\bar{x}) = \dfrac{s}{\sqrt{n}}\]

En langage Python, plusieurs librairies proposent des fonctions statistiques.

Module

Fonction moyenne

Fonction écart-type

numpy

mean(x)

std(x, ddof=1)

statistics

mean(x)

stdev(x)

Exemple : célérité d'un son

Soit une série de mesure de la célérité du son donnée par un module ultrason associé à un Arduino.

import matplotlib.pyplot as plt
from statistics import mean, stdev, sqrt

# MESURES
c= [352.18, 349.31, 350.47, 349.34, 350.43, 350.47, 349.52, 349.52, 348.57,
   349.52, 349.31, 349.52, 349.52, 349.34, 349.55, 347.70, 349.52, 349.48,
   349.31, 348.60, 350.47, 349.52, 348.60, 349.31, 348.57, 349.52, 349.31,
   349.48, 348.53, 348.60]
n = len(c)

# CALCULS
c_moy = mean(c)    # valeur moyenne
s = stdev(c)       # écart-type standard
u = s/sqrt(n)      # incertitude-type

# AFFICHAGE
print("c_moy =", c_moy, "s =", s, "u(c) =", u)
print("c =", round(c_moy,1), "+/-", round(u,1), "m/S")

# HISTOGRAMME
plt.hist(c, range=(344,354), bins=10, rwidth=0.9)        # Trace l'histogramme
plt.axvline(c_moy, color='orange', ls='--')              # Ligne verticale pour la valeur moyenne
plt.title("Histogramme - Célérité d'un son [bins = 10]") # Titre
plt.ylabel('Fréquence')                                  # Légende en y
plt.xlabel("c (m/s)")                                    # Légende en x
plt.xlim(344, 354)                                       # Echelle en x
plt.xticks([i for i in range(344, 355)])                 # Graduation manuelle en x
plt.yticks([i for i in range(0, 20, 2)])                 # Graduation manuelle en y
plt.grid(axis='y')                                       # Grille uniquement en y
plt.show()                                               # Affiche la figure
  • range=(344, 354) fixe les limites de la plage d'étude du tableau de données.

  • bins=10 est le nombre d'intervalles dans la plage d'étude.

Résultats

>>> %Run script.py
c_moy = 349.4363333333333 s = 0.8163690989663521 u(c) = 0.14904792358467947
c = 349.4 +/- 0.1 m/s

Pour l'option bins = 10 :

Histogramme célérité son

Pour l'option bins = 100 :

Histogramme célérité son