Systèmes dynamiques, modélisation et simulation Résolution avec Scilab 1 Claude Gomez et Christine Gomez 2 Université d’été de Sourdun, 27—30 août 2012 Table des matières Table des matières ............................................................................................................................ 1 2 3 Équation différentielle du premier ordre en dimension 1 ........................................................ 2 1.1 Équation différentielle linéaire ......................................................................................... 2 1.2 Solution ............................................................................................................................ 2 Équation différentielle du second ordre en dimension 1.......................................................... 2 2.1 Le pendule amorti ............................................................................................................ 2 2.2 Solution ............................................................................................................................ 3 Équation différentielle du premier ordre en dimension 2 ........................................................ 3 3.1 3.1.1 Énoncé ........................................................................................................................ 3 3.1.2 Solution ....................................................................................................................... 4 3.2 2 Système de Lotka-Volterra avec prise en compte de la surpopulation ............................ 5 3.2.1 Énoncé ........................................................................................................................ 5 3.2.2 Solution ....................................................................................................................... 5 3.3 1 Système de Lotka-Volterra ............................................................................................... 3 Système non autonome ................................................................................................... 6 3.3.1 Énoncé ........................................................................................................................ 6 3.3.2 Solution ....................................................................................................................... 6 Directeur général de Scilab Enterprises. Professeur de mathématiques au lycée Descartes, 92 Antony. Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 1/6 1 Équation différentielle du premier ordre en dimension 1 1.1 Équation différentielle linéaire On reprend l’équation différentielle étudiée en terminale y ' ay b:, où a et b sont des constantes réelles, avec a 0 .ici 1. Résoudre l’équation pour a 1 et b 6 , avecy(0) 1 . 2. Vérifier que la courbe intégrale correspond à la solution théorique bie connue. 3. Faire une boucle pour tracer les courbes intégrales obtenues y(0) avec variant de 1 à 5. 1.2 Solution a=1; b=6; function yprim=f(t,y) yprim=a*y+b; endfunction // Une courbe intégrale t0=0; y0=1; t=t0:0.1:t0+2; y=ode(y0,t0,t,f); clf; plot(t,y) // Comparaison avec la solution connue function y=s(t) y=((a+b)/a)*exp(a*t)-b/a; endfunction plot(t,s,"r") // Tracé de plusieurs courbes intégrales en faisant // varier la condition initiale for y0=0:5 y=ode(y0,t0,t,f); plot(t,y) end 2 Équation différentielle du second ordre en dimension 1 2.1 Le pendule amorti On considère le mouvement d’un pendule amorti del longueur et de masse m. est l’angle que fait le pendule avec la verticale. La force de friction à laquelle est soumis le pendule est opposée au mouvementkt et'(égale àk 0 . ) avec Pour obtenir le système d’équations différentielles correspondant, on écrit la loi de Newton projetée sur la tangente au cercle parcouru par le pendule et obtient : mg sin( (t)) k '(t ) ml ''(t ) Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 2/6 où g est l’accélération de la pesanteur. Si l’on pose (tt) '( ) , on obtient le système du premier ordre et de dimension 2 suivant : '(tt) ( ) kg '(t) ml (t) l sin( (t)) On prendra l 1m , m 1kg etg 9,81m/s2 . 1. Résoudre le système et tracer la courbe defonction de t pour ()t en k 3 , avec une vitesse initiale nulle et un angle initial . de 2 2. Faire une boucle sur k entre 0 et 10 et tracer sur une même figure les courbes de()t en fonction de t. 2.2 Solution function yprim=f(t,y) yprim(1)=y(2); yprim(2)=-(k/(m*l))*y(2)-(g/l)*sin(y(1)); endfunction // Courbe intégrale pour k=3 l=1; m=1; g=9.81; k=3; t0=0; tmax=5; t=t0:0.05:tmax; teta0=%pi/2; omega0=0; y=ode([teta0;omega0],t0,t,f); clf; plot(t,y(1,:)) // Plusieurs courbes intégrales en faisant varier la // constante k for k=0:10 y=ode([teta0;omega0],t0,t,f); plot(t,y(1,:)) end 3 Équation différentielle du premier ordre en dimension 2 3.1 Système de Lotka-Volterra 3.1.1 Énoncé Les équations de Lotka-Volterra décrivent le comportement du système de proiesxt( ) 0 (sardines) et de prédateurs (requins) : yt( ) 0 x '(t ) a x(t) b x(t) y (t ) y '(t ) c x(t) y (t ) d y (t ) Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 3/6 avec des conditions initiales xx(0) positifs. 0 , yy(0) 0 , et a , b , c , et d strictement 1. Tracer des trajectoires dans le plan de phase en partant du point cliqué par la souris. On prendra a 3 , b 1 , c 1 et d 2 . 2. On augmentela fréquencede pêche, c'est-à-direaa et dd . Sur la mêmefigure tracer les nouvellestrajectoiresen partant du point cliqué par la souris. On prendra 2 et 2 . 3.1.2 Solution function yprim=f(t,y) yprim(1)=a*y(1)-b*y(1)*y(2); yprim(2)=c*y(1)*y(2) -d*y(2); endfunction // Une trajectoire a=3; b=1; c=1; d=2; t0=0; tmax=5; t=t0:0.05:tmax; x0=3; y0=1.5; y=ode([x0;y0],t0,t,f); clf; plot(y(1,:),y(2,:)) // Tracés de différentes trajectoires en cliquant pour // imposer la condition initiale while(%t) [c_i,x0,y0]=xclick(); if c_i==5 then break end; y=ode([x0;y0],t0,t,f); plot(y(1,:),y(2,:)) end Ci-dessus on utilise la fonction xclick qui va retourner le numéro du bouton de la souris cliqué ainsi que les coordonnées du point correspondant. Lors l'on clique sur le bouton droit de la souris, qui correspond à un retour de xclick égal à 5, on sort de la boucle et le programme s'arrête. Sinon, o intègre l'équationdifférentielleen prenant comme conditioninitiale les coordonnées du point cliqué. // Plus de pêcheurs alpha=2; delta=2; a=a-alpha; d=d+delta; while(%t) [c_i,x0,y0]=xclick(); if c_i==5 then break end; y=ode([x0;y0],t0,t,f); plot(y(1,:),y(2,:),"r") end Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 4/6 3.2 Systèmede Lotka-Volterra avec prise en comptede la surpopulation 3.2.1 Énoncé Les équations de Lotka-Volterra qui décrivent le comportement du système d proies xt( ) 0 (sardines)et de prédateursyt( ) 0 (requins)sont un peu simplistes. En particulier, elles ne tiennent pas compte de la surpopulation des espèces.Pour en tenir compte,on introduitun terme carré. Le système d'équations s'écrit alors : x '(t ) a x(t) b x(t) y (t ) x 2 (t) 2 y '(t) c x(t) y (t ) d y (t ) y (t) avec des conditions initiales xx(0) strictement positifs. a 4, b On prendra 0 , yy(0) 0 , et a , b , c , d , et 3 1 1 , c 1 , d 2 , et . 2 2 2 1. En prenant le cadre x [0, 4] et y [0, 4], tracer des trajectoires dans le plan de phase en partant du point cliqué par la souris. 2. Quellesont les différencesde comportement de ce systèmeproies prédateurs par rapport au système classique de Lotka-Volterra ? 3.2.2 Solution function yprim=f(t,y) yprim(1)=a*y(1)-b*y(1)*y(2)-lambda*y(1)*y(1); yprim(2)=c*y(1)*y(2)-d*y(2)-mu*y(2)*y(2); endfunction // Tracé d’une trajectoire a=4; b=0.5; c=1; d=2; lambda=1.5; mu=0.5; t0=0; tmax=5; t=t0:0.05:tmax; x0=1; y0=1; y=ode([x0;y0],t0,t,f); clf; axes=gca(); axes.data_bounds=[0,0;4,4]; plot(y(1,:),y(2,:)) Ci-dessus on a défini le cadre correspondant à et y [0, 4] danslequel x [0, 4] on veut faire le tracé. Pour cela, grâce à la fonction gca (« Get Current Axes »), on donne à la variable axes une valeur qui pointe vers la structure graphique des axes et dont on pourra modifier les propriétés. Il suffit ensuite de donner la bonne valeur à la propriété data_bounds pour avoir le cadre désiré. Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 5/6 // Tracés en cliquant while(%t) [c_i,x0,y0]=xclick(); if c_i==5 then break end; y=ode([x0;y0],t0,t,f); plot(y(1,:),y(2,:)) end 3.3 Système non autonome 3.3.1 Énoncé On veut résoudre le système non autonome, c’est-à-dire où le temps t apparaît explicitement dans l’équation, suivant : x '(t) sin( y (t )) 2 y '(t) x (t) t En prenant le cadre x [ 6, 6] et y [ 6, 6], tracer des trajectoires dans le plan de phase en partant du point cliqué par la souris. 3.3.2 Solution function yprim=f(t,y) yprim(1)=sin(y(2)); yprim(2)=y(1)^2-t; endfunction // Une trajectoire t0=0; tmax=30; t=t0:0.1:tmax; x0=4; y0=0; y=ode([x0;y0],t0,t,f); clf; axes=gca(); axes.data_bounds=[-6,-6;6,6]; axes.auto_scale="off"; Ci-dessus on a défini le cadre correspondant à et y x [ 6, 6] [ 6, 6] comme en 3.2.2, mais en plus il est nécessaire de positionner laauto_scale propriété à "off" afin que le cadre ne s’adapte pas automatiquement aux tracés suivants, ce qui est le comportement par défaut. plot(y(1,:),y(2,:)) // tracés en cliquant while(%t) [c_i,x0,y0]=xclick(); if c_i==5 then break end; y=ode([x0;y0],t0,t,f); plot(y(1,:),y(2,:)) end Systèmes dynamiques, modélisation et simulation. Résolution avec Scilab. 6/6