7.3 Méthodes d’Euler
211
Programme 7.1. feuler : méthode d’Euler explicite
function [t ,u ]= feuler ( odefun , tspan , y0 ,Nh , varargin )
% FEULER Résout une équation d i f f éren tie lle avec la
% méthode d ’ Euler e x p lic ite.
% [T ,Y ]= FEULER ( ODEFUN , TSPAN ,Y0 , NH) avec TSPAN =[ T0 , TF]
% intègre le système d ’ é q u a tions d i f f ér enti ell es
% y ’=f (t ,y ) du temps T0 au temps TF avec la c o n ditio n
% initiale Y0 en u t i l isant la méthode d ’ Euler
% e x p l icite sur une grille de NH i n t e rvall es
% é q u i d istr ibu és. La fonction ODEFUN (T ,Y ) doit
% r e t o urner un vecteur , c o r r esp onda nt à f(t , y) ,
% de même d i m e nsio n que Y .
% Chaque ligne de la solution Y c o r r espo nd
% à un temps du vecteur colonne T.
% [T ,Y ] = FEULER ( ODEFUN , TSPAN ,Y0 ,NH , P1 ,P2 ,...) passe
% les p a r a mèt res s u p p l éme ntai res P1 , P2 ,.. à la
% fonction ODEFUN de la maniere suivante :
% ODEFUN (T ,Y ,P1 , P2 ...).
h =( tspan (2) - tspan (1))/ Nh ;
y = y0 (:); % crée toujours un vecteur colonne
w =y ; u= y . ’;
tt= linspace ( tspan (1) ,tspan (2) , Nh +1);
for t = tt (1: end -1)
w= w+ h* feval ( odefun ,t ,w , varargin {:});
u = [u ; w . ’];
end
t = tt;
return
La méthode d’Euler implicite est implémentée dans le Programme
7.2. On a utilisé la fonction fsolve pour résoudre le problème non linéaire qui se pose à chaque pas de temps. Pour la donnée initiale de
fsolve, on utilise la valeur de la solution à l’itération précédente.
Programme 7.2. beuler : méthode d’Euler implicite
function [t ,u ]= beuler ( odefun , tspan , y0 ,Nh , varargin )
% BEULER Résout une équation d i f f éren tie lle avec la
% méthode d ’ Euler i m p lic ite.
% [T ,Y ]= BEULER ( ODEFUN , TSPAN ,Y0 , NH) avec TSPAN =[ T0 , TF]
% intègre le système d ’ é q u a tions d i f f ér enti ell es
% y ’=f (t ,y ) du temps T0 au temps TF avec la c o n ditio n
% initiale Y0 en u t i l isant la méthode d ’ Euler
% i m p l icite sur une grille de NH i n t e rvall es
% é q u i d istr ibu és. La fonction ODEFUN (T ,Y ) doit
% r e t o urner un vecteur , c o r r esp onda nt à f(t , y) ,
% de même d i m e nsio n que Y .
% Chaque ligne de la solution Y c o r r espo nd
% à un temps du vecteur colonne T.
% [T ,Y ] = BEULER ( ODEFUN , TSPAN ,Y0 ,NH , P1 ,P2 ,...) passe
% les p a r a mèt res s u p p l éme ntai res P1 , P2 ,.. à la
% fonction ODEFUN de la manière suivante :
% ODEFUN (T ,Y ,P1 , P2 ...).
tt= linspace ( tspan (1) ,tspan (2) , Nh +1);
y = y0 (:); % crée toujours un vecteur colonne
u =y . ’;
Précédent

- 222/374

Suivant