Régressions
Activités Python

L'objectif de ces activités est de tester quelques cas pratiques avec des outils numériques très utilisés : Python et Matplotlib.

Prérequis

Python

Langage de programmation

Matplotlib

Bibliothèque

Un site pour utiliser Matplotlib en ligne : https://python-fiddle.com/examples/matplotlib

I - Labo de Chimie


Une équipe de chercheurs étudie l’évolution de la vitesse d’une réaction chimique en fonction de la température. Les données obtenues sont les suivantes :


Température (°C)

Vitesse (mol/s)

10

1.2

15

2.0

20

2.8

25

3.4

30

4.1

35

4.9

40

6.0


Le programme ci-dessous permet de :

  • Tracer les points expérimentaux dans un repère.

  • Déterminer la droite de régression par la méthode des points extrêmes, la méthode de Mayer et par la méthode des moindres carrés.

  • Calculer les erreurs quadratiques moyennes


Objectif : être capable de comprendre cette étude de cas et de pouvoir retrouver à la main les résultats du problème.


👉 Lisez attentivement et comprenez le code ci-dessous. Refaites ensuite l'étude de cas à la main.


I - Labo de Chimie


Une équipe de chercheurs étudie l’évolution de la vitesse d’une réaction chimique en fonction de la température. Les données obtenues sont les suivantes :


Température (°C)

Vitesse (mol/s)

10

1.2

15

2.0

20

2.8

25

3.4

30

4.1

35

4.9

40

6.0


Le programme ci-dessous permet de :

  • Tracer les points expérimentaux dans un repère.

  • Déterminer la droite de régression par la méthode des points extrêmes, la méthode de Mayer et par la méthode des moindres carrés.

  • Calculer les erreurs quadratiques moyennes


Objectif : être capable de comprendre cette étude de cas et de pouvoir retrouver à la main les résultats du problème.


👉 Lisez attentivement et comprenez le code ci-dessous. Refaites ensuite l'étude de cas à la main.


import numpy as np
import matplotlib.pyplot as plt

# Données expérimentales
x = np.array([10, 15, 20, 25, 30, 35, 40])
y = np.array([1.2, 2.0, 2.8, 3.4, 4.1, 4.9, 6.0])

# ------------------------
# Méthode des moindres carrés
# ------------------------
a_mc, b_mc = np.polyfit(x, y, 1)  # Droite : y = a*x + b

