250
7 Equations différentielles ordinaires
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
y1(:,3)
y1(:,1)
y1(:,2)
y1(:,3)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
y2(:,3)
y2(:,1)
y2(:,2)
y2(:,3)
Figure 7.20. Trajectoires obtenues avec les méthodes ode23 (à gauche) et
ode45 (à droite) en demandant la même précision.
requiert 1751 noeuds de discrétisation et donne un résidu r = 0.003,
tandis que ode45 requiert 1089 noeuds de discrétisation pour un résidu
r = 0.060.
Programme 7.9. fvinc : terme de force pour le problème du pendule sphérique
function [f ]= fvinc (t ,y )
[n , m ]= size ( y ); f = zeros (n ,m );
phix = ’ 2*y (1) ’;
phiy = ’ 2*y (2) ’;
phiz = ’ 2*y (3) ’;
H =2* eye (3);
mass =1; % Masse
F1= ’ 0*y (1) ’;
F2= ’ 0*y (2) ’;
F3= ’ - mass *9.8 ’; % Gravité
xdot = zeros (3 ,1);
xdot (1:3)= y (4:6);
F =[ eval ( F1 ); eval ( F2 ); eval ( F3 )];
G =[ eval ( phix ); eval ( phiy ); eval ( phiz )];
lambda =( mass * xdot ’*H * xdot +F ’*G )/(G ’*G );
f (1:3)= y (4:6);
for k =1:3;
f (k +3)=( F (k ) - lambda * G( k ))/ mass ;
end
return
Octave 7.2 ode23 effectue 924 pas et ode45 effectue 575 pas pour la
même précision tol=1.e-03.
Remarquer que ode45 donne des résultats similaires à ceux de ode23,
contrairement à ode45 de MATLAB, voir Figure 7.20.
7.10.2 Le problème à trois corps
On souhaite calculer l’évolution d’un système composé de trois corps
soumis aux forces de gravitation qu’ils exercent les uns sur les autres,
connaissant leur position initiale, leur vitesse et leur masse. On peut
7 Equations différentielles ordinaires
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
y1(:,3)
y1(:,1)
y1(:,2)
y1(:,3)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
y2(:,3)
y2(:,1)
y2(:,2)
y2(:,3)
Figure 7.20. Trajectoires obtenues avec les méthodes ode23 (à gauche) et
ode45 (à droite) en demandant la même précision.
requiert 1751 noeuds de discrétisation et donne un résidu r = 0.003,
tandis que ode45 requiert 1089 noeuds de discrétisation pour un résidu
r = 0.060.
Programme 7.9. fvinc : terme de force pour le problème du pendule sphérique
function [f ]= fvinc (t ,y )
[n , m ]= size ( y ); f = zeros (n ,m );
phix = ’ 2*y (1) ’;
phiy = ’ 2*y (2) ’;
phiz = ’ 2*y (3) ’;
H =2* eye (3);
mass =1; % Masse
F1= ’ 0*y (1) ’;
F2= ’ 0*y (2) ’;
F3= ’ - mass *9.8 ’; % Gravité
xdot = zeros (3 ,1);
xdot (1:3)= y (4:6);
F =[ eval ( F1 ); eval ( F2 ); eval ( F3 )];
G =[ eval ( phix ); eval ( phiy ); eval ( phiz )];
lambda =( mass * xdot ’*H * xdot +F ’*G )/(G ’*G );
f (1:3)= y (4:6);
for k =1:3;
f (k +3)=( F (k ) - lambda * G( k ))/ mass ;
end
return
Octave 7.2 ode23 effectue 924 pas et ode45 effectue 575 pas pour la
même précision tol=1.e-03.
Remarquer que ode45 donne des résultats similaires à ceux de ode23,
contrairement à ode45 de MATLAB, voir Figure 7.20.
7.10.2 Le problème à trois corps
On souhaite calculer l’évolution d’un système composé de trois corps
soumis aux forces de gravitation qu’ils exercent les uns sur les autres,
connaissant leur position initiale, leur vitesse et leur masse. On peut
