TangenteX.com

Les équations différentielles à retard

Pourquoi introduire un retard dans une équation différentielle ?

Lorsqu'il s'agit d'étudier l'évolution d'un système physique, nous avons pris l'habitude de chercher l'équation différentielle qui régit son évolution. Nous avons suivi cette démarche dans les pages de TangenteX, et vous avez sans doute suivi la même méthode en cours de physique en prépa ou à fac.

Si je m'en tiens à des systèmes simples, nous avons obtenu une équation différentielle dite 'ordinaire' (EDO) du premier degré, l'évolution d'une population de noyaux radioactifs par exemple, ou du second degré, le pendule simple par exemple. Cette équation est de la forme \( y'(t) = f(t, y(t)) \). L'intégration de cette équation nous donne une infinité de solutions et donc pour en déterminer une particulière, nous fixons la valeur initiale de l'évolution, la valeur de y(t) pour t = 0, que l'on note \(y(t_0) = y_0 \). La donnée de l'équation différentielle et de la condition initiale forment un problème de Cauchy. Il existe un théorème, le théorème de Cauchy-Lipschitz, qui nous garantit, sous certaines conditions, que dans ces conditions notre équation peut être intégrée et qu'elle ne possède qu'une seule solution. Tout cela est bien, et théoriquement ça marche très bien.

Examinons ce que cela signifie exactement. Selon mon équation différentielle, toute variation locale de mon système est instantanément répercutée globalement sur le comportement de mon système. L'équation différentielle ignore complétement l'histoire passée du système, histoire qui n'a aucune répercussion sur le présent. Seule la condition initiale résume l'histoire du système.

Ces remarques sont valables lorsqu'il s'agit d'équations aux dérivées partielles (EDP), comme celles que nous avons obtenues pour modéliser la diffusion thermique ou l'évolution d'un champ électromagnétique. Avec les EDP, la situation est un peu plus compliquée parce que souvent s'ajoutent aux conditions initiales des conditions aux limites du domaine d'intégration, le problème de Dirichlet de la diffusion thermique, voire des conditions sur les dérivées premières, la vitesse généralement.

Ce joli édifice, très efficace dans de nombreux cas, pose toutefois un problème fondamental : les systèmes ne réagissent jamais instantanément ! Certes, le délai de réaction est souvent négligeable à l'échelle de temps du système, mais ce n'est pas toujours le cas ! Imaginons par exemple un système qui contient une boucle de régulation. La régulation fait intervenir un transport d'information et un calcul. Ces mécanismes ne sont pas instantanés et peuvent même être longs. Nous voyons ce cas tous les jours en faisant des SCADA, des systèmes de contrôle/commande. Un autre exemple en dynamique des populations, dans le modèle de Lotka-Volterra par exemple. Le sysème différentiel proposé suppose que la variation positive de population, les naissances, sont immédiates. Mais tout le monde sait que ce n'est pas vrai : il faut tenir compte de la durée de gestation des femelles. De même, si l'on prive un individu de nourriture, il ne meurt pas immédiatement. Rien n'est vraiment immédiat, même la transmission de l'information ne peut pas être infiniment rapide, Einstein y veille...

Et de fait, cela se voit ! Les premiers modèles de régulation ont vite montré leurs limites expérimentales. Les modèles de dynamique de population "primitifs" ne collaient pas vraiment avec les résultats expérimentaux. Les modèles biologiques et biochimiques ne rendaient pas compte des constats expérimentaux. Bref, il fallait réagir !

Le premier mathématicien a évoquer la nécessité de prendre en compte le passé d'un système dans sa modélisation différentielle est le français Charles Emile Picard (Ulm 1874) en 1908, qui écrit "Nous pouvons réver d’équations fonctionnelles plus compliquées que
les équations classiques parce qu’elles renfermeront en outre des intégrales prises entre un temps passé très éloigné et le temps actuel, qui apporteront la part de l’hérédité
".

