Bonjour,

Je suis en train de programmer les chéma d'Euler explicite pour la résolution d'une équa-diff, mais j'ai un problème avec les arguments de sortie de ma fonction.
Voici l'équa diff :

x'=2x+y+exp(-t)
y'=x-y-exp(-t)
x(0)=1
y(0)=0

Ma fonction second membre ( nommé F ) se trouve dans le fichier F.m, et a 2 arguments de sortie : Z1 et Z2

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
% Fonction second membre
 
function [Z1,Z2]=F(t,z)
 
Z1=2*z(1)+z(2)+exp(-t);
Z2=z(1)-z(2)-exp(-t);

J'ai ensuite fait la boucle pour le schéma d'Euler explicite, que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Zbar=ones(2,n+1);
Zbar(1,1)=1; % x(0)=1
Zbar(2,1)=0; % y(0)=0
 
for i=1:n
    [e1,e2]=F(t(i),Zbar(:,i));
    Zbar(1,i+1)=Zbar(1,i)+h*e1; 
    Zbar(2,i+1)=Zbar(2,i)+h*e2;    
end
Avec ce code, ça marche très bien.

Seulement, j'avais cru comprendre qu'il était possible de faire simultanément les calculs sur chacune des lignes, j'ai donc transformé le code en

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Zbar=ones(2,n+1);
Zbar(1,1)=1; % x(0)=1
Zbar(2,1)=0; % y(0)=0
 
 for i=1:n
     Zbar(:,i+1)=Zbar(:,i)+h*F(t(i),Zbar(:,i));    
 end
Mon problème : F(t(i),Zbar(:,i)) va sortir toujours la même valeur ( à savoir Z1) donc la première ligne de Zbar et la 2ème seront sensiblement identique vu qu'il fera toujours le calcul à partir de Z1.

Savez-vous comment faire pour pouvoir utiliser les 2 arguments de sortie de la fonction F ?
Faut-il forcément que je passe par la syntaxe [e1,e2]=F(t(i),Zbar(:,i)); ?


Merci beaucoup.