Le modèle S.Z.R.
Bonjour j'ai un problème pour tracer P
voici l'exercice
Le modèle S.Z.R. est une variation du modèle S.I.R proposée par Munz, Hudea, Imad et Smith en 2009 pour modéliser une apocalypse zombie.
À chaque instant on décide de diviser la population en trois catégories (qu’on appelle « compartiments » dans le langage de l’épidémiologie)
- les individus « Susceptibles » ou « Sains » (S) : ceux qui n’ont jamais eu la maladie, et peuvent la contracter ;
- les individus « Zombies » (Z) ;
- les individus « Rétablis » (R, comme « Recovered » en anglais) : les personnes décédées qui ont la faculté de revenir à la vie (terme $\zeta R$) mais aussi les individus débarrassés de leur infection (suite à un coup de hache bien placé).
On pourrait les appeler
- $S$ les vivants
- $Z$ les morts-vivants
- $R$ les morts
On travaillera avec des variables normalisées : leur valeur est comprise entre $0$ et $1$ et représente une fraction de la population totale.
Le modèle s’écrit $$
\begin{cases}
S'(t)=-\beta S(t)Z(t)\\
Z'(t)=\beta S(t)Z(t)+\zeta R(t)-\alpha S(t) Z(t)\\
R'(t)=\alpha S(t)Z(t)-\zeta R(t)
\end{cases}
$$ Testons ce modèle avec les coefficients
- $\alpha=1$ [humains sains moyennement violents]
- $\beta=0.5$ [zombies peu agressifs]
- $\zeta=0.25$ [résurrection des zombies non négligeable]
Dans la suite, considérons les données initiales:
- $Z(0)=0.05$
- $S(0)=0.95$
- $R(0)=0$
On simulera pour $t\in[0;60]$ jours.
Calculer la solution approchée obtenue par la méthode d'Euler progressif avec $61$ points.
Afficher sur le même repère $t\mapsto S(t)$, $t\mapsto Z(t)$, $t\mapsto R(t)$ et $t\mapsto P(t)$.
Voici ce que j'ai fait.
[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]
voici l'exercice
Le modèle S.Z.R. est une variation du modèle S.I.R proposée par Munz, Hudea, Imad et Smith en 2009 pour modéliser une apocalypse zombie.
À chaque instant on décide de diviser la population en trois catégories (qu’on appelle « compartiments » dans le langage de l’épidémiologie)
- les individus « Susceptibles » ou « Sains » (S) : ceux qui n’ont jamais eu la maladie, et peuvent la contracter ;
- les individus « Zombies » (Z) ;
- les individus « Rétablis » (R, comme « Recovered » en anglais) : les personnes décédées qui ont la faculté de revenir à la vie (terme $\zeta R$) mais aussi les individus débarrassés de leur infection (suite à un coup de hache bien placé).
On pourrait les appeler
- $S$ les vivants
- $Z$ les morts-vivants
- $R$ les morts
On travaillera avec des variables normalisées : leur valeur est comprise entre $0$ et $1$ et représente une fraction de la population totale.
Le modèle s’écrit $$
\begin{cases}
S'(t)=-\beta S(t)Z(t)\\
Z'(t)=\beta S(t)Z(t)+\zeta R(t)-\alpha S(t) Z(t)\\
R'(t)=\alpha S(t)Z(t)-\zeta R(t)
\end{cases}
$$ Testons ce modèle avec les coefficients
- $\alpha=1$ [humains sains moyennement violents]
- $\beta=0.5$ [zombies peu agressifs]
- $\zeta=0.25$ [résurrection des zombies non négligeable]
Dans la suite, considérons les données initiales:
- $Z(0)=0.05$
- $S(0)=0.95$
- $R(0)=0$
On simulera pour $t\in[0;60]$ jours.
Calculer la solution approchée obtenue par la méthode d'Euler progressif avec $61$ points.
Afficher sur le même repère $t\mapsto S(t)$, $t\mapsto Z(t)$, $t\mapsto R(t)$ et $t\mapsto P(t)$.
Voici ce que j'ai fait.
def euler_progressif(phi1,phi2,phi3,tt): uu = [Z0] ww = [S0] vv = [R0] for i in range(len(tt)-1): uu.append(uu[ i]+h*phi1(tt[ i],uu[ i],ww[ i],vv[ i])) ww.append(ww[ i]+h*phi2(tt[ i],uu[ i],ww[ i],vv[ i])) vv.append(vv[ i]+h*phi3(tt[ i],uu[ i],ww[ i],vv[ i])) return [uu,ww,vv] [uu_ep, ww_ep,vv_ep] = euler_progressif(phi1,phi2,phi3,tt) print(uu) figure(figsize=(20,20)) plot(tt,uu_ep) plot(tt,ww_ep,'*') plot(tt,vv_ep,'--')Pour commencer ma démarche est elle juste ? Deuxième question je n’arrive pas à tracer $P $ sachant que $P$ est $P(t)=S(t)+Z(t)+R(t).$
[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Normalement, $P$ est constante et égale à $1$ puisque représente toute la population ?
Cordialement,
Rescassol
j'ai peut êtres trouver la solution en créant P Mon graphe est il cohérent ?
[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]
Voilà ce que j'obtiens.
Cordialement,
Rescassol
Une idée de mes erreurs ?
Je ne sais pas, ton code ne compile pas chez moi.
J'utilise Pyzo 4.73 avec Python 3.72 sous Windows 10.
C'est la ligne
phi1 = lambda t,s,z,r : -b*s*z
qui produit la première erreur:
TypeError: can't multiply sequence by non-int of type 'float'
D'autre part, tu peux vérifier tes équations de départ et tes conditions initiales.
Cordialement,
Rescassol
Tu t'es trompé dans l'ordre de tes $u,v,w$.
Si tu avais gardé les lettres $S,Z,R$, ce ne serait pas arrivé.
Cordialement;
Rescassol
Soit $P(t)=S(t)+Z(t)+R(t)$. Montrer que $P$ est un invariant.
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]
> Montrer que $P$ est un invariant.
C'est évident, sa dérivée est nulle.
Cordialement,
Rescassol
Voilà mon propre code:
Cordialement,
Rescassol
Le modèle S.Z.R. est une variation du modèle S.I.R proposée par Munz, Hudea, Imad et Smith en 2009 pour modéliser une apocalypse zombie.
En 2013 deux biologistes Witwoski et Blais proposent une alternative à ce modèle, le modèle SEZR.
À chaque instant on décide de diviser la population en quatre catégories (qu’on appelle « compartiments » dans le langage de l’épidémiologie):
- les individus « Susceptibles » ou « Sains » (S) : ceux qui n’ont jamais eu la maladie, et peuvent la contracter ;
- les individus « Exposed » : personnes infectées en passe de devenir zombies mais pas encore contagieuses ;
- les individus « Zombies » (Z) ;
- les individus « Rétablis » (R, comme « Recovered » en anglais) : les personnes ou les zombies décédées.
Au contact des zombies, les individus sains passent temporairement dans le groupe E au taux $\beta$. Les individus du groupe E deviennent inexorablement des zombies à un taux $\zeta$. Les individus sains peuvent, en se suicidant, intégrer directement la classe R au taux $\delta$. Enfin, en visant la tête, les individus sains peuvent se débarrasser définitivement des zombies au taux $\alpha$.
On travaillera avec des variables normalisées : leur valeur est comprise entre $0$ et $1$ et représente une fraction de la population totale.
Le modèle s’écrit $$
\begin{cases}
S'(t)=-\beta S(t)Z(t)-\delta S(t)\\
E'(t)= \beta S(t)Z(t)-\zeta E(t)\\
Z'(t)= \zeta E(t)-\alpha S(t) Z(t)\\
R'(t)= \alpha S(t)Z(t)+\delta S(t)
\end{cases}
$$ Pour le film *La Nuit des Morts-Vivants* ils ont détérminé
- $\alpha=0.9$ [humains sains moyennement violents]
- $\beta=1.1$ [zombies très agressifs]
- $\zeta=3.6$ [résurrection des zombies]
- $\delta=0$
Dans la suite, considérons les données initiales:
- $Z(0)=0.05$
- $S(0)=0.95$
- $R(0)=0$
On simulera pour $t\in[0;60]$ jours
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]
.
1) Ce message devrait être dans ton précédent fil
2) A quoi sert d'introduire $\delta$ s'il est nul ?
3) Il n'y a pas grand chose à modifier dans mon code du fil d'à côté pour modéliser ça.
4) Ton énoncé ne donne pas $E(0)$.
Cordialement,
Rescassol
Je ne sais pas de qui c'est un oubli, mais ça manque.
On a besoin de toutes les conditions initiales.
Il est aussi possible que $E(0)=0$ soit une conséquence d'un raisonnement physique, je ne sais pas.
Tu n'as pas dit si c'était un exercice d'un cours de mathématiques, ou de programmation, ou de biologie ...
Cordialement,
Rescassol
mais hormis E(0)
mon graphe est il cohérent?