1
$\begingroup$

I am doing a cubic spline interpolation using scipy.interpolate.splrep as following:

import numpy as np
import scipy.interpolate

x = np.linspace(0, 10, 10)
y = np.sin(x)

tck = scipy.interpolate.splrep(x, y, task=0, s=0)
F   = scipy.interpolate.PPoly.from_spline(tck)

I print t and c:

print F.x

array([  0.        ,   0.        ,   0.        ,   0.        ,
     2.22222222,   3.33333333,   4.44444444,   5.55555556,
     6.66666667,   7.77777778,  10.        ,  10.        ,
    10.        ,  10.        ])

print F.c

array([[ -1.82100357e-02,  -1.82100357e-02,  -1.82100357e-02,
     -1.82100357e-02,   1.72952212e-01,   1.26008293e-01,
     -4.93704109e-02,  -1.71230879e-01,  -1.08680287e-01,
      1.00658224e-01,   1.00658224e-01,   1.00658224e-01,
      1.00658224e-01],
   [ -3.43151441e-01,  -3.43151441e-01,  -3.43151441e-01,
     -3.43151441e-01,  -4.64551679e-01,   1.11955696e-01,
      5.31983340e-01,   3.67415303e-01,  -2.03354294e-01,
     -5.65621916e-01,   1.05432909e-01,   1.05432909e-01,
      1.05432909e-01],
   [  1.21033389e+00,   1.21033389e+00,   1.21033389e+00,
      1.21033389e+00,  -5.84561936e-01,  -9.76335250e-01,
     -2.60847433e-01,   7.38484392e-01,   9.20774403e-01,
      6.63563923e-02,  -9.56285846e-01,  -9.56285846e-01,
     -9.56285846e-01],
   [ -4.94881722e-18,  -4.94881722e-18,  -4.94881722e-18,
     -4.94881722e-18,   7.95220057e-01,  -1.90567963e-01,
     -9.64317117e-01,  -6.65101515e-01,   3.74151231e-01,
      9.97097891e-01,  -5.44021111e-01,  -5.44021111e-01,
     -5.44021111e-01]])

So I had supplied the x array as :

array([  0.        ,   1.11111111,   2.22222222,   3.33333333,
     4.44444444,   5.55555556,   6.66666667,   7.77777778,
     8.88888889,  10.        ])

Q.1: The F.x (knots) are not the same as original x array and has duplicate values (possibly to force first derivative to zero?). Also some values in x (1.11111111, 8.88888889) are missing in F.x. Any ideas?

Q.2 The shape of F.c is (4, 13). I understand that 4 comes from the fact that it is cubic spline fit. But I do not know how do I select coefficients for each of the 9 sections that I want (from x = 0 to x=1.11111, x = 1.111111 to x = 2.222222 and so on). Any help in extraction of the coefficients for different segments would be appreciated.

0 Answers 0