Utilisation de XPPAUT Table des mati`eres
Transcription
Utilisation de XPPAUT Table des mati`eres
TD Master 1 ENS Utilisation de XPPAUT Jean-Olivier Irisson [email protected] Table des matières 1 Écriture du modèle 1.1 Le fichier de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Amélioration des performances de XPPAUT . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 2 Première approche de 2.1 Démarrage . . . . 2.2 Les fenêtres . . . 2.3 Les menus . . . . 3 3 3 3 XPPAUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Intégrer une équation et tracer une chronique 4 Étudier un système dans l’espace des phases 4.1 Intégrer dans l’espace des phases . . . . . . 4.2 Examen des données . . . . . . . . . . . . . 4.3 Modification du code XPPAUT . . . . . . . 4.4 Étude des isoclines et des points fixes . . . 3 . . . . 4 5 5 5 6 5 Le comportement du système varie en fonction des valeurs des paramètres 5.1 Changer les paramètres à la main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Étudier un ensemble de valeurs de paramètre pour une même condition initiale . . . . . . . . 5.3 Réaliser un diagramme de bifurcations “à la main” . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 7 6 L’analyse de bifurcations avec AUTO 6.1 Comment démarrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Les menus de AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Continuer un équilibre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Réaliser une continuation en deux dimensions : commencer un diagramme 6.5 Compléter le diagramme de bifurcations . . . . . . . . . . . . . . . . . . 7 7 7 8 8 8 7 Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Utilisation de XPPAUT Introduction XPPAUT est un logiciel permettant l’étude de systèmes dynamiques, notamment ceux représentés par des équations différentielles. Ce TD a pour objectif d’utiliser ce logiciel pour analyser un système d’équations modélisant l’évolution d’un système biologique. Nous verrons successivement comment : – intégrer numériquement une équation ; – analyser le comportement asymptotique du système dans l’espace des phases ; – étudier les changements de comportement asymptotique lorsque les valeurs de certains paramètres changent (analyse de bifuration) 1 1.1 Écriture du modèle Le fichier de base Pour utiliser XPPAUT il faut lui fournir un fichier codant pour le système d’équation différentielles. Ce fichier porte l’extension .ode et doit contenir au minimum : – l’équation ou les équations, sous la forme dX dt = · · · – les définitions des fonctions éventuellement utilisées dans les équations – les conditions initiales de l’intégration pour les variables – les valeurs des paramètres, en différenciant ceux qui pourront être variables de ceux qui resteront fixes Par exemple, construisons un fichier pour un modèle de flux d’ions à travers une membrane passive. Ce modèle peut s’écrire : dV = gL (VL − V ) + I (1) dt Où gL est la conductance limite de la membrane, V le courant électrique en Volts, VL le courant limite et I un flux de fuite. Le fichier .ode de XPPAUT devra donc s’écrire ainsi : # Modele de membrane simple # # Equation dv/dt=gl*(vl-v)+i # Rem: PAS D’ESPACE entre le nom, le signe égal et la valeur des variables # Rem: Décimales marquées par un point (1.5) et pas une virgule (1,5) # Conditions initiales init v=0 # Parametres variables param gl=0.1,vl=60 # Parametres fixes number i=0.1 # done 1.2 Amélioration des performances de XPPAUT Avec un tel fichier, lors de l’intégration, seule la variable V sera stockée et pourra être visualisée. Pourtant, il serait également intéressant de stocker la valeur du flux indépendamment du flux de fuite, à savoir gL (VL − V ). 2 Utilisation de XPPAUT Pour être stockée, ce flux doit défini comme quantité auxiliaire. Néanmoins, les quantités auxiliaires ne peuvent être utilisées qu’une fois et ne peuvent donc pas être combinées pour définir une autre quantité. Il est donc plus judicieux définir des fonctions réutilisables (des quantités fixes) et de stocker/combiner ensuite ces fonctions dans des quantités auxiliaires ou dans la définition du système. De plus, de cette façon, ces fonctions ne sont calculées qu’une seule fois. Ici, cela ne change pas grand chose vu la simplicité du système étudié, néanmoins pour des modèles plus complexes où une même fonction est appelée plusieurs fois dans le fichier il est intéressant de ne réaliser le calcul qu’une fois. Modifions le fichier en conséquence : # Modele de membrane simple # # Equation dv/dt=fluxfix+i # Quantite fixe définissant le flux indépendamment des fuites fluxfix=gl*(vl-v) # Quantite auxiliaire aux fluxaux=fluxfix # Conditions initiales init v=0 # Parametres variables param gl=0.1,vl=60 # Parametres fixes number i=0.1 # done 2 2.1 Première approche de XPPAUT Démarrage Il faut lancer XPPAUT avec comme argument le nom de fichier .ode. Pour cela : xppaut /path/to/the/model.ode Intéressons nous à la fenêtre par défaut de XPPAUT, Figure 1 2.2 Les fenêtres Les fenêtres iconifiées permettent d’avoir accès aux valeurs des variables (conditions initiales : ICs), des paramètres (Param), de visualiser les équations (Eqns) et les valeurs des variables et des quantités auxiliaires au cours de l’intégration (Data). Figure 2. 2.3 Les menus L’accès aux menus peut se faire au moyen de la souris ou au clavier en utilisant les raccourcis. La touche correspondant au raccourci pour un menu est la lettre en majuscule dans le mot : F pour File, U pour nUmerics etc. Figures 3, 4, 5, 6, 7 et 8 3 Intégrer une équation et tracer une chronique Pour intégrer, allons dans le menu Initialconds puis Go. L’intégration se fait à partir des conditions initiales par défaut, spécifiées dans le fichier .ode, pour le temps et avec la précision définis par défaut 3 Utilisation de XPPAUT dans les paramètres de XPPAUT (menu nUmerics). L’objectif est de faire une sortie graphique propre d’une chronique (variable en fonction du temps) de cette intégration. Pour l’instant, la courbe est petite et peu visible. Pour adapter la fenêtre aux données : Window/zoom puis Fit. Ensuite nous voulons colorer la courbe et lui mettre une légende. Pour cela : Graphic stuff > Freeze > Freeze. Dans le menu qui apparaı̂t, sélectionner une couleur différente de 0 et mettre une légende dans la case Key. Imprimons cette légende sur le graphique : Graphic stuff > Freeze > Key > Key, puis positionner la légende avec la souris. Il ne nous reste plus qu’à faire une sortie postscript de ce graphique : Graphic stuff > Postscript. Et voilà ! Si vous avez fini, modifiez la valeur de gl à 0.05 dans la fenêtre Param, tracez une nouvelle courbe, colorez la différemment et faite une sortie postscript des deux courbes. 4 Étudier un système dans l’espace des phases Considérons maintenant le système qui nous intéresse. Le modèle s’écrit : ∂α(x1 ) ∂β(x1 , x2 n1 − n2 ẋ1 = M1 .n1 (x1 , x2 ) − ∂x1 ∂x1 ∂β(x1 , x2 ) ẋ2 = 1.n2 (x1 , x2 ) e n1 ∂x2 (2a) (2b) Dans lequel on injecte les valeurs de densité à l’équilibre : n¯2 (x1 , x2 ) = n¯1 (x1 , x2 ) = r1 − α(x1 )n¯1 β(x1 , x2 ) r2 eβ(x1 , x2 ) (3a) (3b) et les fonctions α(x1 ) et β(x1 , x2 ) : α(x1 ) β(x1 , x2 ) = α0 + α2 (x1 − x10 )2 " 2 # 2 x2 x2 x1 x1 = β0 exp − + 2β3 − β1 β1 β2 β2 (4) (5) Il faut traduire cela en langage XPPAUT. De plus, nous voulons suivre les valeurs de n¯2 . Le fichier est donc celui ci # Body size evolution # Lotka-Voltera based adaptive dynamics # Equations dx1/dt= M1 * n1bar(x1,x2) * (-da(x1)*n1bar(x1,x2) - d1b(x1,x2)*n2bar(x1,x2)) dx2/dt= 1 * n2bar(x1,x2) * (e*d2b(x1,x2)*n2bar(x1,x2) ) # Functions a(x1)= a0 + a2 * (x1 - x10)^2 b(x1,x2)= b0 * exp(-(x1/b1)^2 + 2*b3*(x1/b1)*(x2/b2) - (x2/b2)^2) da(x1)= 2*a2*(x1 - x10) d1b(x1,x2)= b(x1,x2) * (-2*x1/(b1^2) + 2*b3*(1/b1)*(x2/b2)) d2b(x1,x2)= b(x1,x2) * (-2*x2/(b2^2) + 2*b3*(x1/b1)*(1/b2)) n1bar(x1,x2)= r2/(e * b(x1,x2)) n2bar(x1,x2)= (r1 - a(x1) * n1bar(x1,x2))/b(x1,x2) 4 Utilisation de XPPAUT aux n2barAux= n2bar(x1,x2) # Initial conditions init x1=0,x2=0 # Varying parameters param e=0.075,M1=1,x10=0 # Fixed parameters number r1=0.5,r2=0.05 number a0=0.5,a2=10 number b0=1,b1=0.22,b2=0.25,b3=0.6 done 4.1 Intégrer dans l’espace des phases L’espace des phase d’un système est l’espace de ses variables. C’est donc ici le plan (x1 , x2 ) dans lequel on pourra étudier l’évolution de la taille corporelle de la proie et du prédateur. Cette taille est une mesure relative et s’étend, pour chaque variable, sur ] − ∞, +∞[. Nous allons l’étudier autour de (0,0). Pour cela, créez une nouvelle fenêtre où l’on représentera x1 et x2 dans [−0.5, 0.5] : Viewaxes > 2D et remplir les champs demandés. Ensuite faire de nombreuses intégrations à partir de conditions initiales définies par la souris : Initialconds > mIce et observer le comportement des solutions. On s’aperçoit que les phénomènes intéressants se produisent proches de (0,0). Zoomer pour les voir : Window/zoom > Zoom In. Pour réaliser plusieurs intégrations à partir d’un gradient de conditions initiales nous pouvons utiliser la fonction Initialconds > Range et colorer différemment les courbes. Le faire pour x1 et pour x2 . 4.2 Examen des données La fenêtre Data permet de visualiser les valeurs que prennent x1 et x2 (qui sont tracées) mais aussi les valeurs des quantités auxiliaires que nous avons définies, ici n¯2 . Prenons le cas d’une simulation qui converge. Nous pouvons verifier que x1 et x2 convergent vers zéro en intégrant plusieurs fois à partir du dernier point (Initialconds > Last) et en observant les données. Prenons ensuite une simulation qui diverge. Dans ce cas, la condition initiale résulte en n¯2 < 0 et en conséquence, les pas suivants aboutissent à des erreurs : nan = not a number. Au vu de la signification du modèle, cela est logique. En effet, n¯2 est une taille de population à l’équilibre, elle ne peut être négative. Il nous faut donc modifier la représentation du modèle dans XPPAUT pour tenir compte de cette contrainte. 4.3 Modification du code XPPAUT Il nous faut donc introduire une fonction de test qui empêche n¯2 de passer en dessous de zéro. Le fichier .ode correspondant est celui-ci : # Body size evolution # Lotka-Voltera based adaptive dynamics [...] n1bar(x1,x2)= r2/(e * b(x1,x2)) 5 Utilisation de XPPAUT n2barTemp(x1,x2)= (r1 - a(x1) * n1bar(x1,x2))/b(x1,x2) n2bar(x1,x2)= if(n2barTemp(x1,x2)>0)then(n2barTemp(x1,x2))else(0) aux n2barAux= n2bar(x1,x2) [...] 4.4 Étude des isoclines et des points fixes De nouvelles intégrations peuvent être lancées avec cette version plus correcte du modèle. Son comportement peut être étudié plus précisément. Les intégrations, quand elles ne divergent pas, semblent converger vers 3 points. XPPAUT peut nous permettre de les identifier plus précisément. Pour cela, nous pouvons commencer par lancer plusieurs simulations afin de localiser globalement les points fixes (vers lesquels les variables convergent). Ensuite, le menu Sing pts permet de les identifier : à partir des dernières conditions initiales (Go), à partir d’un essai avec la souris (Mouse), ou en lançant un nombre donné de simulations à des endroits aléatoires dans un espace donné (monte cAr). Essayer les trois méthodes. XPPAUT donne les valeurs et la stabilité de ces points. La précision du logiciel dans la recherche de ces points est réglée dans le menu nUmerics (Figure 5). Une autre façon de visualiser les points de convergence du système est l’analyse de ses isoclines nulles (les courbes sur lesquelles x˙1 = 0 ou x˙2 = 0). En effet, à l’intersection de ces courbes, x˙1 = 0, x˙2 = 0 et le système n’évolue plus. Ces intersections sont des points fixes. XPPAUT peut tracer pour nous ces isoclines : Nullclines > New. Là encore, la précision du logiciel dans le tracé des isoclines est réglée dans le menu nUmerics (Figure 5). 5 Le comportement du système varie en fonction des valeurs des paramètres Ce qui nous intéresse plus particulièrement dans le cas des systèmes biologiques c’est de tester la robustesse d’un type de solution à une variation des paramètres. Cela revient à se demander si, quand les conditions changent, le système s’adapte ou change totalement de comportement. Dans les conditions utilisées précédemment, les tailles de la proie et du prédateur convergent vers un point où le prédateur exploite le mieux sa proie mais ou celle ci exploite également au mieux son milieu : (0,0). Est-ce toujours le cas ? 5.1 Changer les paramètres à la main Une première solution consiste à explorer pas à pas le système en changeant les valeurs des paramètres une par une. Nous changerons les valeurs de e et de x10 . Pour cela, trois solutions méthodes sont disponibles : 1. menu Parameters 2. fenêtre Param 3. curseur Par/Var ? : cliquez sur Par/Var ?, réglez le paramètre d’intérêt, sa valeur actuelle, ses valeurs max et min puis lancez des simulations. La valeur de e peut être changée en deplaçant le curseur, une nouvelle simulation est lancée à partir des dernières conditions initiales et avec la nouvelle valeur de e. Lancez des simulations avec des valeurs de e entre 0.05 et 0.2. 6 Utilisation de XPPAUT 5.2 Étudier un ensemble de valeurs de paramètre pour une même condition initiale Ceci est possible en utilisant la fonction Initial conds > Range et en faisant un gradient de paramètre et non de variables. Faites un gradient de 20 valeurs de e entre les même bornes que ci-dessus. 5.3 Réaliser un diagramme de bifurcations “à la main” Les bifurcations sont des changements de type de comportement asymptotique du système. Par exemple, pour notre modèle nous avons pu constater le passage d’un équilibre stable à un cycle stable. Un diagramme de bifurcation représente les zones dans lesquelles le comportement est identiques sur l’espace des paramètres. À l’aide des méthodes précédentes, essayez de tracer un tel diagramme dans l’espace (e, M1 ) et dans l’espace (e, x10 ). Etudiez le comportement et les isoclines du système dans chaque zone. 6 L’analyse de bifurcations avec AUTO Nous avons pu remarquer lors des simulations que le comportement asymptotique du système changeait selon la valeur de e notamment. Nous allons ici tenter d’identifier toutes les combinaisons de valeurs de paramètres pour lesquelles le comportement du système change. L’ensemble de ces valeurs de bifurcations nous permettra de tracer une diagramme de bifurcation, dans différents plans. 6.1 Comment démarrer ? Pour démarrer il faut partir d’un système à l’équilibre donc soit d’un point fixe soit d’un cycle. Démarrer d’un cycle suppose en connaı̂tre la période (qu’il faut fournir à XPPAUT) et complique donc les choses. Nous allons démarrer d’un point fixe. Plaçons nous au point défini par les paramètres par défaut. Il faut se rendre à l’équilibre. Pour cela intégrez le système depuis une condition initiale telle que (0.1,0.1). Ensuite Initialconds > Go. Puis pour être sûr d’être à l’équilibre, réintégrez le système plusieurs fois en repartant toujours du dernier point calculé : Initialconds > Last. Vous pouvez vérifier au fur et à mesure que les valeurs de x1 et x2 varient de moins en moins dans la fenêtre Data. Quand ces valeurs ne varient plus sensiblement, nous sommes à l’équilibre et pouvons passer à l’analyse de bifurcation. Pour commencer l’analyse, il faut appeler un autre logiciel contenu dans XPPAUT et nommé AUTO. Pour cela File > Auto. 6.2 Les menus de AUTO La fenêtre d’AUTO est présentée dans la Figure 9. Pour lancer la continuation de notre équilibre, il faut paramétrer AUTO en passant successivement dans plusieurs menus. Dans la fenêtre Parameter (Figure 10) sont indiqués les paramètres disponibles pour l’analyse de bifurcation. Ce sont ceux que nous avons laissé variables et donc définis comme param dans le fichier .ode. Ensuite, dans la fenêtre Axes se présentent plusieurs options de type de plot. Ceux qui vont nous intéresser sont détaillés dans la Figure 11. Enfin, la fenêtre Numerics (Figure 13) permet de régler les paramètres de la continuation (sens, précision etc.). Les paramètres qui y sont réglables sont : – Ntst : précision dans le suivi des orbites (cycles limites etc.). Plus le nombre est élevé, plus la précision est grande. – Nmax : nombre maximum de pas réalisés lors de la continuation 7 Utilisation de XPPAUT – Npr : sauvegarder les infos complètes sur le point tous les Npr pas – Ds : Taille de pas initiale pour la continuation. La taille de pas est ici adaptative, donc elle change à chaque pas. Ce nombre est une indication donnée au logiciel et une définition du sens de continuation (Ds peut être négatif ou positif) – Dsmin : valeur absolue du minimum de la taille de pas – Dsmax : valeur absolue du maximum de la taille de pas – Par Min : valeur minimum du paramètre selon lequel est faite la continuation – Par Max : valeur maximum du paramètre selon lequel est faite la continuation Le reste correspond à des réglages de précision que nous ne toucherons pas. 6.3 Continuer un équilibre Nous allons continuer l’équilibre selon e croissant et nous intéresser à ce qui se passe entre les valeurs 0,05 et 0,2. Ceci est à régler dans Numerics, en adaptant les valeurs de pas à ce petit intervalle de paramètre (diminuer les valeurs). Nous tracerons dans un premier temps le max et min de x1 en fonction de e. Il faut donc choisir le type de plot Hi-Lo et adapter la taille des axes du graphe à ce problème (x1 varie de -0.2 à 0.2 et nous étudions e de 0.05 à 0.2). Nous pouvons au passage vérifier que e est bien le paramètre principal de continuation. Ensuite appuyer sur Run. Un menu adaptatif apparaı̂t à cet endroit, en fonction de ce qu’il est possible de continuer. Ici nous continuons un point fixe et nous choisissons donc Steady state. Les courbes qui s’affichent donnent la valeur de cet équilibre et sa stabilité en fonction des valeurs de e comme le montre la Figure 14. AUTO remarque des points particuliers qui sont ici les points de bifurcation. Ces points sont identifiés grâces aux méthodes numériques présentées en cours. 6.4 Réaliser une continuation en deux dimensions : commencer un diagramme Maintenant que les points de bifurcation sont identifiés, il faut continuer ces bifurcations dans un espace à deux dimensions. Nous allons nous intéresser à ce qui se passe quand le taux relatif d’évolution (M1 ) varie. Nous pouvons commencer par continuer la première bifurcation de Hopf rencontrée. Pour cela, il faut se placer en ce point en utilisant la fonction Grab. Vous pouvez vous déplacer sur la courbe avec les flèches ou de point particulier en point particulier avec la touche Tab. Faites Enter quand vous êtes au bon endroit. Il faut ensuite adapter les données dans le menu Axes : sélectionnez Two Param et modifiez les bornes des valeurs de Y qui est maintenant M1 . Nous allons nous intéresser à ce qui se passe entre 0 et 2. Lancez la continuation avec Run > Two Par et adaptez ensuite les valeurs de Numerics en fonction de ce que vous voyez. à partir du même point, faites la continuation dans l’autre sens. 6.5 Compléter le diagramme de bifurcations Il faut maintenant continuer les deux autres bifurcations identifiées sur l’espace (e, M1 ) ainsi qu’en chercher de nouvelles en fonction de vos connaissances sur le type de transition induit par chaque bifurcation. En résumé : est ce que vous montrent les simulations de chaque côté des courbes de bifurcation est en accord avec le type de bifurcation identifié ? À vous de jouer, le but est d’arriver au diagramme de bifurcation de Dercole et al. présenté par la Figure 15. PS : si vous avez fini et que ne savez vraiment plus quoi faire, vous pouvez aussi chercher les bifurcations dans le plan (e, x10 ) et chercher à obtenir le diagramme de la Figure 16. 8 Utilisation de XPPAUT 7 Figures Fig. 1 – Fenêtre par défaut de XPPAUT 9 Utilisation de XPPAUT Fig. 2 – Les fenêtres iconifiées de XPPAUT 10 Utilisation de XPPAUT Fig. 3 – Menu d’intégration (Initialconds) Fig. 4 – Le menu Window/zoom 11 Utilisation de XPPAUT Fig. 5 – Le menu nUmerics Fig. 6 – Le menu Graphic stuff 12 Utilisation de XPPAUT Fig. 7 – Le menu File Fig. 8 – le menu Viewaxes 13 Utilisation de XPPAUT Fig. 9 – La fenêtre d’AUTO 14 Utilisation de XPPAUT Fig. 10 – La fenêtre de paramètres d’AUTO Fig. 11 – Le menu Axes d’AUTO 15 Utilisation de XPPAUT Fig. 12 – La fenêtre de paramètres du plot d’AUTO (après le menu Axes) 16 Utilisation de XPPAUT Fig. 13 – Le menu Numerics d’AUTO Fig. 14 – Continuation d’un équilibre selon e. 17 Utilisation de XPPAUT 1386 FABIO DERCOLE, JEAN-OLIVIER IRISSON, SERGIO RINALDI 2 0.8 1 1.5 8 1 0.6 4 2 7 1 6 0.4 5 3 9 0.5 3 2 7 9 0.2 3 12 5 6 5 1 0 0.2 0.25 0.3 0 0.2 0.25 Fig. 15 – Diagramme de bifurcation complet du système dans le plan (e, M1 ) Fig. 4. Bifurcation diagram of evolutionary model (5) with respect to predator efficiency e and mutation frequency ratio k1 /k2 (A) and handling time θ (B). See Figure 3 for coevolutionary state portraits and parameter values. 18 points out that there are fourteen subregions in the parameter space characterized by different coevolutionary portraits. In each one of them, for simplicity, the boundary of the stationary coexistence region, where the predator population becomes extinct, is PREY-PREDATOR COEVOLUTION 1385 not shown. This, however, fails to point out, graphically, that evolutionary extinction of the predator population occurs in all cases, as shown in Figure 1, which is actually 1 2 4 the6 coevolutionary portrait corresponding to 3subregion 11. It is worth noticing that 11 1 13 3 this form of evolutionary extinction is always an evolutionary murder. In fact, on the 5 10 14 0.2 boundary of the stationary coexistence region ẋ = 0, because n̄2 = 0 in (5); i.e., the 12 2 7 9 8 predator trait is locally constant while the prey trait varies. 5 6 7 8 Coevolutionary attractors can be equilibria or limit cycles, and the existence of 0.1 5 3 alternative attractors is rather common. When they exist, attracting cycles surround 4 all equilibria. Actually, there can be up to three alternative attractors (two equilibria 7 6 2 1 and one cycle), as shown9 by the coevolutionary portraits 10, 11, 13, and 14. There 0 10 11 12 are ten codimension-2 bifurcation points, namely a cusp (C), two generalized Hopf 9 5 (GH1 and GH2 ), two Bogdanov–Takens (BT1 and BT2 ), four noncentral saddle-node 11 8 -0.1 6 homoclinic loops (S1 , S2 , B1 , and B2 ), and a double homoclinic loop (D) (see [17]). 10 4 14 codimension-2 bifurcation points are present in No other bifurcation13curves and the two extra bifurcation diagrams presented in Figure 4, where the coevolutionary -0.2 portraits are intentionally not shown to stress that they are exactly as in Figure 3. The parameter on0.4the horizontal axis of these two bifurcation diagrams is still the 0.2 0.3 efficiency of the predator, while the parameter on the vertical axis is related to two important characteristics of the mutation and predation processes, namely, the ratio Fig. 3. Bifurcationkdiagram of evolutionary model (5) with respect to predator predator efficiency the complet frequencies of prey and and the predator 1 /kde 2 between Fig. 16 – Diagramme bifurcation du système dans le plan (e,mutations, x10 ) a,e and optimum prey trait γ and corresponding sketches of coevolutionary state portraits. Panels handling time θ corresponding to the maximum attack rate (see the appendix). b, and c are magnified views of the bifurcation diagram. Parameter values are r = 0.5, d = 0.05, diagrams areα1very forα3deriving biological propk1 = k2 = 1, γ0 = 0.01, γ1 =The 0.5, bifurcation γ2 = 1, α = 1, α0 = 0.01, = 1,useful α2 = 1, = 0.6, θ interesting = 0.9, θ1 = θ2 = 0.5, θ3 = θ4 = erties 1. concerning the impact of various factors on coevolution. For example, one could be interested in identifying the factors favoring the so-called Red Queen dynamics, namely, the possibility of cyclic coevolution of the traits. For this, one should extract The functional forms specifying the parameters’ dependence upon the traits are reported in the appendix and are such that the left-hand inequality of condition (11) (i.e., (rah − c)/(2ahc) ≤ d/(a(e − dh))) is always satisfied. (This excludes the possibility of population cycles.) Thus, the boundary of the stationary coexistence region is simply the set of pairs (x1 , x2 ) for which d/(a(e − dh)) = r/c (see (11)). This means that on that boundary n̄2 (x1 , x2 ) = 0; i.e., the predator population becomes extinct if the traits reach the boundary of the stationary coexistence region. At this point, (6) can be used to derive the evolutionary model (2), since the