TransWikia.com

How to understand the return values of scipy.interpolate.splrep

Data Science Asked by mon on October 29, 2020

Background

Continuation of Spline interpolation – why cube with 2nd derivative
as following Cubic Spline Interpolation in youtube. The example in the youtube is below.

Implemented using scipy.interpolate.splrep and try to understand what the returns of the splrep function are.

Given the set of data points (x[i], y[i]) determine a smooth spline approximation of degree k on the interval xb <= x <= xe.

Returns
tck : tuple
A tuple
(t,c,k) containing the vector of knots, the B-spline coefficients, and the degree of the spline.

import numpy as np
from pylab import plt, mpl

plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline

def create_plot(x, y, styles, labels, axlabels):
    plt.figure(figsize=(10, 6))
    for i in range(len(x)):
        plt.plot(x[i], y[i], styles[i], label=labels[i])
        plt.xlabel(axlabels[0])
        plt.ylabel(axlabels[1])
    plt.legend(loc=0)

x = np.array([3.0, 4.5, 7.0, 9.0])
y = np.array([2.5, 1.0, 2.5, 0.5])
create_plot([x], [y], ['b'], ['y'], ['x', 'y'])

import scipy.interpolate as spi  
interpolation = spi.splrep(x, y, k=3)

IX = np.linspace(3, 9, 100)
IY = spi.splev(IX, interpolation)

create_plot(
    [x, IX], 
    [y, IY], 
    ['b', 'ro'],
    ['x', 'IY:interpolation'], 
    ['x', 'y']
)

Questions

How to interpret and understand the return values and which resources to look into to understand?

A tuple (t,c,k) containing the vector of knots, the B-spline coefficients, and the degree of the spline.

The return value on Knots

interpolation[0]

array([3., 3., 3., 3., 9., 9., 9., 9.])

I thought the first tuple element would be the knots which would be the x, but not. What are these 3., 3. … values?

The return values on B-spline co-efficient

interpolation[1]

array([ 2.5 , -2.21111111, 6.18888889, 0.5 , 0. , 0. , 0. , 0. ])

Please help or suggest where I should look into and what to understand about “B-spline coefficient” to be able to interpret these values?

The solution of the first interval is (0.186566, 1.6667, 0.24689), hence I thought these values would be in the 2nd element, but not. How the solution values would relate to the return values?

enter image description here

One Answer

This documentation may work:

BSpline

Univariate spline in the B-spline basis.

$S(x) = sum_{j=0}^{n-1} c_jB_{j,k;t}(x)$

where $B_{j,k;t}$ are B-spline basis functions of degree k and knots t.

Answered by Juan Esteban de la Calle on October 29, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP