Systèmes dynamiques, modélisation et simulation

publicité
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 mouvementkt
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
Téléchargement