2011-11-08 1 views
2

Matlab Je sais comment résoudre un ODE jusqu'à ce qu'un produit même (par exemple, résoudre le ODE jusqu'à ce que la coordonnée y est égal à zéro): http://www.mathworks.com/help/techdoc/ref/odeset.html#f92-1017470Résoudre de ODE jusqu'à ce qu'un événement se produit dans Octave

Y at-il une analogie en Octave?

Voici le code correspondant:

lsode_options('Events', @events); 
t0 = linspace (0, 20, 1000); 
[t,x,te,ye,ie] = lsode(@HH, ynot, t0); 
+0

Je n'ai pas utilisé l'octave depuis un moment, mais je pense que l'infrastructure est là dans ['odepkg'] (http://octave.sourceforge.net/odepkg/). Il a 'odeset', gestionnaires d'événements, etc .. Avez-vous essayé d'adapter quelque chose comme le simple matlab [exemple boule ODE] (http://www.mathworks.com/help/techdoc/math/f1-662913.html# f1-669698) en octave ?? –

+0

Oui, j'ai essayé quelque chose comme cet exemple (mais encore plus simple), mais ça n'a pas marché. Je peux faire fonctionner LSODE dans Octave, mais le modèle d'événement que j'ai utilisé dans Matlab ne semble pas fonctionner dans Octave. – db1234

+0

Quand vous dites 'ne fonctionne pas', que se passe-t-il exactement? – crobar

Répondre

2

Installer le paquet odepkg de Octave-Force. Vous avez peut-être déjà installé ceci. Vous utilisez ensuite les fonctions de résolution de l'ode de ce package, qui ont la même syntaxe que les solveurs d'itérations de Matlab, tels que ode45. Notez que les noms des solveurs peuvent ne pas être identiques, et vous devrez trouver celui qui convient à votre problème. ode45 semble cependant avoir une implémentation dans la dernière version.

+0

Simce J'ai écrit cette réponse ode45 et d'autres fonctions odes ont été déplacées vers l'octave de base, donc vous n'avez pas besoin d'odepkg. En plus de cela, odepkg a quitté la forge d'octave – crobar

Questions connexes