[SciPy-User] odeint with saturation?

Jonathan Stickel jjstickel at vcn.com
Fri Oct 15 15:30:24 EDT 2010


On 10/15/10 11:58 , Brian Blais wrote:
> On Oct 15, 2010, at 11:55 AM, Jonathan Stickel wrote:
>
>>> some of my cases have saturating values.  In many cases a value
>>> can't go negative (if it does, it should just be set equal to
>>> zero).  It
>>
>> ... if var<  eps&&  dvar<0: dvar = 0 ...
>
> thanks!  so the obvious works...I feel a little sheepish now...  :)
>
>>
>> P.S.  I found that the effort to learn how to use
>> scipy.integrate.ode was the effort.  It provides more control and a
>> slightly better solver than scipy.integrate.odeint.  YMMV.
>
> what's the difference?  it looks like ode lets you choose the
> integrator, and has some fine-grained options dependent on integrator
> method.  is that right, or is there another advantage to using ode
> instead of odeint?
>

The help strings indicate that odeint uses LSODA and ode uses VODE. 
Based on a little research, it seems that VODE is a slightly newer and 
improved algorithm.  The primary difference that I have observed is that 
ode does a bit better with its automatic time step determination.

I also like the way that ode is typically used, i.e. in a loop.  If I 
use a while loop, I can stop based on some criteria other than time, 
e.g. a variable's value or rate of convergence.  I suppose odeint could 
be used like this as well (in a loop), but it doesn't seem that it was 
intended to be used this way.

Jonathan



More information about the SciPy-User mailing list