[Scipy-tickets] [SciPy] #577: Problem with step function in signal.scipy.ltisys.py

SciPy Trac scipy-tickets@scipy....
Sun May 2 19:12:33 CDT 2010

#577: Problem with step function in signal.scipy.ltisys.py
 Reporter:  clovisgo               |       Owner:  somebody    
     Type:  defect                 |      Status:  needs_review
 Priority:  normal                 |   Milestone:  0.8.0       
Component:  scipy.signal           |     Version:              
 Keywords:  step function problem  |  

Comment(by warren.weckesser):

 r6366 and r6367 are related to this ticket.  In r6366, a change was made
 that is similar to the patch suggested here, so a system for which the
 smallest magnitude of an eigenvalue is zero will not cause an error when
 it computes the default time values for a step response.

 The problem with using step(), however, is that it uses lsim() to compute
 the solution, and lsim() uses an analytical solution that is only valid if
 the system matrix is nonsingular and not defective.

 In r6367, I added step2(), which uses lsim2(), and lsim2() uses odeint to
 compute the solution.

 So, until someone implements a more robust version of step(), a work-
 around for its problems is to use the function step2(). (That's
 scipy.signal.step2; I didn't add a corresponding method to the lti

 In [1]: from scipy.signal import lti, step2

 In [2]: s = lti([1.], [1., 0.])

 In [3]: t, y = step2(s, atol=1e-8, rtol=1e-6)

 In [4]: t[:5], y[:5]
 (array([ 0.        ,  0.07070707,  0.14141414,  0.21212121,  0.28282828]),
  array([ 0.        ,  0.07070707,  0.14141414,  0.21212121,  0.28282828]))

 In [5]: t[-5:], y[-5:]
 (array([ 6.71717172,  6.78787879,  6.85858586,  6.92929293,  7.        ]),
  array([ 6.71717172,  6.78787879,  6.85858586,  6.92929293,  7.        ]))


Ticket URL: <http://projects.scipy.org/scipy/ticket/577#comment:6>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.

More information about the Scipy-tickets mailing list