# ------------------------
# Méthode de Mayer
# ------------------------
n = len(x)
x1, y1 = x[:n//2], y[:n//2]
x2, y2 = x[n//2+1:], y[n//2+1:]

xm1, ym1 = np.mean(x1), np.mean(y1)
xm2, ym2 = np.mean(x2), np.mean(y2)

a_mayer = (ym2 - ym1) / (xm2 - xm1)
b_mayer = ym1 - a_mayer * xm1

# ------------------------
# Méthode des points extrêmes
# ------------------------
a_ext = (y[-1] - y[0]) / (x[-1] - x[0])
b_ext = y[0] - a_ext * x[0]

# ------------------------
# Prédictions
# ------------------------
y_mc = a_mc * x + b_mc
y_mayer = a_mayer * x + b_mayer
y_ext = a_ext * x + b_ext

# ------------------------
# Calcul des erreurs quadratiques moyennes
# ------------------------
eqm_mc = np.mean((y - y_mc)**2)
eqm_mayer = np.mean((y - y_mayer)**2)
eqm_ext = np.mean((y - y_ext)**2)

# ------------------------
# Tracé
# ------------------------
plt.figure(figsize=(10, 6))
plt.scatter(x, y, color='black', label='Données expérimentales')
plt.plot(x, y_mc, label=f'Moindres carrés (EQM = {eqm_mc:.3f})', color='blue')
plt.plot(x, y_mayer, label=f'Mayer (EQM = {eqm_mayer:.3f})', color='green', linestyle='--')
plt.plot(x, y_ext, label=f'Points extrêmes (EQM = {eqm_ext:.3f})', color='red', linestyle=':')
plt.xlabel('Température (°C)')
plt.ylabel('Vitesse (mol/s)')
plt.title('Régression linéaire par trois méthodes')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

II - Suivi de la température d’un réacteur chimique


Vous faites partie d’une équipe de contrôle qualité chargée de surveiller la température d’un réacteur chimique pendant une phase critique de synthèse. Cette température doit impérativement rester dans l’intervalle [74°C ; 76°C]. Des relevés sont effectués toutes les 15 minutes.


Voici les températures moyennes (en °C) relevées à partir d’échantillons de capteurs placés à différents endroits dans le réacteur :


⌛️ (min)


0

15

30

45

60

75

90

105

120

135

🌡️ (°C)

75.7

75.4

75.2

75.1

75.0

74.9

74.7

74.6

74.5

74.4


Le directeur technique vous demande : « Peut-on laisser la réaction se poursuivre sans intervention ou faut-il corriger la température dans l’heure qui vient ? »


Analysez la tendance de l’évolution de la température. Comparez les trois méthodes suivantes pour estimer l’évolution à court terme : méthode des points extrêmes, méthode de Mayer et méthode des moindres carrés. Calculez les erreurs quadratiques moyennes. Donnez les avantages et les inconvénients de chaque méthode.


Faites une proposition argumentée à votre direction, en vous appuyant sur une droite de régression. Recommandez-vous une poursuite normale, une vigilance accrue ou une intervention immédiate ?


Le programme ci-dessous permet de répondre aux questions.

👉 Lisez attentivement et comprenez le code ci-dessous.


II - Suivi de la température d’un réacteur chimique


Vous faites partie d’une équipe de contrôle qualité chargée de surveiller la température d’un réacteur chimique pendant une phase critique de synthèse. Cette température doit impérativement rester dans l’intervalle [74°C ; 76°C]. Des relevés sont effectués toutes les 15 minutes.


Voici les températures moyennes (en °C) relevées à partir d’échantillons de capteurs placés à différents endroits dans le réacteur :


⌛️ (min)


0

15

30

45

60

75

90

105

120

135

🌡️ (°C)

75.7

75.4

75.2

75.1

75.0

74.9

74.7

74.6

74.5

74.4


Le directeur technique vous demande : « Peut-on laisser la réaction se poursuivre sans intervention ou faut-il corriger la température dans l’heure qui vient ? »


Analysez la tendance de l’évolution de la température. Comparez les trois méthodes suivantes pour estimer l’évolution à court terme : méthode des points extrêmes, méthode de Mayer et méthode des moindres carrés. Calculez les erreurs quadratiques moyennes. Donnez les avantages et les inconvénients de chaque méthode.


Faites une proposition argumentée à votre direction, en vous appuyant sur une droite de régression. Recommandez-vous une poursuite normale, une vigilance accrue ou une intervention immédiate ?


Le programme ci-dessous permet de répondre aux questions.

👉 Lisez attentivement et comprenez le code ci-dessous.


# === Analyse de tendance de température et comparaison de 3 méthodes de régression ===

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
from scipy.stats import linregress

# 1. Données : temps (en minutes) et températures moyennes observées
t = np.array([0, 15, 30, 45, 60, 75, 90, 105, 120, 135])
moyennes = np.array([75.7, 75.4, 75.2, 75.1, 75.0, 74.9, 74.7, 74.6, 74.5, 74.4])

# 2. Méthode des points extrêmes (droite entre le 1er et le dernier point)
x_ext = [t[0], t[-1]]
y_ext = [moyennes[0], moyennes[-1]]
coef_ext = np.polyfit(x_ext, y_ext, 1)  # Coefficients a, b de y = ax + b
y_pred_ext = np.polyval(coef_ext, t)    # Valeurs prédites
mse_ext = mean_squared_error(moyennes, y_pred_ext)  # Erreur quadratique moyenne

# 3. Méthode de Mayer (droite entre les centres des deux moitiés)
mid = len(t) // 2
x_mayer = [np.mean(t[:mid]), np.mean(t[mid:])]
y_mayer = [np.mean(moyennes[:mid]), np.mean(moyennes[mid:])]
coef_mayer = np.polyfit(x_mayer, y_mayer, 1)
y_pred_mayer = np.polyval(coef_mayer, t)
mse_mayer = mean_squared_error(moyennes, y_pred_mayer)

# 4. Méthode des moindres carrés (régression linéaire sur tous les points)
slope, intercept, *_ = linregress(t, moyennes)
y_pred_lsq = intercept + slope * t
mse_lsq = mean_squared_error(moyennes, y_pred_lsq)

# 5. Tracé du graphique avec toutes les régressions
plt.figure(figsize=(10, 6))
plt.plot(t, moyennes, 'o-', label='Température mesurée', color='black')
plt.plot(t, y_pred_ext, '--', label='Points extrêmes', color='red')
plt.plot(t, y_pred_mayer, '--', label='Mayer', color='green')
plt.plot(t, y_pred_lsq, '--', label='Moindres carrés', color='blue')

plt.xlabel('Temps (minutes)')
plt.ylabel('Température (°C)')
plt.title("Évolution de la température dans le réacteur et ajustements linéaires")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

# 6. Affichage des erreurs quadratiques moyennes (MSE)
print("Erreur quadratique moyenne (MSE) :")
print(f" - Points extrêmes     : {mse_ext:.4f}")
print(f" - Méthode de Mayer    : {mse_mayer:.4f}")
print(f" - Moindres carrés     : {mse_lsq:.4f}"

© Jules Hamdan 2025

Create a free website with Framer, the website builder loved by startups, designers and agencies.