[SciPy-User] Forced derivative interpolation??
denis
denis-bz-gg at t-online.de
Mon Oct 12 07:25:36 EDT 2009
An alternate component of array interpolate(), straight from Wikipedia
(don't forget h !) --
def spline_2p2s( t, p0, p1, m0, m1, h=1 ):
""" Hermite 2-point, 2-slope spline
see http://en.wikipedia.org/wiki/Cubic_Hermite_spline
"""
# 0 -> p0, 1 -> p1, 1/2 -> (p0 + p1) / 2 - (m1 - m0) / 8
try:
t2 = t*t
t3 = t2*t
return (
p0 * (2*t3 - 3*t2 + 1)
+ p1 * (-2*t3 + 3*t2)
+ m0 * h * (t3 - 2*t2 + t)
+ m1 * h * (t3 - t2) )
except ValueError:
# shape mismatch: objects cannot be broadcast to a single
shape
# i.e. points, t both vecs (is there a better way ?)
return [spline_2p2s( t, p0, p1, m0, m1, h ) for t in t.copy()]
cheers
-- denis
More information about the SciPy-User
mailing list