Adloun

électricité (PTSI) · Chapitre 3 · Exercice de TD

La méthode d'Euler : du schéma à la simulation

Le circuit linéaire du premier ordre · C. Réponse à un échelon · niveau 2

Énoncé

(Capacité numérique.) On étudie l'équation par le schéma d'Euler explicite de pas :

1) Régime libre (, ). Montrer que le schéma donne exactement . Calculer la valeur obtenue en pour , , , et l'erreur relative par rapport à la solution exacte. Comment l'erreur dépend-elle de ?

2) Que se passe-t-il pour ? pour ? Pourquoi un pas trop grand est-il plus grave qu'une simple imprécision ?

3) Excitation quelconque. L'entrée est une rampe saturée : pour , puis , avec , , ; . Écrire un script Python qui simule par la méthode d'Euler, et le compare à la solution exacte (donnée) pour . Donner et l'erreur maximale pour , , .

4) Montrer qu'en régime établi pendant la rampe, suit l'entrée avec un retard constant, et le calculer. Interpréter.

Corrigé

La stratégie. Avant de faire confiance à un schéma numérique, on le teste sur un cas dont on connaît la solution exacte. Le régime libre est ce cas : le schéma d'Euler s'y résout à la main, et l'on voit d'un coup sa précision et sa limite de stabilité. Ensuite seulement, on l'utilise là où il est utile : une excitation qui n'est pas un échelon.

1) Le schéma résolu. Avec : . La suite est géométrique : . En , :

pas par Eulerexact : erreur relative

Diviser le pas par divise l'erreur par : l'erreur de la méthode d'Euler est proportionnelle au pas. (On le voit sur le développement : , d'où une erreur relative , soit , , .) Le schéma est toujours en dessous en décharge : il utilise la pente au début du pas, plus raide que la pente moyenne.

2) La stabilité. Le facteur commande tout.

  • Pour , il est entre et : la suite décroît vers sans changer de signe, comme la solution exacte.
  • Pour , il est entre et : la suite tend encore vers , mais en changeant de signe à chaque pas. Avec : ; ; ; … Une décharge qui oscille : qualitativement faux.
  • Pour , il est inférieur à : la suite diverge en oscillant. Avec : ; ; ; ; …

Un pas trop grand ne donne pas un résultat imprécis, il donne un résultat absurde : une tension qui croît sans limite dans un circuit sans source. La règle pratique est ; et dans un circuit qui comporte plusieurs constantes de temps, c'est la plus petite qui impose le pas.

3) Le script. On choisit un pas, on avance de tangente en tangente, et l'on compare à la solution exacte. Pour , la solution exacte repart de vers avec la constante de temps .

import numpy as np

E, tau, theta = 5.0, 1e-3, 5e-3    # V, s, s (theta = 5 tau)

def e(t):                           # rampe saturée
    return np.minimum(E * t / theta, E)

def euler(h, t_fin=10e-3):
    t = np.arange(0.0, t_fin + h / 2, h)
    u = np.zeros_like(t)            # u(0) = 0
    for n in range(len(t) - 1):
        u[n + 1] = u[n] + h * (e(t[n]) - u[n]) / tau
    return t, u

def exacte(t):                      # solution exacte
    u1 = E / theta * (t - tau + tau * np.exp(-t / tau))
    u_th = E / theta * (theta - tau + tau * np.exp(-theta / tau))
    u2 = E + (u_th - E) * np.exp(-(t - theta) / tau)
    return np.where(t <= theta, u1, u2)

for k in (10, 100, 1000):
    h = tau / k
    t, u = euler(h)
    n = int(round(theta / h))
    err = np.max(np.abs(u - exacte(t)))
    print(f"h = tau/{k:<4d}  u(theta) = {u[n]:.4f} V   "
          f"erreur max = {err:.5f} V")
print(f"exact        u(theta) = {exacte(np.array(theta)):.4f} V")
t, u = euler(tau / 1000)
n = int(round(theta / (tau / 1000)))
print(f"retard e - u en theta : {e(t[n]) - u[n]:.3f} V")

Résultat obtenu en l'exécutant :

h = tau/10    u(theta) = 4.0052 V   erreur max = 0.01920 V
h = tau/100   u(theta) = 4.0066 V   erreur max = 0.00185 V
h = tau/1000  u(theta) = 4.0067 V   erreur max = 0.00018 V
exact        u(theta) = 4.0067 V
retard e - u en theta : 0.993 V

On retrouve la proportionnalité de l'erreur au pas. La valeur exacte est reproduite à près avec .

4) Le retard. Pour pendant la rampe, le terme s'éteint et La sortie suit l'entrée avec un retard ; à un instant donné, elle est en dessous de l'entrée de (le script donne en , l'exponentielle n'étant pas encore tout à fait éteinte). Physiquement : pour que monte à la vitesse , il faut un courant constant , donc une tension constante aux bornes de la résistance. On retrouvera ce courant constant au problème : c'est la clé de la charge sans pertes.

Ce que l'exercice installe. Tester un schéma sur un cas exactement soluble avant de s'en servir ; savoir que l'erreur d'Euler est proportionnelle au pas et qu'un pas supérieur à fait diverger le calcul ; utiliser la simulation pour une excitation qui n'est pas un échelon. Et une propriété physique : un circuit du premier ordre soumis à une rampe la suit avec le retard .

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →