Modélisation et simulation en physique

Voilà bien longtemps que le projet de cette page me trotte dans la tête, depuis que sur ce site j'ai déploré la disparition du programme de physique de Terminale S de la modélisation et de l'introduction des équations différentielles en 2011.  Ce qui m'a décidé d'en commencer la rédaction aujourd'hui, c'est la lecture du blog de Sylvie Bonnet, la présidente de l'Union des Professeurs de classes préparatoires Scientifiques (UPS), daté du 31 janvier 2017. Elle y déclare, entre autres " La pratique de la modélisation a totalement disparu et l’enseignement de la physique est restreint à des explications sans mise en équations, sans aucune synergie avec l’enseignement des mathématiques". Elle met en avant les conséquences de cet abandon lorsque les élèves arrivent dans le supérieur scientifique : "En arrivant dans le supérieur scientifique, ils sont parfois très démunis devant un problème qui fait intervenir une équation différentielle par exemple, faute de compétences en calcul finalement assez élémentaires."

Sur TangenteX.com, j'ai souvent abordé les différentes modélisations du programme de physique de TS avant 2012 : le pendule simple, les circuits RC et RLC, la décroissance radioactive. La construction de ces modèles permettait aux professeurs de physique, en appui avec les professeurs de mathématiques, d'introduire la notion d'équation différentielle et de leur intégration analytique et numérique (méthode d'Euler).

Cette partie du programme a complétement disparue. Pourtant les élèves de TS et du premier cycle des études scientifiques, classes prépa et licence, devraient connaitre les rudiments de la modélisation et de la simulation. Ce sont deux des activités fondamentales pratiquées par les scientifiques et les ingénieurs.

La modélisation

Pendant des siècles, depuis les physiciens (les philosophes plutôt) grecs, la physique se résolvait en deux activités : construire des théories et faire des expériences. Les théories restaient très littéraires (lire Aristote par exemple !) et les expériences plutôt qualitatives (voir Archimède par exemple).

Puis vint le XVIIeme siècle et Galilée. Galilée était à la fois physicien et mathématicien, et un certain nombre d'autres choses aussi, astronome par exemple. C'est lui qui le premier introduisit les mathématiques comme le "langage de la nature", avec lesquelles il voulait écrire "le livre de l'Univers". Il introduisit aussi la méthode expérimentale moderne et les mesures en physique. Galilée est considéré comme le père de la physique moderne.

Le XVII vit aussi naitre un autre père fondateur de la physique moderne, je veux parler de Newton évidemment. Avec lui, la mathématisation de la physique entreprit sa marche inéluctable. En 1687, son "Principia Mathematica", dont je vous recommande vivement la lecture, apparait comme le premier ouvrage de physique mathématique, le premier qui présente une théorie, la gravitation universelle, à l'aide d'outils mathématiques. Newton a le premier, tenté de modéliser le monde réel.

Au cours des XVIII, XIX et XX siècles, plusieurs grandes figures de la physique et des mathématiques développèrent la modélisation : Laplace, qui "géométrisa" la mécanique, Maxwell, pour son modèle intégro-différentiel de l'électromagnétisme, Poincaré (X 1873) pour sa mathématisation de la mécanique et ses études des équations différentielles, et bien d'autres.

La modélisation s'est donc progressivement ajoutée aux deux activités fondamentales d'un physicien, la théorie et l'expérience. Cependant, elle resta une activité assez limitée dans la mesure, où disposant d'un modèle mathématique d'un phénomène physique, son usage n'en restait pas moins compliqué ! Il n'est qu'à lire les efforts de calcul numérique déployés à cette époque pour tenter de résoudre les équations différentielles obtenues...

La modélisation prit vraiment son essor au milieu du XXeme siècle, avec l'apparition des calculateurs analogiques puis surtout des ordinateurs numériques. Il devenait possible de résoudre numériquement et rapidement les équations des modèles et donc de faire des simulations. La modélisation s'est répandue dans tous les secteurs de la science, y compris dans les sciences "molles", et de l'ingénierie, au point qu'elle constitue aujourd'hui l'activité principale des physiciens numériciens et expérimentaux et des ingénieurs de l'industrie, sans parler des financiers, qui parfois feraient mieux de s'abstenir.

