I'm trying to port a program which currently uses a hand-rolled C++
interpolator (developed by a mathematician colleage) over to use the
interpolators provided by scipy. I'd like to use or wrap the scipy
interpolator so that it's behavior is as close as possible behavior to
our old interpolator.

A key difference between the two functions is that in our original
interpolator - if the input value is above or below the input range, our
original interpolator will extrapolate the result. If you try this with
the scipy interpolator it raises a ValueError.  Consider this program as
an example:

# EXAMPLE
import numpy as np
from scipy import interpolate

x = np.arange(0,10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y)

print f(9)
print f(11) ##### Causes ValueError, because it's greater than max(x) #
END OF EXAMPLE

In the example above, I'd like the last line not to raise a ValueError,
but to return a value calculated from the gradient of the line between
f(x[-2]) and f(x[-1]). 

Is there a sensible way to make it so that instead of crashing, the
final line will simply do a linear extrapolate, continuing the gradients
defined by the first and last pairs of input data-points to infinity? 

I know that this is a simple enough function to write myself, however
I'd rather not re-invent the wheel, especially as if I wanted to
introduce new basic math functions into our library they would need to
be validated by a number of gate-keepers before they were permitted into
our library!

I'm on Python 2.4, scipy 0.7 on Windows XP, 32bit

Incidentally, I have seen this tutorial which has a "left" and "right"
argument on the interpolator. This does not seem to exist on any version
of the interp1d function which I can use on Windows Python 2.4 - can
anybody speculate which version of Scipy this tutorial is intended for?
http://projects.scipy.org/scipy/browser/branches/Interpolate1D/docs/tuto
rial.rst?rev=4591


Sal
This email does not create a legal relationship between any member of the 
Crédit Agricole group and the recipient or constitute investment advice. 
The content of this email should not be copied or disclosed (in whole or part) 
to any other person. It may contain information which is 
confidential, privileged or otherwise protected from disclosure. If you are not 
the intended recipient, you should notify us and delete it from your system. 
Emails may be monitored, are not secure and may be amended, destroyed or 
contain viruses and in communicating with us such conditions are accepted. Any 
content which does not relate to business matters is not endorsed by us.

Crédit Agricole Corporate and Investment Bank is authorised by the Comité des 
Etablissements de Crédit et des Entreprises d'Investissement (CECEI) and 
supervised by the Commission Bancaire in France and subject to limited 
regulation by the Financial Services Authority.
Details about the extent of our regulation by the Financial Services Authority 
are available from us on request.
Crédit Agricole Corporate and Investment Bank is incorporated in France with 
limited liability and registered in England & Wales. Registration number: 
FC008194.
Registered office: Broadwalk House, 5 Appold Street, London, EC2A 2DA.
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to