• Aucun résultat trouvé

td scilab sourdun2

N/A
N/A
Protected

Academic year: 2021

Partager "td scilab sourdun2"

Copied!
6
0
0

Texte intégral

(1)

Systèmes dynamiques, modélisation et simulation

Résolution avec Scilab

Claude Gomez1 et Christine Gomez2 Université d’été de Sourdun, 27—30 août 2012

Table des matières

Table des matières ... 1 1 Équation différentielle du premier ordre en dimension 1 ... 2

Équation différentielle linéaire ... 2 1.1

Solution ... 2 1.2

2 Équation différentielle du second ordre en dimension 1... 2 Le pendule amorti ... 2 2.1

Solution ... 3 2.2

3 Équation différentielle du premier ordre en dimension 2 ... 3 Système de Lotka-Volterra ... 3 3.1

3.1.1 Énoncé ... 3 3.1.2 Solution ... 4 Système de Lotka-Volterra avec prise en compte de la surpopulation ... 5 3.2

3.2.1 Énoncé ... 5 3.2.2 Solution ... 5 Système non autonome ... 6 3.3

3.3.1 Énoncé ... 6 3.3.2 Solution ... 6

1 Directeur général de Scilab Enterprises.

(2)

1 Équation différentielle du premier ordre en dimension 1

Équation différentielle linéaire

1.1

On reprend l’équation différentielle étudiée en terminale : y'ay b, où a et b sont des constantes réelles, avec ici a0.

1. Résoudre l’équation pour a1 et b6, avec y(0) 1 .

2. Vérifier que la courbe intégrale correspond à la solution théorique bien connue.

3. Faire une boucle pour tracer les courbes intégrales obtenues avec y(0)

variant de 1 à 5. Solution 1.2 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

Le pendule amorti

2.1

On considère le mouvement d’un pendule amorti de longueur l 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 et égale à kt'( ) avec 0k  .

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 on obtient :

(3)

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 : '( ) ( ) '( ) ( ) sin( ( )) tt kg t t t ml l           On prendra l1m, m1kg etg9,81m/s2.

1. Résoudre le système et tracer la courbe de ()t en fonction de t pour 3

k , 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. Solution 2.2 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

Système de Lotka-Volterra

3.1

3.1.1Énoncé

Les équations de Lotka-Volterra décrivent le comportement du système de proies xt( ) 0 (sardines) et de prédateurs yt( ) 0 (requins) :

'( ) ( ) ( ) ( ) '( ) ( ) ( ) ( ) x t a x t b x t y t y t c x t y t d y t    

(4)

avec des conditions initiales xx(0) 0, yy(0) 0, et a , b , c , et d strictement positifs.

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 augmente la fréquence de pêche, c'est-à-dire aa et

dd . Sur la même figure tracer les nouvelles trajectoires en partant du point cliqué par la souris. On prendra 2et 2.

3.1.2Solution 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. Lorsque 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, on

intègre l'équation différentielle en prenant comme condition initiale 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

(5)

Système de Lotka-Volterra avec prise en compte de la 3.2

surpopulation 3.2.1Énoncé

Les équations de Lotka-Volterra qui décrivent le comportement du système de proies xt( ) 0 (sardines) et de prédateurs yt( ) 0 (requins) sont un peu

simplistes. En particulier, elles ne tiennent pas compte de la surpopulation des espèces. Pour en tenir compte, on introduit un terme carré. Le système

d'équations s'écrit alors :

2 2 '( ) ( ) ( ) ( ) ( ) '( ) ( ) ( ) ( ) ( ) x t a x t b x t y t x t y t c x t y t d y t y t            

avec des conditions initiales xx(0) 0, yy(0) 0, et a , b , c , d , et strictement positifs. On prendra 4a , 1 2 b , c1, d 2, 3 2  et 1 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. Quelle sont les différences de comportement de ce système proies prédateurs par rapport au système classique de Lotka-Volterra ?

3.2.2Solution

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 à x[0, 4] et y[0, 4]danslequel 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é.

(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

Système non autonome 3.3

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 :

2 '( ) sin( ( )) '( ) ( ) x t y t 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.2Solution 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 à x[ 6, 6] et y[ 6, 6]comme en 3.2.2, mais en plus il est nécessaire de positionner la propriété auto_scale à

"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

Références

Documents relatifs

Tracer en bleu la droite parallèle à la droite (YZ) passant par le point F. Tracer en vert la droite perpendiculaire à la droite (YZ) passant par le

Tracer en bleu la droite parallèle à la droite (YZ) passant par le point F. Tracer en vert la droite perpendiculaire à la droite (YZ) passant par le

Tracer en bleu la droite parallèle à la droite (YZ) passant par le point F.. Tracer en vert la droite perpendiculaire à la droite (YZ) passant par le

Tracer en bleu la droite parallèle à la droite (YZ) passant par le point F.. Tracer en vert la droite perpendiculaire à la droite (YZ) passant par le

Pour analyser vos simulations vous pouvez utiliser la fonction plot (voir doc plot), afin de tracer les concentrations des trois diff´ erentes prot´ eines en fonction du temps.. Si

Tracer un quadrilatère ABCD polygone cliquer en quatre points du plan Placer un point E sur la droite p AB q point sur objet cliquer quelque part sur la droite p AB q Tracer

Tracer l'allure des variations du signal émis par la sonde au cours du temps, en faisant apparaître les divers temps

Document 3 : Comparaison de l’expression du gène Prx1 au cours du développement embryonnaire des membres antérieurs de la chauve-souris et de la souris.. Par la méthode