[Numpy-discussion] Unexpected RuntimeWarning

Bob Dowling rjd4+numpy@cam.ac...
Fri Nov 23 06:07:51 CST 2012


> You may want to use this:
> http://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html

Thank you.  That's just what I needed.

Works a treat:
  --- start ---

import numpy

def chebyshev(x, m):
     '''Calculates Chebyshev functions of the first kind using the 
trigonometric identities.'''

     zone_a = x < -1.0
     zone_b = numpy.logical_and(-1.0 <= x, x <= 1.0)
     zone_c = 1.0 < x

     theta = numpy.piecewise(
         x,
         [zone_a, zone_b, zone_c],
         [lambda z: numpy.arccosh(numpy.abs(z)), numpy.arccos, 
numpy.arccosh]
         )

     y = numpy.piecewise(
         theta,
         [zone_a, zone_b, zone_c],
         [lambda z: (-1.0)**m*numpy.cosh(m*z), lambda z: numpy.cos(m*z), 
lambda z: numpy.cosh(m*z)]
         )

     return y


if __name__ == '__main__':
     x = numpy.linspace(-2.0, 2.0, 21)
     y = chebyshev(x,3)
     print(y)

  --- end---


More information about the NumPy-Discussion mailing list