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 :
Avec ce code, ça marche très bien.
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
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
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.
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
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.
Partager