Qu'est-ce que la modélisation

Les objectifs de la modélisation

Imaginons que vous vous trouviez devant un système physique réel et que vous vouliez en étudier le comportement. Vous pouvez emprunter deux voies: la voie expérimentale et la voie de la modélisation, qui ne sont d'aillleurs pas exclusives.

La voie expérimentale consiste à mettre le système physique dans différentes conditions, en faisant varier les paramètres attachés à ses degrés de liberté et en observant et mesurant ce qui se passe. Par exemple, pour étudier le comportement d'un pendule, vous allez faire varier la masse du pendule, la longeur de la corde de suspension, l'angle et la vitesse initiales, vous allez introduire des frottements sur l'axe d'oscillation  et toutes autres choses qui vous passeront par la tête. Evidemment, il faudra aussi contruire un système de mesures qui vous fournira des informations quantitatives. Bref, cela devient vite assez long et fastidieux, mais c'est possible. Maintenant, essayez d'imaginer comment vous aller procéder si on vous demande d'étudier le comportement d'une fusée lors de son lancement ! C'est déjà plus ennuyeux et c'est un euphémisme ! Vous allez être obligé de choisir une autre voie: la modélisation. Cela explique d'ailleurs que les grands objets technologiques ou les grands systèmes naturels ont été conçus ou étudiés à partir de l'apparition des ordinateurs.

Dans beaucoup de cas, il n'est pas possible ou pas souhaitable de pratiquer des expériences pour étudier le comportement d'un système physique. On va donc créer un modèle mathématique de notre système physique aussi proche que possible de la réalité du système. En possession de ce modèle, il sera possible de simuler le système et d'en déduire des lois de comportement, plus ou moins proches de la réalité. Cette façon de procéder économise beaucoup de temps et d'argent, et est très efficace à condition de ne pas confondre le modèle et le système, ce qui font parfois les financiers !

Enfin, attention à la terminologie ! Il convient de ne pas confondre modélisation et simulation : la modélisation construit le modèle du système réel à étudier, alors que la simulation utilise ce modèle pour faire des expériences virtuelles sur le comportement du modèle.

Notion de modèle

Le modèle d'un système physique est une boite noire qui comporte:

Attention à une distinction fondamentale : le modèle n'est pas le système ! Le système peut comporter des paramètres inconnus qui influent sur son fonctionnement, et la simulation nous permettra de le détecter car le comportement du modèle ne sera pas celui du système. Nous n'avons peut-être pas identifié tous les phénomènes physiques en jeu dans le système et donc notre fonction de transfert est fausse ou incomplète. Nous ne mesurons peut-être pas les bons observables. Bref, il ne faut jamais assimiler complétement le comportement de notre modèle et celui du système ! Et donc, il faut bien un jour confronter notre système à l'expérience. Et c'est pour ça que parfois les fusées tombent ou que les nouveaux avions ont des petits soucis... Il faut avouer que cela arrive de plus en plus rarement et que la modélisation arrive à un stade de bonne fiabilité.

Un modèle doit permettre de :

Passer d'un système réel à un modèle

La première et la principale étape, le vrai job du physicien numéricien et la partie la plus intéressante, c'est d'identifier et de poser calmement et rigoureuse la physique du système. A l'issue de cette étape, le numéricien, souvent avec l'aide de théoriciens lorsqu'il s'agit de systèmes novateurs (je pense à la physique quantique), disposera d'un ensemble d'équations plus ou moins complexes qui décrivent la physique connue du système.

L'étape suivante consiste à choisir les algorithmes et méthodes numériques pour résoudre ces équations. Le numéricien peut également choisir, en fonction de la nature du système, continu ou discret, d'autres outils que les algorithmes de calcul numérique. Il peut par exemple utiliser des automates cellulaires ou les modèles basés sur les agents, ou encore des algorithmes génétiques. Les choix sont ouverts et leur pertinence déterminera la qualité et l'efficacité du modèle.

Enfin, il faudra coder tout ça, ce que les informaticiens appellent l'implémentation. D'abord choisir le langage approprié (C/C++, FORTRAN, ADA, Python, MatLab ?) puis déterminer les ressources de calcul nécessaires (le Mac du coin de table ou le Pangea de Total ?) et aussi les ressources humaines (un numéricien dans son coin ou une équipe projet de 10 personnes ?).