Puis vint le tour des ingénieurs dans les années 1940 et 1950, qui se heurtèrent à des problèmes de rétroactions non instantanées sur les premiers systèmes de contrôle/commande. Comme c'est souvent le cas, ce sont les applications militaires qui impulsèrent les travaux théoriques : il fallait faire fonctionner les servo-commandes de direction des fusées !

Les premiers travaux introduisant la notion de retard dans une équation différentielle sont l'oeuvre d'un ingénieur de l'Air Force (tiens donc !), Richard Bellman, en 1963. On trouve son ouvrage "Differential-Difference equations" sur le net. La théorie des équations différentielles à retard ou DDE (Delay Differential  Equations) est dûe à J.K Hale en 1977 dans son ouvrage "Theory of Functional Differential Equations". Le gros des travaux en physique, ingenierie et biologie/biochimie date des années 90 et 2000.

Sur le plan mathématique, la théorie des DDE est complexe. C'est un domaine en pleine évolution, avec de nombreux travaux de recherche dont vous trouverez les thèses sur le net.

Cependant, je vais essayer dans cette page, de montrer ce que sont les DDE à travers deux exemples : la fonction logistique et le modèle de Lotka-Volterra que nous avons déjà abordé sur TangenteX.

Les DDE - Définition

Revenons à notre problème de Cauchy pour une EDO de 1er ordre, sachant qu'il existe des méthodes pour transformer une EDO d'ordre supérieur en un système d'EDO de premier ordre. Il s'exprime ainsi :

