[SciPy-user] What can and cannot be interpreted as a vector by odeint?

David Goldsmith David.L.Goldsmith at noaa.gov
Fri Nov 17 01:28:24 CST 2006


I was having trouble getting odeint to work w/ what I thought should be 
legitimate vector arguments.  Looking for examples, I found 
test_integrate.py and thus found at least one way which works.  However, 
I'm left wondering why the following behaves the way it does:

 >>> import numpy as N
 >>> import scipy as S
 >>> from scipy import integrate as SI
 >>> def f(y,t0=0):
...     return N.matrix([[0,1],[-1,0]])*N.matrix([[y[0]],[y[1]]]) # 
[y,y']'=f([y,y']) = "simplest" harmonic oscillator system
...
 >>> f([3,2]) # check that f does what I think it does
matrix([[ 2],
        [-3]])
 >>> # it does
 >>> SI.odeint(f, (1,0), N.linspace(0,2*N.pi)) # should return cosine 
over the domain 0 to 2pi, instead results in:
ValueError: object too deep for desired array
odepack.error: Result from function call is not a proper array of floats.
ValueError: object too deep for desired array
odepack.error: Result from function call is not a proper array of floats.
Illegal input detected (internal error).

Granted, my way is more verbose than how it's done in the test, but 
what's wrong with it technically?

DG

PS: Is there a substantive difference between odeint and odepack (I 
couldn't detect one from their resp. help doc)?  And what're the chances 
of getting more examples, described as such and placed in a folder 
called Examples (even if it's only by essentially duplicating the 
tests)?  Thanks!


More information about the SciPy-user mailing list