A ce stade, plusieurs choix doivent être réalisés:

Une fois le code écrit, il faudra le tester sous toutes les coutures et le valider. Puis enfin, on pourra le passer aux expérimentateurs qui feront les simulations.

Les limites de la modélisation

La modélisation a des limites:

Ce que peut apporter l'apprentissage de la modélisation aux élèves de terminale

Remarquons tout d'abord que la modélisation n'est pas cantonnée à la physique mais utilisable dans bien d'autres sciences : la biologie, l'écologie, l'économie, la sociologie et j'en oublie. Aussi, il n'est certainement pas judicieux de limiter l'introduction à la modélisation aux TS mais il conviendrait plutôt de l'étendre à toutes les terminales de l'enseignement générale et technologique.

A mes yeux, l'un des intérêts majeurs de l'introduction à la modélisation est le pont qu'elle construit entre les sciences, physique ou biologie par exemple, et les mathématiques. Elle donne aux éléves l'occasion de se servir concrètement des outlls étudiés en mathématiques. Et ce n'est pas rien, lorsqu'on surprend une grande majorité d'élèves de terminale douter de l'utilité des mathématiques...

En physique, l'autre intérêt majeur est l'apprentissage de la méthode applicable à la compréhension d'un système physique. Mettre en oeuvre les lois de la physique et les outils des mathématiques pour construire le modèle d'un système physique est sans doute la formation la plus appropriée pour un scientifique ou un ingénieur. Ajoutons à cela l'introduction à la programmation et au calcul numérique, et nous aurons formé des élèves aptes à aborder le programme scientifique du supérieur.

Une introduction à la modélisation devrait constituer un élément du socle de base de l'élève de lycée qui se destine aux carrières scientifiques. L'option ISN de terminale pourrait être une bonne base à cette introduction.

Pas assez d'heures de cours me diront les professeurs de TS. A ceux-ci, je poserai une seule question : vaut-il mieux former des élèves destinés aux carrières scientifiques qui aient des bases solides pour construire leur culture scientifique ou bien des élèves qui aient une information superficielle sur tous les sujets ? Une tête bien faite ou une tête bien pleine ? A moins de les faire travailler plus, ce qui reste possible avec un peu d'astuce ! LGG, H IV et quelques autres lycées le font bien... C'est possible avec de la motivation, en attendant que l'EN se réveille.

La simulation

Construire un modèle n'est pas une fin en soi. Encore faut-il le faire "tourner" pour en tirer tous les enseignements nécessaires et vérifier la théorie qui a permis de l'élaborer.

Faire "tourner" un modèle signifie exécuter des dizaines de fois, des centaines ou des milliers de fois, le programme informatique qui implémente le modèle sur un ordinateur. A chaque fois, il faut faire varier les paramètres d'entrée du modèle, enregistrer ses réponses, les comparer aux résultats prévus par la théorie, améliorer le modèle et  le relancer.

Cette boucle constitue l'activité de simulation, étroitement imbriquée à la modélisation, et forme l'essentiel du travail des physiciens numériciens et expérimentateurs.

La simulation met donc en oeuvre des ordinateurs plus ou moins puissants, des outils graphiques qui permettront de visualiser les réponses du modèle sans avoir à éplucher des tableaux interminables de nombres, des équipes d'informaticiens et beaucoup de temps.

La qualité des programmes est très importante, surtout en matière de performances de calcul. Il est courant de coder un modèle avec un langage comme Python ou Matlab pour vérifier qu'il fonctionne puis de le confier à des informaticiens pour qu'ils le codent en C ou C++ pour obtenir des performances bien meilleures.

Dans certaines branches de la physique, comme la météorologie, la climatologie ou la géologie, la simulation est le seul moyen de faire des expériences. Dans d'autres domaines comme l'aéronautique ou le génie naval, c'est le moyen de faire des économies énormes par rapport à la construction et à l'étude des maquettes.

Modéliser un système mécanique simple

Dans les anciens programmes de TS, jusqu'en 2011, plusieurs modèles physiques étaient proposés aux élèves. La méthode était la même dans tous les cas : introduction de la loi physique, analyse du comportement du système, découverte de l'équation différentielle et de sa résolution et enfin comparaison entre la solution obtenue par le calcul et le comportement réel du système physique.

