SplineInterpolation1D

class SplineInterpolation1D(x_values, y_values, left_boundary_type=0, left_boundary_value=0.0, right_boundary_type=0, right_boundary_value=0.0)

Constructor for the SplineInterpolation1D object.

Parameters:
  • x_values (list(float,...)) – A list of x values of data points.
  • y_values (list(float,...)) – A list of y values of data points.
  • left_boundary_type (int (0 | 1 | 2)) –

    Boundary condition type for the left boundary.

    • 0 - Parabolically terminated spline (left_boundary_value is ignored).
    • 1 - First derivative boundary condition.
    • 2 - Second derivative boundary condition.
  • left_boundary_value (float) – Left boundary condition value.
  • right_boundary_type (int (0 | 1 | 2)) –

    Boundary condition type for the right boundary.

    • 0 - Parabolically terminated spline (right_boundary_value is ignored).
    • 1 - First derivative boundary condition.
    • 2 - Second derivative boundary condition.
  • right_boundary_value (float) – Right boundary condition value.
derivatives(x)

Calculate and return a tuple containing the derivatives (f, df/dx, d2f/dx2) of the spline interpolation evaluated at x.

@param x : The x value. @type : float @return The tuple (f, df/dx, d2f/dx2)

Usage Examples

Define a spline interpolation of the sin function:

x = numpy.linspace(-4,9,20)
y = numpy.sin(x)
f = SplineInterpolation1D(x,y)

Using the function, we obtain:

>>> print f(3)
0.141203196688
>>> print f.derivatives(3)
(0.14120319668785397, -0.98998913849695858, -0.14589372176098986)
>>> print numpy.array(f.derivatives(3)) - \\
numpy.array((numpy.sin(3), numpy.cos(3), -numpy.sin(3)))
[ 8.31886280e-05   3.35810349e-06  -4.77371370e-03]

Notes

  • The data points does not need to have an increasing value of x.
  • The data points does not need to have an equidistant separation.
  • Function values outside the interpolation range will be extrapolated using the outermost spline function.