[SciPy-user] Problems with odeint

Víctor Martínez-Moll victor.martinez at uib.es
Thu Jun 15 04:41:28 CDT 2006

Thanks Fernando!

Using your script I get the right curves too. I had only to change the line:
import pylab as P
import matplotlib.pylab as P

On the other hand the debugging lines you added showed:

numerix flag : Numeric
mpl   version: 0.87.2
scipy version:

The only thing that worries me now is to know what was wrong with my 
script (if anything). I'll try to discover when I have some time, so any 
suggestions will be welcome.



En/na Fernando Perez ha escrit:
> On 6/9/06, Víctor Martínez-Moll <victor.martinez at uib.es> wrote:
>> Hi all,
>> I've been a SciLab user for some time and I'm evaluating SciPy as a
>> development tool.
>> The first thing I tried is to solve a simple second order diferential
>> equation using odeint(). The problem is that depending on the function I
>> want to integrate I get nice results, but for most of them I get simply
>> nothing or nonsense answers. Is not a problem of the function having a
>> strange behaviour or having singularity points. For example if I try to
>> solve:
>>      d2y/dt2 = 1-sin(y)
>> either I get nothing or wrong solutions (the best thing I got was
>> setting:hmin=0.01,atol=.001), while If I do about the same procedure in
>> SciLab I get a nice and smooth set of curves. The strangest thing is
>> that if I use exactly the same procedure to solve:
>>      d2y/dt2 = 1-y
>> then I get the right solution, which seems to indicate that I'm doing
>> the right thing (although of course I know I'm not because I do not
>> belive that odeint is not able to solve such a silly thing).
>> I've only checked it with the last enthon distribution I found:
>> enthon-python2.4-1.0.0.beta2.exe
>> The simple procedure I wrote in Python and its equivalent in SciLab that
>> does the right thing in are:
> I'm sorry, but I get basically the same results with both.  I'm
> attaching a slightly modified version of the python script you wrote,
> which prints some debug information.  On my system, this information
> reads:
> In [7]: run odebug
> numerix flag : Numeric
> mpl   version: 0.87.3
> scipy version:
> I've attached a png of the resulting plot.
> I've never used scilab before, but just brute-pasting your example
> into a scilab window and exporting the resulting plot gave me the
> attached file.
>> From what I can see, both results look more or less consistent (I
> haven't done numerical accuracy checks, I'm just looking at the
> figures).
> Cheers,
> f
> ------------------------------------------------------------------------
> import math
> import matplotlib as M
> import pylab as P
> import scipy as S
> import scipy.integrate
> # debug info
> print 'numerix flag :',P.rcParams['numerix']
> print 'mpl   version:',M.__version__
> print 'scipy version:',S.__version__
> def dwdt(w,t):
>     return [w[1],1.0-math.sin(w[0])]
> t = S.arange(0.0,2.0*S.pi,.01)
> ww = S.integrate.odeint(dwdt,[0.0,0.0],t,hmin=0.01,atol=.001)
> y = ww[:,0]
> dy =ww[:,1]
> ddy = 1.0-S.sin(ww[:,0])
> P.figure()
> P.plot(t,y,label='y')
> P.plot(t,dy,label='dy')
> P.plot(t,ddy,label='ddy')
> P.legend()
> P.show()
> ------------------------------------------------------------------------
> ------------------------------------------------------------------------
> ------------------------------------------------------------------------
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.net
> http://www.scipy.net/mailman/listinfo/scipy-user

Víctor Martínez Moll           | Universitat de les Illes Balears
Departament de Física          | Edifici Mateu Orfila
Àrea d'Enginyeria Mecànica     | E-07122, Palma de Mallorca, SPAIN
e-mail: victor.martinez at uib.es | Tel:34-971171374 Fax:34-971173426

More information about the SciPy-user mailing list