Voyons ce que cela pourrait donner aujourd'hui, en introduisant un élément supplémentaire : la résolution numérique sur un ordinateur de notre équation différentielle.

Modélisation du pendule simple

Analyse physique du système - Vers le modèle

Mon objectif est de modéliser le mouvement d'un pendule simple, en faisant le maximum d'hypothèses simplificatrices, pour obtenir un modèle mathématique qui me permettra de prévoir son comportement à travers un programme informatique.

Première étape : POSER LE PROBLEME

Définissons d'abord ce que nous appelons un pendule simple. Imaginez un fil rigide accroché à un support sur lequel il peut osciller sans frottement et au bout duquel on fixe une bille de petite taille. Dans cette définition, chaque terme cache une simplification de la réalité :

Vous retrouvez là une illustration de la célébre phrase de vos problèmes de physique : "on négligera tous les frottements". C'est une hypothèse simplificatrice très osée car dans la réalité c'est bien entendu impossible !

Bien, j'imagine donc mon pendule suspendu à sa potence et je l'écarte de la verticale d'un angle \( \theta \). Expérimentalement, je constate que la bille oscille sur une trajectoire circulaire, de façon différente selon que l'angle de lancé est plus ou moins grand. Si l'angle est trop grand (valeur à déterminer), mon pendule tourne autour de l'axe du support.

Seconde étape : L'ANALYSE PHYSIQUE

Il s'agit d'un problème de mécanique. Les outils à notre disposition en terminale sont les trois lois de Newton et en particulier le principe fondamental de la dynamique (PFD). Pour rappel, le PFD, la seconde loi de Newton, stipule que \( \sum \vec{F} = m \vec{a} \) avec \( \vec{a} \) l'accélération appliquée au système.

Je cherche à déterminer la variation de l'angle \( \theta \) autour de la verticale en fonction du temps lorsque le pendule oscille. Je vais donc établir puis étudier la fonction \( \theta (t) \).

Tout d'abord, schématisons notre pendule simple dans un référentiel \( (M, \vec{e_r}, \vec{e_{\theta}}) \), que nous supposerons galiléen.

PenduleSimple1

La bille M parcourt la trajectoire circulaire s. A l'instant t, la distance parcourue sur la trajectoire s est égale à l*?. La trajectoire est orientée comme indiquée sur le schéma. 

Sur l'axe \( e_{r} \), la projection du vecteur \( \vec{P} \) est égale en module au vecteur \( \vec{T} \), les deux forces s'annulent.
La projection du vecteur \( \vec{P} \) sur l'axe \( e_{\theta} \) est \( -mg \sin(\theta) \). Le signe - indique que la force subie est une force de rappel, qui ramène la bille à son état d'équilibre le plus stable, d'énergie la plus faible, ici la verticale.

En écrivant le PFD dans le référentiel, j'obtiens donc \( m\dfrac{d^2 s}{dt^2} = -mg \sin(\theta) \). Sachant que \( s \approx l*\theta \), en remplaçant cette valeur dans l'équation précédente, j'obtiens:

\( lm\dfrac{d^2 \theta}{dt^2} = -mg \sin(\theta) \)

ou encore en regroupant tous les termes constants dans le terme de droite :

\( \dfrac{d^2 \theta}{dt^2} = -\dfrac{g}{l} \sin(\theta) \)

 En posant \( \omega = \sqrt(\dfrac{g}{l}) \), j'obtiens  l'équation différentielle de second ordre :

\( \dfrac{d^2 \theta}{dt^2} + \omega ^2   \sin(\theta) = 0 \).