\( \left\{ \begin{array}{lr}  y'(t) = f(t, y(t)) \\ y(0) = y_0 \end{array} \right. \) 

La solution particulière y(t), qui décrit le comportement du système est entièrement définie par la donnée de y'(t) et de la condition initiale \(y(t_0) = y_0 \).

Une équation différentielle à retard, que je noterai DDE ou équation à retard dans la suite, est une équation de la forme :

\( \left\{ \begin{array}{lr}  y'(t) = f(t, y(t), y_t) \\ y_{t_0}(\theta) = \phi (\theta)  \end{array} \right. \)

avec  \( \theta = t - \tau \) et \( y_t = y(t - \tau) \). La variable strictement positive \( \tau \) constitue le retard.

La condition initiale n'est plus une constante \( y_0\) mais une fonction \( \phi (\theta) \), et c'est là que réside toute la richesse de la famille des DDE. Car la fonction \( \phi \) peut être une fonction constante ou toute autre forme de fonction qui permet de modéliser le passé du système.

A noter qu'ici f n'est plus une fonction classique, mais ce qu'on appelle une fonctionnelle, une fonction dont une des variables est une fonction, ici la fonction \( y_t \).

Dans la présente page, je retiendrai la forme la plus simple d'une DDE, que l'on appelle l'équation différentielle à retard constant. Dans ce cas, la fonction \( \phi \) est une fonction constante. Notre problème de Cauchy devient donc :

\( \left\{ \begin{array}{lr}  y'(t) = f(t, y(t), y(t - \tau)) \\ y_{[t_0 - \tau, t_0]} = K  \end{array} \right. \)

Sous certaines conditions, la fonction f est continue et localement lipschitzienne, ce problème admet une solution unique.

En d'autres termes, nous cherchons une solution à notre équation différentielle en connaissant la valeur initiale constante du système dans un intervalle du passé \( [ -\tau , 0] \).

Dans le cas d'une EDO de premier ordre, il suffit de la connaissance d'un seul point représentant la condition initiale. Notre système est de dimension 1. Mais le cas d'une DDE, c'est la connaissance de l'infinité de points constituant l'intervalle \( [ -\tau , 0] \) qu'il faut obtenir. Notre système est de dimension infinie et c'est là que se situe la difficulté !

L'étude de la stabilité d'une DDE ou d'un système de DDE, notion importante en physique, s'appuie sur une généralisation des méthodes de Lyaponov pour les EDO, généralisation dûe à Krasovsky et Razumikhin, deux mathématiciens russes spécialistes de la théorie du controle des systèmes dynamiques. Dans la mesure où une DDE est de dimension infinie, la généralisation n'est pas simple ! Dans le cas d'une DDE à retard constant, c'est encore abordable. Vous en trouverez une approche simplifiée dans [2]§2.

Je ne vais pas entreprendre ici une étude mathématique des DDE. Si cela vous intéresse, vous trouverez de la matière dans [2]. Je vous propose juste d'aborder à travers deux exemples relativement simples l'utilisation de cet outil. J'en profiterai pour introduire une méthode de résolution numérique en Python avec le package ddeint.

J'ai choisi l'équation logistique et le modèle de Lotka-Volterra. Ils concernent tous les deux la dynamique des populations, ce qui n'est pas un hasard. La dynamique des populations est un des domaines de prédilection des DDE. C'est aussi parce que les exemples d'application en contrôle/commande sont un peu compliqués...

Application à l'équation logistique

Le premier modèle de dynamique des populations est l'oeuvre de Tomas Malthus en 1798. Son principe est simple : Malthus supposait que le taux de croissance d'une population est égal au produit d'une constante r par l'effectif de la population à un instant donné. Cette constante r est le taux de reproduction de la population c'est à dire la différence entre le taux de mortalité et le taux de natalité, la population étant supposée isolée (pas d'apport extérieur par immigration et pas de perte vers l'extérieur par émigration). Dit en français, c'est long; mais cela se traduit sous la forme d'une suite géométrique \( P_t = P_0(1 + r)^t \), avec \( P_0 \) la population initiale,  \( P_t \) pour le terme t de la suite. Ou encore, si je considère le modèle continu et non plus discret sous la forme d'une équation différentielle \( \dfrac{dP}{P} = rdt \). En intégrant cette équation, nous trouvons \( P(t) = P_0 e^{rt} \).

Le modèle malthusien est un modèle exponentiel. Il faut bien comprendre ce que cela signifie : aussi petit que soit r pourvu qu'il soit positif, la population deviendra infinie. Les modèles de croissance exponentielle sont redoutables autant qu'irréalistes. Irréalistes, car ils ne prennent pas en compte les facteurs physiques de limitation qui entravent sans recours une croissance infinie, les carburants de la croissance : énergie, nourriture dans le cas d'une population vivante, les autres ressources nécessaires à la population, l'espace. En d'autres termes, une croissance infinie dans un espace fini est impossible. Les "prophètes" qui nous promettent une croissance exponentielle devraient revoir leur physique : une croissance du PIB de 1% par an est un modèle de croissance exponentielle !

Pour l'histoire et l'éthique, je ne résiste pas à l'envie de citer Malthus lorsqu'il analysa son modèle : "Il faudrait limiter l'assistance aux pauvres, sans quoi leur population augmentera toujours plus". Sans commentaire...

Le modèle malthusien ne résistant pas à l'analyse, les savant de l'époque proposèrent rapidement des modèles plus réalistes, prenant en compte les facteurs de limitation. Le plus connu est celui de Verhulst en 1836, modèle connu sous le nom de modèle "logistique". Dans ce modèle, le taux de reproduction r n'est plus constant mais dépend de la taille de la population. Verhulst suppose logiquement que r est grand lorsque la population est faible et qu'il diminue lorsque la population grandit, en remarquant que plus la population est grande, plus les ressources sont consommées rapidement.

En traduisant ce modèle sous la forme d'une équation différentielle, nous obtenons l'équation de la logistique :

\( \dfrac{dP}{P} = r \left(1 - \dfrac{P}{K} \right)dt \)              (1)

avec r qu'on appelle en biologie le taux de croissance intrinsèque de la population et la constante K la capacité biotique, c'est à dire la taille maximum de la population atteignable en fonction des facteurs limitants, la population à l'équilibre.

Notons que l'on peut aussi l'écrire :

\( \dfrac{dP}{dt} = rP \left(1 - \dfrac{P}{K} \right) \)              (2)

forme que nous utiliserons plus tard.

L'équation logistique sans retard

Etude qualitative de l'équation de la logistique

Examinons la forme (2) de l'équation de la logistique. La présence du terme quadratique P2 nous dit sans équivoque qu'il s'agit d'une équation différentielle non linéaire.

Le terme de droite forme un polynôme du second degré, qui est ici factorisé. Ce polynôme possède deux racines P=0 et P=K, qui forment les points d'équilibre de l'équation de la logistique. La racine P=0 est triviale. La racine P=K nous indique que K représente l'effectif de population pour lequel la dynamique de la population est stable.

L'étude des signes de ce polynôme entre les racines P=0 et P=K montre que :

  • entre 0 et K, la fonction polynôme est positive, la population P va donc croître, ce qui a physiquement un sens. Si la population est plus petite que la population d'équilibre, elle va croître jusqu'à atteindre la population d'équilibre. Mais cela ne sera vrai que si P0, la population initiale est inférieure à K. Si P0 est supérieur à K, la fonction polynôme décroît pour tendre vers K.
  • Le maximum de la fonction polynôme est atteint pour K/2, ce qui signifie que la vitesse de croissance maximum de la population est obtenue lorsque son effectif est égal à la moitié de la population d'équilibre.

Cette brève étude qualitative peut être confirmée par l'analyse de la solution analytique de l'équation (2) et par son intégration numérique.

Solutions analytiques de l'équation de la logistique

L'équation de la logistique possède une solution analytique :

\( P(t) = \dfrac{K}{1 + \left(\dfrac{K}{P_0} - 1 \right)e^{-rt}}\)

L'étude de cette fonction confirme les points déduits de l'équation différentielle (2). En particulier, on constate que la limite de P(t) lorsque t tend vers l'infini est égale à K.

Intégration numérique de l'équation de la logistique

Le script Python Logistique.py propose une intégration numérique de l'équation de la logistique. Ce script, qui utilise odeint() pour l'intégration de l'EDO, ne comporte aucune originalité, si ce n'est la définition du système à intégrer :

def Logistique(N,t,r,K):
    Npoint = r*N*(1. - N/K)
    return Npoint

et les constantes du système :

r = 1.    # Taux de croissance intrinsèque
K = 40.   # capacité biotique
P0 = 10.  # taille initiale de la population

Voici la forme de la courbe obtenue :

Equation logistique sans retard

Vous pouvez faire varier la taille de la population initiale et les valeurs de r et de K pour valider les comportements vus plus haut.

Je ne ferai pas ici l'analyse de la signification de r et de K ni de leur influence sur la dynamique de la population. C'est un grand sujet d'étude pour nos amis de Math Spé Bio ! Remarquons simplement que nous n'observons plus une courbe exponentielle mais une sigmoïde, qui reflète la limitation de la taille de la population.

Les limitations du modèle de Verhulst

Le modèle logistique est beaucoup plus réaliste, mais cependant, il ne colle pas parfaitement aux observations expérimentales, que ce soit en biologie, en écologie ou en physique.

Parmi ces observations expérimentales, citons le cas classique de l'évolution de la population de mouches à viande (blowflies en anglais, Lucila cuprina en latin) en Australie. Les biologistes ont constaté qu'in situ les effectifs de la population évoluaient selon une fonction périodique. Et ça, ce n'est pas banal ! Car le modèle de Verhulst, ni aucune de ses variantes, n'est capable de produire une solution périodique ! Et le cas des populations de mouches à viande n'est pas isolé. En fait, les observations expérimentales concernent beaucoup d'autres espèces.

Une chose ne colle pas dans le modèle, une chose qui tient à la nature même d'une EDO. Une EDO explicite la variation instantanée d'une grandeur locale. Sa solution intégrale ne tient donc pas compte du délai nécessaire à la propagation de la variation. Elle ne tient pas compte du passé du système. Imageons la chose : on sait que la larve de la mouche à viande vit 11 jours, délai qui s'écoule entre la ponte des oeufs par la femelle et l'apparition des mouches. Pendant ce délai, la population de mouches reste constante. En résumé, la population de mouches à l'instant t dépend de la population des femelles mouches à l'instant t-11 jours, et encore en supposant qu'il ne se soit rien passé de spécial influant la vie des larves pendant ce délai.

Plus généralement, il existe beaucoup de systèmes physiques dont l'évolution à l'instant t dépend du passé du système, de l'état du système pendant l'intervalle entre t et t - quelque chose. Et pendant ce délai, l'état du système peut être stable, mais il peut aussi évoluer ! Imaginons que la population de fourmiliers mangeurs de larves de mouches augmente, que le nombre de larves diminue pendant le délai, que se passera-il s'agissant de la population à l'instant t ? Ou pour les physiciens, que se passera-t-il si la transmission de l'information est perturbée par une congestion du système automatique entre l'action de commande par un opérateur et l'exécution de la commande par le système ?

L'équation logistique avec retard constant

L'équation de la logistique à retard constant

G.E Hutchinson fut l'un des premiers, en 1948 dans son article "Circular causal systems in ecology", a introduire un délai dans l'équation de la logistique pour tenir compte des retards biologiques comme la gestation des femelles ou la maturation des larves. Il transforma notre EDO (2) en une DDE de la forme :

\( \dfrac{dP(t)}{dt} = rP(t) \left(1 - \dfrac{P(t - \tau)}{K} \right) \)         (3)

avec \( \tau \) constant représentant le délai.

Son intégration numérique

L'équation (3) n'a pas de solution analytique. Je vais donc l'intégrer numériquement à l'aide d'un package Python dédié aux DDE de Valentin Zulko, le package ddeint. Il en existe d'autres comme PyDDE de l'université d'Oxford ou encore Pydelay du MIT. Comme j'avais ddeint sous la main...

Le script LogistiqueRetard.py permet cette intégration numérique. Après l'import des packages courants scipy et matplotlib, il importe le package ddeint :

from ddeint import ddeint

La fonction qui définit notre DDE modèle est :

def LogistiqueRetard(Y,t,r,K,tau):
    return r*Y(t)*(1. - (Y(t - tau)/K))

L'état constant du système dans l'intervalle \( [-\tau, 0] \) est défini par une fonction in-line, EtatPasse étant la valeur de la constante d'état dans le passé :

Passe = lambda t:EtatPasse

L'intégration de la DDE est obtenue par :

P = ddeint(LogistiqueRetard, Passe, t, fargs=(r,K,tau))

Le reste des instructions est très classique.

Les résultats obtenus

Les paramètres du système sont r, K déjà rencontrés dans l'équation logistique sans retard et \( \tau \) le retard. Je vais m'intéresser au produit \( \lambda =  r \tau \), en traçant la courbe d'évolution de la population pour plusieurs valeurs de ce produit.

r = 1 tau = 1

La courbe intégrale obtenue avec ces valeurs de paramètres se présente ainsi :

Equation logistique avec retard

Son aspect est très différent de celui de la courbe intégrale de l'équation logistique sans retard. Le seul point commun est que l'effectif de la population tend vers K, la population d'équilibre mais d'une manière très différente. Plus de sigmoïde, mais une oscillation amortie autour de la valeur de K. Cette forme de courbe n'est pas sans rappeler celle d'un oscillateur non linéaire amorti, avec cette même tendance à converger vers le point d'équilibre.

Il est remarquable que la prise en compte du passé d'un système, introduit ici avec le retard, modifie complétement dans son essence sa dynamique. L'introduction du retard crée un système oscillant. C'est le terme quadratique \( P(t)P(t - \tau) \) qui créé une boucle de rétroaction (ou feedback) négative, provocant l'oscillation du système. Les boucles de rétroaction positive ou négative sont des éléments déterminants de l'analyse des systèmes dynamiques. On les retrouve par exemple dans les SCADA, les automatismes, mais aussi dans les systèmes climatiques, géophysiques et biologiques.

r = 1 tau = 1.5
Equation logistique avec retard

Nous observons sur cette courbe les mêmes oscillations amorties, avec un facteur d'amortissement plus faible. Nous ne sommes toujours pas dans le régime quasi-périodique que l'on constate dans beaucoup de résultats expérimentaux, dont ceux des populations de mouches à viande.

r = 1 tau = 2
Equation logistique avec retard

Changement de régime : nous quittons le régime amorti pour observer un régime périodique. Notre système a bifurqué, ce qui n'est guère étonnant s'agissant d'un système non linéaire.

Faites l'expérience : tracez cette courbe pour plusieurs valeurs de tau, en conservant r = 1. Faites varier tau entre 1.5 et 1.8. Vous observerez le changement de régime. On démontre théoriquement que ce changement de régime a lieu pour \( \lambda = \dfrac{\pi}{2} \) pour l'équation de la logistique avec retard, soit pour r=1 tau = 1.57 environ. Ce phénomène s'appelle la bifurcation de Hopf, grand classique de la dynamique des systèmes non linéaires (voir [1]§3.2 et [3] §7).

Vous pourrez aussi tracer le portait de phase du système en vous inspirant des outils décrits dans la page de TangenteX consacrée à la découverte du chaos.

L'apparition d'un point de bifurcation laisse penser que les systèmes modélisés par des DDE peuvent devenir chaotiques. C'est le cas, vous en trouverez des exemples dans [2].

Cette notion de bifurcation n'est pas seulement théorique. Les observations sur la dynamique des populations montrent des situations réelles de basculement de la dynamique à partir de variations de paramètres environnementaux. Le système Terre est rempli de systèmes non linéaires qui interagissent, et qui peuvent bifurquer. C'est le cas de la biosphère comme de notre climat. Pas sûr que les bifurcations soient bénéfiques, alors évitons-les si possible !

Le même cas se rencontre en ingénierie, où les systèmes retardés sont la règle. Ces systèmes sont difficiles à modéliser, particulièrement lorsqu'ils interagissent beaucoup avec leur environnement, ce qui est le cas des systèmes de contrôle/commande, les SCADA. Dans ces systèmes, les bifurcations se traduisent par des pannes ou pire encore, par des comportements erratiques. D'où l'importance essentielle des tests pour identifier ces points de bifurcation, importance pas toujours comprise par les équipes chargées de construire ces systèmes.

Application au modèle de Lotka-Volterra

J'ai déjà abordé le modèle de Lotka-Volterra, ou modèle Proies-Prédateurs, dans une autre page de TangenteX. Aussi, je ne ferai qu'un bref rappel du modèle sans retard pour aborder le modèle de Lotka-Volterra avec retard.

Le modèle de Lotka-Volterra standard

Le modèle de Lotka-Volterra est un modèle d'interactions entre deux populations, l'une de proies et l'autres de prédateurs. Il est régi par le système différentiel suivant :

\( \left\{ \begin{array}{lr}  x'(t) = x(t)(a - by(t)) \\ y'(t) = y(t)(-c + dx(t)) \\ x(0) = x_0 , y(0) = y_0  \end{array} \right. \)

x(t) mesure l'évolution de la population des proies et y(t) celle des prédateurs. a, b, c et d sont des paramètres strictement positifs. x0 et y0 fixent les effectifs initiaux des populations de proies et de prédateurs respectivement. Les paramètres sont ainsi définis :

  • Le paramètre a figure le taux de croissance de la population des proies en l'absence de prédateur.
  • Le paramètre c figure le taux de décroissance de la population des prédateurs en absence de proie.
  • Le paramètre b figure le taux de prédation, c'est à dire le taux de décroissance de la population des proies dû aux prédateurs.
  • Le paramètre d figure le taux de variation de la population de prédateurs, qui est proportionnel à la population de proies disposées à se faire manger.

Le terme ax(t) représente l'accroissement de la population de proies en l'absence de prédateurs. Les termes -bx(t)y(t) et dx(t)y(t) représentent les interactions entre populations, la population de proies diminue suite à ces interactions et la population de prédateurs augmente. Le terme -cy(t) traduit la diminution du nombre de prédateurs en l'absence de proie.

Le script LotkaVolterraRetard1.py résoud le système différentiel à l'aide de ddeint() :

def LotkaVolterraRetard(Y,t,tau,a,b,c,d):
    x,y = Y(t)
    xd,yd = Y(t - tau)
    return array([x*(a - b*yd), -y*(c - d*xd)])

avec les paramètres :

a = 0.5 # taux de croissance intrinsèque proies
b = 0.5 # taux de prédation
c = 0.5 # taux de décroissance prédateurs sans proies
d = 0.5 # taux de variation population prédateurs

Les populations initiales sont fixées à :

x0 = 1     # population initiale des proies
y0 = 2      # population initiale des prédateurs

Dans un premier temps, la valeur du retard tau est fixée à 0. Les courbes d'évolution des deux populations sont :

Modèle de Lotka-Volterra sans retard

Les courbes d'évolution des deux populations oscillent périodiquement, en étant légèrement dephasées. L'amplitude des courbes augmente progressivement. L'étude mathématique du système différentiel permet de quantifier ces différentes observations.

Le portait de phase se présente ainsi :

Modèle de Lotka-Volterra sans retard - Portait de phases

Nous observons que les trajectoires ne sont pas fermées. Elles forment un cycle limite autour d'un bassin d'attraction, ce qui confirme le caractére périodique de la dynamique du système et sa nature non linéaire.

Le modèle de Lotka-Volterra avec retard

Modifions maintenant la valeur de tau pour introduire un retard. Fixons par exemple tau = 0.2. Nous obtenons la courbe d'évolution des effectifs :

Modèle de Lotka-Volterra avec retard

Les courbes n'ont plus rien de périodique ! La forme des courbes varie en fonction de la valeur du retard que vous choisirez. Vous pouvez également modifier la valeur des différents paramètres a,b,c et d pour modéliser des populations données. Vous vous apercevrez très vite que le système devient instable. Cel est dû en petite partie à l'algorithme choisi pour intégrer le système différentiel à retard, ddeint n'est pas parfait, mais aussi en très grande partie à l'instabilité structurelle d'un système différentiel non linéaire à retard.

Le portait de phase se présente ainsi :

Modèle de Lotka-Volterra avec retard - Portait de phases

On note un déplacement du bassin d'attraction et une dégradation très nette de la convergence vers le bassin d'attraction. Cela laisse présumer qu'il existe des valeurs des paramètres pour lesquelles le système devient chaotique. A vous de chercher...

Bibliographie

La littérature française est assez pauvre sur le sujet ! Pour rédiger cette page, je me suis appuyé sur trois ouvrages :

  • [1] "Applied Delay Differential Equations" de Thomas Erneux. Cet ouvrage, assez accessible, propose des exemples de DDE dans différents domaines d'application : biologie, chimie, mécanique et lasers. Il n'aborde pas le traitement numérique des DDE.
  • [2] "Dynamics of Nonlinear Time-Delay Systems" de M.Lakshmanan. C'est un ouvrage plus théorique, qui aborde de nombreuses propriétés des DDE (stabilité, feedback, chaos). Il n'aborde pas lui non plus le traitement numérique des DDE.
  • [3] "Dynamical Systems with Applications using Python" de Stephen Lynch. Le chapitre 12 de cet ouvrage traite le cas des DDE sous l'angle numérique en présentant succinctement plusieurs méthodes d'intégration numériques illustrées par des scripts Python. Il présente une approche de l'équation logistique et du modèle de Lotka-Volterra.

Il existe une littérature spécialisée dans l'application des DDE aux systèmes de contrôle/commande et aux automatismes. Je ne l'ai pas citée, car le sujet dépasse largement le cadre de cette page. Voir par exemple les modèles de type Strejc-Broïda en contrôle/commande.

Les DDE et leurs applications pourraient constituer d'excellents sujets de TIPE, dans les domaines de la biologie, de la physique des lasers ou de l'automatisme industriel. Ils seraient originaux car je n'ai pas connaissance qu'un élève de Spé se soit coller au sujet...

Les scripts Python de cette page sont téléchargeables dans la bibliothèque de codes de TangenteX.

Contenu et design par Dominique Lefebvre - www.tangenteX.com octobre 2020    Licence Creative Commons    Contact :