[ode] Problème d'execution d'un M-file
Bonjour,
Je souhaite résoudre une ODE sous MATLAB 7.1.0.246 (R14) Service Pack 3. Après quelques essais infructueux (message d'erreur = "??? Input argument "y" is undefined."), j'ai parcouru l'aide, les FAQ et autres post, en vain.
J'ai donc simplement testé l'exemple de l'aide que cite Rostomus :
Citation:
Envoyé par
rostomus
-Question: Comment utiliser les fonctions "ode" pour résoudre des équations différentielles?
-Réponse:
(...) Pour résoudre un systeme d'équations differentielles, vous devez créer une fonction m.file (...). Par exemple si on veut résoudre le systeme:
http://www.mathworks.com/access/help...f/math_o56.gif
On crée la fonction suivante:
Code:
1 2 3 4 5 6 7
| function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
[T,Y] = ode45(@rigid,[0 12],[0 1 1]);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.') |
J'obtiens le même message d'erreur que précédemment, donc ma méthode ne doit pas être la bonne. Je vais donc vous présenter ma démarche.
Merci de me corriger !
- J'ouvre un nouveau fichier M-file que j'enregistre sous "rigid.m".
- J'y copie le code suivant (et j'enregistre) :
Code:
1 2 3 4 5 6 7 8
|
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
[T,Y] = ode45(@rigid,[0 12],[0 1 1]);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.') |
- Je retourne dans la fenêtre de commande et j'y entre :
(NB : je peux également cliquer sur l'icône "Run" de l'éditeur, les conséquences sont les mêmes.) - J'obtiens invariablement le message d'erreur suivant :
Citation:
??? Input argument "y" is undefined.
Error in ==> rigid at 3
dy(1) = y(2) * y(3);
Je ne comprends pas bien ce qui se passe. Est-ce un problème de définition du type de variable pour y (vecteur col?), d'utilisation de la fonction dans un Mfile?
Si je n'ai pas été clair ou s'il manque des infos, n'hésitez pas à demander des précisions.
Merci de m'aider.
Arnaud