Elle constitue le modèle mathématique de mon pendule.
Arrêtons nous un peu sur cette équation différentielle : que nous dit-elle ? Essayons d'abord de la simplifier un peu, en remarquant que si \( \theta \) est petit (en radian bien sur), je peux faire l'approximation \(  \sin(\theta) \approx \theta \), ce qui me donne l'équation différentielle \( \dfrac{d^2 \theta}{dt^2} + \omega ^2   \theta = 0 \) ou si je l'écris autrement \( \dfrac{d^2 \theta}{dt^2} = -\omega ^2   \theta \).
Sous cette forme, notre équation nous dit qu'à un instant t quelconque de sa trajectoire, l'accélération angulaire du pendule est proportionnelle à la valeur instantanée de l'angle. Le signe moins indique que les deux grandeurs varient en sens opposé : plus l'angle diminue, plus l'accélération augmente. Le coefficient de proportionnalité est formé de g, la valeur du champ de pesanteur local et de l la longueur du pendule. Si je lance mon pendule en l'écartant un peu de la verticale, pas trop pour pouvoir faire l'approximation des "petits angles", l'angle instantané par rapport à la verticale diminue et son accélération augmente. Arrivé à la verticale, l'angle du pendule devient nul et son accélération est maximum. Puis l'angle augmente à nouveau et l'accélération angulaire diminue et ainsi de suite... Cela correspond assez bien aux observations expérimentales non?
Remarquez que cette équation est linéaire. La proportionnalité entre l'accélération angulaire et l'angle n'est vraie que lorsque nous faisons l'approximation des petits angles. En réalité, la présence de la fonction sinus dans l'équation introduit une non linéarité dans le phénomène. Cette simple fonction engendre des comportements très différents et même parfois cahotiques de notre pendule. Nous verrons cela dans une autre page.

Le passage au programme informatique

Les élèves de TS, pas plus ceux d'avant 2011 que les élèves actuels, ne sont censés connaitre la solution de cette équation différentielle. Tout au plus, les élèves d'avant 2011 savaient que la solution de l'équation linéaire \( \dfrac{d^2 \theta}{dt^2} + \omega ^2   \theta = 0 \),  avait une solution périodique de forme \(  \theta (t) = A \cos(\omega t + \phi) \). Les professeurs de mathématiques faisaient même vérifier aux élèves que c'était bien une solution, avec un bête calcul de dérivées.

Nous allons donc nous tourner vers le calcul numérique pour résoudre cette équation différentielle non linéaire de second ordre sans second membre. Plus précisement, je vais utiliser la fonction odeint() de Python/Scipy dans un petit script que je détaille ci-dessus.

Vous trouverez le détail dans le script PenduleSimplePython.py. Je vous laisse parcourir le code, l'élement le plus important étant la définition du système différentiel dans la fonction Pendule, fonction qui est utilisée par odeint().

Dans la fonction Pendule, j'ai décomposé mon équation différentielle d'ordre 2 en un système de deux équations différentielles d'ordre 1, les seules que sache traiter odeint(). Vous trouverez plus de renseignements sur la méthode dans la boite à outils Python. Le code de la fonction Pendule est :

def Pendule(theta,t):

return array([theta[1], -Omega2*sin(theta[0])])

Nous disposons maintenant d'un modèle physique transcrit dans un code informatique, ce qui va nous permettre de faire quelques simulations.

La simulation

Nous allons jouer sur la valeur des deux paramètres qui semblent influer le comportement de notre système : la longueur du fil de suspension et l'angle initial. Je ne travaillerai pas sur la vitesse angulaire initiale, que vous pourrez faire varier si vous le souhaitez.

PenduleSimple

Simulation 1 : tracé en haut à gauche

Pour cette simulation, j'ai fixé la longeur l = 1.0 mètre et l'angle initial à 0.5 radian. Bien sur, pour toutes les simulations g = 9.81 m.s-2. Je remarque que la courbe \( \theta (t) \) est une sinusoïde parfaite (du moins à vu de nez), de période d'environ 2 secondes. Rappelons que la période théorique, si ma courbe est une sinusoïde, est de \( T = 2 \pi \sqrt(\dfrac{l}{g}) \) soit 2,006 secondes. Notons aussi que l'amplitude des oscillations est constante.

Nous sommes dans l'approximation des petits angles : le modèle simplifié de la sinusoïde est applicable.

Simulation 2 : tracé en haut à droite

La longeur est maintenant l = 4 mètres, avec le même angle initial de 0.5 radian. Je note sur le graphe que la période est égale à 4. J'ai quadruplé la longueur et observé un doublement de la période, ce qui semble confirmer la relation entre période et longueur, conforme à la formule théorique.

Simulation 3 : tracé en bas à gauche

