Adloun

mathématiques complémentaires (terminale) · Chapitre 6 · Exercice de TD

Problème — Une épidémie dans un lycée

Primitives et équations différentielles · niveau 3 (difficile)

Énoncé

Problème — Une épidémie dans un lycée.

Un lycée compte élèves. Le jour , élèves sont grippés. Tant que la maladie est rare, chaque malade en contamine d'autres à un rythme constant, et l'on peut poser .

  • Résoudre ce premier modèle, puis calculer le nombre de malades prévus aux jours et . Que faut-il en penser ?
  • Pour corriger le modèle, on tient compte de ce qu'un malade ne peut contaminer que des élèves encore sains. On obtient l'équation logistique

Vérifier que les deux modèles donnent presque la même vitesse au jour , et expliquer pourquoi le second finit par s'en écarter.

  • Programmer la méthode d'Euler pour ce second modèle et donner le nombre de malades aux jours et , pour plusieurs pas.
  • Vérifier que est solution, et l'utiliser pour contrôler les résultats numériques.
  • À quel moment le nombre de nouveaux malades par jour est-il le plus grand ? Quelle est alors la proportion d'élèves atteints ?
  • Que conseiller au proviseur ?

Corrigé

  • Le modèle exponentiel. avec donne , d'où

La seconde valeur est absurde : le lycée ne compte que élèves. Le modèle dépasse d'ailleurs cet effectif dès jours. Un modèle n'est valable que dans son domaine, et celui-ci cesse de l'être dès que la maladie n'est plus rare.

  • Ce que corrige le facteur. Au jour , est négligeable devant : le facteur correctif vaut , et les deux modèles donnent la même vitesse initiale, environ élèves par jour. Mais le facteur diminue à mesure que la maladie se répand, car il ne reste plus grand monde à contaminer ; il s'annule quand tout le monde est atteint. La croissance s'étouffe donc d'elle-même — ce que le premier modèle ignore.
  • Euler.

def euler(f, t0, y0, h, n):
    t, y = t0, y0
    points = [(t, y)]
    for _ in range(n):
        y = y + h * f(t, y)
        t = t + h
        points.append((t, y))
    return points

grippe = lambda t, y: 0.45 * y * (1 - y / 1200)

for h in (0.5, 0.25, 0.1, 0.01):
    points = euler(grippe, 0, 5, h, round(20 / h))
    print(h, round(points[round(10 / h)][1], 1), round(points[-1][1], 1))
# 0.5  -> 241.8   1157.2
# 0.25 -> 280.9   1161.8
# 0.1  -> 308.3   1164.1
# 0.01 -> 326.2   1165.5

Les valeurs se stabilisent lentement : au jour , on retiendra environ malades — et surtout pas les du pas le plus grossier. Au jour , tous les pas s'accordent sur environ : le résultat est alors robuste.

  • Contrôle par la formule. Posons , de sorte que et . Alors

tandis que , donc

C'est bien la même expression, et . Cette formule donne et : les valeurs d'Euler au pas en sont à moins de .

  • Le pic de nouveaux cas. Le nombre de nouveaux malades par jour est , c'est-à-dire . Lue comme fonction de , cette quantité est un trinôme de racines et : il est maximal au milieu, pour , soit la moitié des élèves. Cela se produit lorsque , c'est-à-dire

et le pic vaut alors nouveaux cas par jour.

  • Conseil. Rien ne sert d'agir au jour : à cette date, la moitié du lycée est déjà touchée et l'épidémie s'éteindra d'elle-même faute de proies. Tout se joue avant le douzième jour, quand les effectifs paraissent encore dérisoires — c'est précisément là que la croissance est la plus proche de l'exponentielle, donc la plus trompeuse.
iRemarque

Le modèle logistique n'est pas une connaissance exigible : il n'apparaît ici que comme contexte. Tout ce qui a été demandé relève, lui, du programme — vérifier qu'une fonction est solution, dériver un quotient, et faire tourner la méthode d'Euler.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →