[SciPy-user] splrep/splev versus interp1d
Stéfan van der Walt
stefan at sun.ac.za
Wed May 21 07:53:29 EDT 2008
Hi Johann
If I interpolate on points including the originals, i.e.
x2 = sp.linspace(0,10,200,endpoint=False)
then I see that, for both methods, they at least go through those points:
n [147]: for nr,i in enumerate(x):
print y[nr] - y2[x2 == i]
.....:
.....:
[ 3.01232352e-18]
[ -1.11022302e-16]
[ -1.11022302e-16]
[ 2.77555756e-17]
[ 0.]
[ -3.33066907e-16]
[ 0.]
[ 0.]
[ 1.11022302e-16]
[ 2.22044605e-16]
[]
In [149]: for nr,i in enumerate(x):
print y[nr] - y3[x2 == i]
.....:
.....:
[ -7.49400542e-16]
[ 6.66133815e-16]
[ 6.66133815e-16]
[ -1.38777878e-16]
[ 3.33066907e-16]
[ 8.88178420e-16]
[ -1.11022302e-16]
[ 4.44089210e-16]
[ 2.22044605e-16]
[ -3.88578059e-16]
[]
Maybe the two algorithms use different smoothness measures? I'm
interested to know why this happens, but I don't have more time to
look at it right now, unfortunately.
Thanks
Stéfan
2008/5/21 Johann Rohwer <jr at sun.ac.za>:
> Hi,
>
> What is the difference (in terms of the underlying algorithms) between
> splines generated by sp.interpolate.interp1d and sp.interpolate.splrep/splev?
>
> As an example, when I do a simple spline interpolation of a sparsely sampled
> sin function, the two methods give me close but not identical results
> (especially close to the bounds of the x data the interpolated values differ).
>
> Code:
> import scipy as sp
> sp.pkgload('interpolate')
> x=sp.linspace(0,10,11)
> y=sp.sin(x)
> x2=sp.linspace(0,10,201)
> tck=sp.interpolate.splrep(x,y,k=3)
> y2=sp.interpolate.splev(x2,tck)
> f=sp.interpolate.interp1d(x,y,kind=3)
> y3=f(x2)
>
> y2 and y3 differ!
>
> Regards
> Johann
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user
>
More information about the SciPy-User
mailing list