• Aucun résultat trouvé

, / .[#] .[0][#] [-]+' , ![-]!%=−' ( , / 1 .[*]+' .[#] .[0][#]−' .[#] [-]−' , ![#]!%='

N/A
N/A
Protected

Academic year: 2022

Partager ", / .[#] .[0][#] [-]+' , ![-]!%=−' ( , / 1 .[*]+' .[#] .[0][#]−' .[#] [-]−' , ![#]!%='"

Copied!
6
0
0

Texte intégral

(1)

Informatique et modélisation de systèmes physiques Janvier 2021

TD IMSP 3 : Résolution d’équations différentielles non linéaires CHIMIE : Réactions oscillantes

PANDEMIE : Propagation virale dans une population

Nous nous limiterons dans ces deux contextes -forts différents- à des résolutions numériques (Euler et/ou RK4) pour visualiser : tantôt la curiosité oscillante en CHIMIE (pour des équations qui ne dépassent pas le premier ordre), tantôt l’influence de paramètres critiques dans l’évolution des populations touchées lors d’une EPIDEMIE.

I. Un modèle de réaction oscillante : le BRUSSELLATOR

I.1. Modèle cinétique séquentiel d’actes chimiques élémentaires

Quelques réactions chimiques sont oscillantes, c’est-à-dire que certains réactifs, produits ou catalyseurs ont des concentrations fluctuantes au cours de la réaction spontanée réelle naturellement irréversible.

On cite traditionnellement la réaction oscillante (« horloge ») à iode ou encore la réaction de Belousov-Zhabotinsky (1961) (bromation d’acide malonique catalysée par des ions cériques) dont les modèles proposés (mécanismes réactionnels sous-jacents) ont été abondamment commentés (OREGONATOR ou FKN de 1974)

Ilya Prygogine (Bruxellois et Nobel 1977) proposa un modèle un peu moins foisonnant de réactions auto-catalytiques : le BRUSSELLATOR, une équation dont le bilan de matière global s’écrit : A+B = C+D et dont le mécanisme formel envisagé est la séquence suivante d’actes élémentaires :

A ➝ U

formant l’intermédiaire réactionnel U de constante de vitesse k1

2U + V ➝ 3U

étape autocatalytique de constante k2 consommant le constituant V généré en étape 3

B + U ➝ V+C

formant V et C de constante k3

U ➝ D

formant D de constante k4

S’agissant de processus élémentaires, l’évolution temporelle des espèces auto-catalytiques U et V est donnée par le système d’équations différentielles non linéaires :

U et V étant des intermédiaires réactionnels , leur concentration finale doit égaler leur concentration initiale au cours de l’apparition progressive des produits au détriment des réactifs. Les concentrations de A et B étant en très fort excès devant celles de U et V, on considérera ces concentrations sensiblement constantes et une recherche de régime

permanent de concentrations de U et V conduit à :

Il s’agit d’un état stationnaire envisageable mais qui ne sera atteint que pour certaines conditions initiales de concentration de A et B. Dans d’autres proportions de A et B on atteint un « attracteur » c’est à dire une solution périodique d’oscillations « perpétuelles » associée à un cycle (courbe paramétrée fermée) dans l’espace des phases ([U],[V]).

![#]

!% = '(. [*] + ',. [#],[-] − '/. [0][#] − '1. [#]

![-]

!% = −',. [#],[-] + '/. [0][#]

(2)

I.2. Comportement du système en limite critique de bifurcation de Hopf : RK4 indispensable !

On se situera en limite de bifurcation de Hopf : rapport critique de concentration [A]/[B] limite de bifurcation entre un régime avec point attracteur et un régime avec cycle attracteur.

Un changement de variables permet d’adimensionner le système d’équations différentielles non-linéaires sous la forme :

On rappelle le schéma d’approximation d’Euler :

s’écrivant :

avec h le pas d’itération sur x

et celui du schéma d’approximation de Runge Kutta :

1- Ecrire en langage Python les deux fonctions égalant les deux dérivées temporelles (rôle de f ci-dessus). On les nommera deru(u,v,a,b) et derv(u,v,b)

2- Ecrire en langage Python et en calquant le schéma d’approximation précédent, une fonction

brusselatorEuler (duree,pas,u0,v0,a,b) (avec u0 et v0 les concentrations initiales) calculant la liste des valeurs de u et v sur cette durée et avec ce pas, créant et affichant les graphes u(t), v(t) et v(u)

3- Ecrire en langage Python et en calquant le schéma d’approximation précédent, une fonction

brusselatorRK4 (duree,pas,u0,v0,a,b) (avec u0 et v0 les concentrations initiales) calculant la liste des valeurs de u et v sur cette durée et avec ce pas, créant et affichant les graphes u(t), v(t) et v(u)

4- Visualiser les sorties graphiques obtenues dans les conditions suivantes : Conditions aux Limites Temporelles (ou Conditions Initiales) : u0=v0=0.9 à t=0

Très proche de la limite de bifurcation de Hopf (a=1;b=2) : a=1 ; b=1.99 (dans ce cas on doit atteindre un point attracteur et non un cycle attracteur)

a- Résolution pour un pas h=0.5 sur 1000 unités « temporelles » (adimensionnées et dont on ne cherchera l’évaluation physique)

b- Résolution pour un pas divisé par 10 : h=0.05 et toujours sur 1000 unités « temporelles » (donc fournissant 10 fois plus de valeurs)

Page suivante vous devez pouvoir attribuer à chaque paire de courbes (temporelles et portrait) son pas et la méthode de résolution numérique utilisée.

y x

( )

i+1 y x

(

i+h

)

y x

( )

i +h.dxdy

( )

xi =yi+h.f x

(

i,yi

)

dy

dx(x)= f x,

(

y(x)

)

y(x0)=y0

⎨⎪

⎩⎪

y x

( )

i+1 =yi+h.k1+2k2+2k3+k4

6 avec

k1= f x

(

i,yi

)

k2= f xi+h 2,yi+h

2.k1

⎛⎝⎜ ⎞

⎠⎟

k3= f xi+h 2,yi+h

2.k2

⎛⎝⎜ ⎞

⎠⎟

k4 = f x

(

i+h,yi+h.k3

)

⎪⎪

⎪⎪

⎪⎪

⎪⎪

(3)
(4)

II.Améliorations progressives d’un modèle épidémiologique

II.1. Modèle de base : le modèle S-I-R de Kermack et McKendrick

On part généralement d’une population de N individus qui ne contient qu’une part infime de personnes infectées contagieuses. Ce nombre N est fixe -dans ce modèle de base- mais contient -par exemple- au fil du temps les personnes décédées par le virus. Elle feront partie du contingent des « Removed » (Retirés = Guéris (Recovered) + Immunisés ni contaminants ni contaminables + Personnes décédées sorties du circuit (de fait ni contaminantes ni contaminables)). S est l’initiale pour « Susceptible » (en anglais) : Personne a priori Saine mais susceptible de contamination. I est bien entendu l’initiale de « Infected ». On aura à tout instant : N(t)=N(0)=N= S(t)+I(t)+R(t) mais ce modèle ne fournira donc pas d’estimation du nombre de morts.

On pourra normaliser la population initiale c’est à dire choisir N=1 : ce qui revient à dire que S,I et R sont des pourcentages (ou des taux de personnes respectivement Saines, Infectées et Retirées). I(0) sera le taux initial de personnes infectées et son complément à l’unité sera le taux initial de personnes Saines S(0).

(R(0)=0).

On notera 𝜷 le taux de contamination moyen effectif par unité de temps : il est proportionnel au nombre de contacts par unité de temps et au taux de transmission effective du virus par contact. La catégorie de population Saine va décroitre de 𝜷.S(t).I(t) par unité de temps.

On notera 𝜸 le taux de décontagiosité par unité de temps (par guérison et immunisation, décès…) qui est aussi l’inverse de la durée D moyenne d’infection : 𝜸=1/D

On peut en profiter pour les relier au fameux R0 : nombre moyen de cas secondaires produits par un individu contaminé sur la durée de sa contagiosité. Il s ‘agit donc de 𝜷.D et donc de 𝜷/𝜸.

Mathématiquement, nous aboutissons à ce système d’équations différentielles gouvernant les taux de catégories R-I-S avec le temps t :

Vous pouvez choisir de coder -par une méthode d’Euler explicite- ce système d’équations non linéaires du premier ordre en Python puisqu’il servira de base aux modifications qui vont suivre. Au final, nous souhaitons pouvoir modifier facilement les taux 𝜷 et 𝜸 et observer les conséquences sur : le pic d’infection (instant de survenue, durée, intensité en % max infecté d’une population) mais également sur le temps d’atteinte (ou non) d’un taux de « Retirés » (suffisant par exemple à une situation d’immunité collective).

(Vacciner une proportion suffisante de la population avant le début d’une épidémie correspond également à

« Retirer » une proportion. Par exemple dans ce modèle S-I-R, une vaccination des 2/3 d’une population est nécessaire -pour éviter le pic épidémique- si le R0 (au moment de la fin de vaccination) vaut 3).

Il faut également choisir le pas temporel, la durée totale d’observation des évolutions et le taux initial d’Infectés dans la population.

𝜷 =0.9 et 𝜸=0.1. 𝜷 =0.2 et 𝜸=0.1

(5)

II.2. Modèle S-E-I-R : « Exposed » = Personnes infectées non infectieuses

Avoir été exposé au virus par contact avec une personne infectée peut conduire à une situation transitoire intermédiaire non contagieuse.

On tiendra désormais compte d’une catégorie de population qui a été exposée au virus mais qui n’est pas contagieuse. Il s’agit de tenir compte surtout de la durée d’incubation de la maladie : période pendant laquelle la personne est bien infectée mais ne peut encore contaminer autrui. On appelle alors taux d’incubation (par unité de temps) le coefficient 𝜶 qui égale l’inverse de la durée d’incubation.

La programmation attendue a désormais pour modèle cette situation :

Ecrivez un programme python (Euler explicite) permettant encore une représentation graphique des

évolutions temporelles des taux des 4 catégories et une modification facile des coefficients et des conditions initiales. (Dans un premier temps on prendra pour les coefficients : 𝜷 =1.75 ; 𝜸=0.5 ; 𝜶 =0.2 (5 jours d’incubation) et 1 infecté pour 1000 individus à l’instant initial)

II.3.Modèle S-E-I-R à population variable

On peut ajouter des taux de mortalité usuel (indépendant de l’épidémie) et un taux de natalité usuel.

Je vous invite également à définir un taux de létalité (concernant donc exclusivement les personnes infectées par le virus) pour accéder à deux taux supplémentaires :

-

La population totale P(t) (normalisée à la population initiale !) prenant en compte natalité, mortalité usuelle et létalité spécifique

-

Le taux de décès Q(t) relatif à la population normalisée initiale.

Enfin votre programme pourra donner le taux de décès final et le taux d’immunité final dont la pertinence n’est plus à démontrer.

Simulation par automates cellulaires : http://experiences.math.cnrs.fr/simulations/Covid19-idm-complete/

II.4.Un modèle structuré par tranches d’âge !!

La pandémie qui nous préoccupe actuellement est particulièrement sélective sur les différences tranches d’âge. Notre modèle de population uniforme ne rendra pas du tout compte de cet aspect.

Je reproduis ci-après les éléments d’une modélisation que vous trouverez sur internet à cette adresse : https://images.math.cnrs.fr/Modelisation-d-une-epidemie-partie-2.html

(6)

Références

Documents relatifs

[r]

[r]

La figure représente le champ des vitesses d’un solide animé d’un mouvement de rotation.. Relation cinématique du

[r]

[r]

Les prix indiqués sur le bon de commande sont valables sur toute la France métropolitaine, + 20 F par article pour Outre-Mer par avion et au-dessus de 5 kg nous nous réservons

Les prix indiqués sur le bon de commande sont valables sur toute la France mètropotitame, -f 20 F par artide pour Outre-Mer par avion et au-dessus de S kg nous nous réservons

Les prix indiqués sur le bon de commande sont valables sur toute la France métropolitaine, + 20 F par article pour Outre-Mer par avion et au-dessus de 5 Kg nous nous réservons