From help-octave-request Thu Jun 24 19:42:56 1993 Subject: Re: lsode From: John Eaton To: help-octave Date: Thu, 24 Jun 93 19:42:53 EDT On Thu, 24 Jun 93 22:18:00 +0700, siglun at volterra dot teorekol dot lu dot se (Sigfrid Lundberg) wrote: : I'm a newbie octave user. Everything seem to work as expected, but there : is one I don't understand. I have written a tiny function: : : function xdot = volterra ( x , t) : global x xdot; There's no need to declare these variables as global. : Then I start octave, and load this function: : octave:1> eval("volterra"); : error: `x' undefined There's no need to use eval here -- just asking for a function evaluation will work just fine. It's also not necessary to ask for a function evaluation before calling lsode (but I often do, just to see if the function actually does work). : But, if I try to use lsode for solving this predator-prey model : : octave:19> lsode ('volterra',x,30,0.01) : : nothing interesting happens. What am I doing wrong? You need to specify a vector for t_out, including the time corresponding to the initial condition. The t_crit parameter is probably not useful here -- it's there so you can tell lsode not to integrate past certain points (usually discontinuities in the RHS function). Try something like: t = (0:0.5:100)'; y = lsode ('volterra', x, t); plot (t, y); # look at behavior in time plot (y(:,1), y(:,2)); # look at phase portrait too I found that x = [1; 2] was an interesting starting condition. I see that the help message isn't very helpful, and that there isn't much documentation either. Hmmm. Someone should do something about that. :-). -- John W. Eaton | Among other things, we have added the missing semicolon. jwe at che dot utexas dot edu| | -- Jim Blandy, announcing Emacs 19.15.