Arguments de fonctions - Euler explicite
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:
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:
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:
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.