Je conserve une longueur de 1 m, et je fixe un angle initial beaucoup plus grand : 3 radians. Je constate que la courbe n'est plus une sinusoïde et que la période ne correspond plus à la valeur théorique attendue. Le modèle simplifié n'est plus applicable.

Diagramme de phase : tracé en bas à droite

J'ai tracé ici la courbe de variation de la vitesse angulaire en fonction de l'angle dans le cas où l = 1m et l'angle initial de 0.5 radian. Cette courbe s'appelle le diagramme (ou portrait) de phase et permet de tirer beaucoup d'enseignements d'un système mécanique. Nous n'en retiendrons qu'un : la courbe est fermée. Cela signifie que le système modélisé ne dissipe aucune énergie.

Enrichir le modèle : prise en compte des frottements

Les imperfections du modèle précédent

Notre modèle montre quand même un comportement étrange : le pendule oscille indéfiniment, il ne dissipe aucune énergie. Or expérimentalement, nous constatons que, quelles que soient les précautions que nous prenions, le pendule finit par s'arrêter d'osciller ! Il y a donc dissipation d'énergie et la cause la plus probable sont les frottements. Si nous expérimentons dans l'air, la source de frottement la plus évidente, c'est le frottement fluide de l'air sur la bille. Voyons comment introduire ce terme dissipatif dans notre modèle.

Les ajouts au modèle

Le frottement fluide se traduit par une force porportionnelle à la vitesse de déplacement de la bille, force qui s'oppose au déplacement. Dans notre équation différentielle, nous allons donc ajouter le terme correspondant à droite de l'équation :

\( \dfrac{d^2 \theta}{dt^2} = -\omega ^2 \sin(\theta) - K \dfrac{d \theta}{dt} \) avec K le coefficient de frottement fluide.

Ce qui nous donne l'équation :

\( \dfrac{d^2 \theta}{dt^2} + K \dfrac{d \theta}{dt} + \omega ^2 \sin(\theta) = 0  \)

Pour prendre en compte ce nouveau terme, il faut modifier un peu notre script, dans la fonction PenduleAmorti, comme suit :

def PenduleAmorti(theta,t):

return array([theta[1], -Omega2*sin(theta[0]) - K*theta[1]])

Le script complet du programme est disponible dans PenduleAmortiPython.py

Nouvelle simulation

Pour une longueur l = 1 m, un angle initial de 0.5 radian et un coefficient d'amortissement K = 0.5, j'obtiens la courbe \( \theta (t) \) figurant sur la figure de gauche.

PenduleAmorti

Vous notez que maintenant l'amplitude des oscillations diminuent plus ou moins fortement selon la valeur de K. Notez aussi le diagramme de phase : contrairement au modèle non dissipatif vu ci-dessus, la courbe n'est plus fermée mais tend vers 0 en spiralant. Le système modélisé est dissipatif.

Modéliser un système dynamique

La modélisation ne concerne pas seulement les systèmes de la physique. On la rencontre aussi en écologie dans l'étude de l'évolution des populations. Nous l'avons déjà croisé ici avec le modèle de Lokta-Volterra. Plus généralement, il s'agit de l'étude des systèmes dynamiques. Je vais vous donner ici un exemple simple de la modélisation d'un système dynamique.

Le problème

Considérons une population animale, par exemple des lapins, qui serait exposée à une maladie. Quelle est l'influence de l'épidémie sur la population ? Plus précisément, je désire connaitre l'évolution temporelle du nombre d'animaux sains, malades et morts en fonction de la capacité du microbe ou du virus à infecter des animaux sains (sa contagiosité) et aussi celle de tuer un animal contaminé (sa letalité).

Un modèle d'évolution de la population

Analyse du problème

Le problème revient à analyser l'évolution des effectifs de trois sous-populations : les animaux sains, notée x(t), les animaux malades, notée y(t), et les animaux morts, notée z(t). Ces trois sous-populations forment des ensembles disjoints, un animal ne pouvant être sain et malade ou a fortiori mort !

