[SciPy-User] am I using interpolate.PiecewisePolynomial correctly?

Evgeni Burovski evgeny.burovskiy at gmail.com
Wed Feb 27 10:54:44 EST 2013


Dear All,

I'm trying to use the interpolate.PiecewisePolynomial for the first time,
and I'm wondering if the timings I see are not due to some simple
misunderstanding of mine. Specifically, given a simple example,


$ cat pp.py
import numpy as np
from scipy.interpolate import interp1d, PiecewisePolynomial

def f(x):
    return np.tan(x)
def fprime(x):
    return 1./np.cos(x)**2

Npts = 50
grid = np.array([(np.pi/2.-0.1)*j/Npts for j in xrange(Npts+1)])

interp = interp1d(grid, f(grid), kind='cubic')
piecewise = PiecewisePolynomial(grid, np.array([np.r_[f(x), fprime(x)] for
x in grid]), orders=3)


it looks like evaluation of a PiecewisePolynomial takes ages:

$ python -mtimeit -s"from numpy import random, pi; import pp; x_new =
random.rand(1000)*pi/3." "pp.piecewise(x_new)"
100 loops, best of 3: 3.2 msec per loop
$
$ python -mtimeit -s"from numpy import random, pi; import pp; x_new =
random.rand(1000)*pi/3." "pp.interp(x_new)"
10000 loops, best of 3: 143 usec per loop

(I understand the difference in functionality between the two).

I'm wondering if this sort of timings is an artifact of the generality of
PiecewisePolynomials, or am I just not using them properly?

Best,

Evgeni
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20130227/8d508cfa/attachment.html>


More information about the SciPy-User mailing list