Analysons d'abord l'évolution de la population saine x(t). Je pose comme hypothèse que les animaux ne meurent que de la maladie étudiée et qu'il n'y a pas de naissance pendant la durée de la simulation. Hypothèses restrictives j'en conviens, mais il faut bien simplifier les choses... La contagion des animaux sains dépend du taux de contagion noté c mais aussi du nombre d'animaux malades (plus y en a et plus la contamination sera rapide), représenté par y(t) et aussi du nombre des animaux sains, représenté par x(t). Je remarque aussi que la population des animaux sains décroit. Je ne tiendrai pas compte des guérisons spontanées.

Passons à l'évolution de la population malade y(t). Elle croît avec le nombre d'animaux qui tombent malade, que nous venons d'identifier ci-dessus. Mais elle décroît du nombre d'animaux qui meurent. Ce nombre est proportionnel au nombre d'animaux malades y(t) et le coefficient de proportionnalité étant la létalité notée l.

Enfin la population z(t) d'animaux qui meurent est égale à celle identifiée ci-dessus.

Le modèle mathématique

La variation de chaque sous-population est égale à la dérivée temporelle de son effectif, soit respectivement \( \dfrac{dx}{dt} \), \( \dfrac{dy}{dt} \) et \( \dfrac{dz}{dt} \). Traduisons maintenant en langage mathématique nos hypotèses. Je vais donc construire un système différentiel composé des règles d'évolution de chacune des sous-populations:

\(  \left\{ \begin{eqnarray*}  \dfrac{dx}{dt} &=&-cx(t)y(t) \\  \dfrac{dy}{dt} &=&cx(t)y(t) - ly(t) \\  \dfrac{dz}{dt} &=&ly(t)   \end{eqnarray*} \right. \)

Il s'agit d'un système différentiel non linéaire que nous allons maintenant résoudre numériquement.

Le passage au programme informatique

Nous avons vu dans la modélisation du pendule comment traiter un système d'équations différentielles du premier ordre. Nous utiliserons la même méthode. Comme pour le pendule, la pièce maitresse du code est la fonction Evolution qui définit l'évolution du système. Il ne s'agit que de la transcription en Python du système mathématique :

def Evolution(Pop,t):

x,y,z = Pop

# système différentiel

x1 = -c*x*y        # contamination

y1 = c*x*y - l*y   # variation de la population infectée

z1 = l*y           # mortalité de la population infectée

return [x1,y1,z1]

La liste nommée Pop contient les valeurs x(t), y(t) et z(t) pour chaque pas de temps. Attention, bien que non utilisée dans Evolution, le paramètre t est obligatoire.

Le code complet est dans le script PopulationMalade.py

Simulation du modèle d'évolution de la population

Je vais maintenant simuler le comportement de mon système dynamique en lançant une simulation avec les paramètres suivants:

Exécutons le script avec ces paramètres :

Propagation maladie

Figure en haut à gauche : pour cette simulation, c = 0.1 et l = 0.3. La maladie se propage assez rapidement à toute la population et les animaux malades meurent peu à peu.

Figure en haut à droite : c = 0.1 et l = 4.0. Le taux de mortalité est élevé, les animaux malades n'ont pas le temps de contaminer toute la population car la contagiosité n'est pas assez élevée.

Figure en bas à gauche : c = 3.0 et l = 5.0. La contagiosité et la mortalité sont très élevées. La population disparait très rapidement

Comme vous le constatez, ce modèle est assez simpliste : pas de guérison, pas de reproduction de la population saine, etc. Mais vous pouvez le compléter maintenant que vous avez compris le principe. Il vous suffit d'ajouter vos hypothèses dans le système différentiel, qui constitue le modèle du système dynamique.

Une autre vision du problème

Nous avons modélisé l'évolution de la population exposée à la maladie. Nous aurions pu également nous intéresser à la propagation spatiale de l'épidémie, point de vue différent mais aussi important.

Il est possible d'étudier ce point de vue avec un système différentiel, mais je trouve que ce n'est pas une bonne idée. Nous avons abordé le concept d'automate cellulaire. Un automate cellulaire spécifique est particulièrement approprié pour modéliser une diffusion dans l'espace, en l'occurence la propagation d'une maladie.

Les scripts Python

Les scripts Python étudiés dans cette page sont disponibles dans le package Modelisation.zip :


Contenu et design par Dominique Lefebvre - www.tangenteX.com février 2017   Licence Creative Commons   Contact : PhysiqueX ou

Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France.