Skip to main content
`Ctrl`+`K`
scipy.interpolate.

# CubicHermiteSpline

class scipy.interpolate.CubicHermiteSpline(x, y, dydx, axis=0, extrapolate=None)

  Piecewise cubic interpolator to fit values and first derivatives (C1 smooth).

  The result is represented as a `PPoly` instance.

  Parameters:
    x array_like, shape (n,)

      1-D array containing values of the independent variable. Values must be real, finite and in strictly increasing order.

    y array_like

      Array containing values of the dependent variable. It can have arbitrary number of dimensions, but the length along `axis` (see below) must match the length of `x`. Values must be finite.

    dydx array_like

      Array containing derivatives of the dependent variable. It can have arbitrary number of dimensions, but the length along `axis` (see below) must match the length of `x`. Values must be finite.

    axis int, optional

      Axis along which y is assumed to be varying. Meaning that for `x[i]` the corresponding values are `np.take(y, i, axis=axis)`. Default is 0.

    extrapolate{bool, ‘periodic’, None}, optional

      If bool, determines whether to extrapolate to out-of-bounds points based on first and last intervals, or to return NaNs. If ‘periodic’, periodic extrapolation is used. If None (default), it is set to True. See Out-of-bounds behavior.

  Attributes:
    x ndarray, shape (n,)

      Breakpoints. The same `x` which was passed to the constructor.

    c ndarray, shape (4, n-1, …)

      Coefficients of the polynomials on each segment. The trailing dimensions match the dimensions of y, excluding `axis`. For example, if y is 1-D, then `c[k, i]` is a coefficient for `(x-x[i])**(3-k)` on the segment between `x[i]` and `x[i+1]`.

    axis int

      Interpolation axis. The same axis which was passed to the constructor.

  Methods

  `__call__`(x[, nu, extrapolate]) | Evaluate the piecewise polynomial or its derivative.
  `derivative`([nu]) | Construct a new piecewise polynomial representing the derivative.
  `antiderivative`([nu]) | Construct a new piecewise polynomial representing the antiderivative.
  `integrate`(a, b[, extrapolate]) | Compute a definite integral over a piecewise polynomial.
  `solve`([y, discontinuity, extrapolate]) | Find real solutions of the equation `pp(x) == y`.
  `roots`([discontinuity, extrapolate]) | Find real roots of the piecewise polynomial.

  See also

  `Akima1DInterpolator`

    Akima 1D interpolator.

  `PchipInterpolator`

    PCHIP 1-D monotonic cubic interpolator.

  `CubicSpline`

    Cubic spline data interpolator.

  `PPoly`

    Piecewise polynomial in terms of coefficients and breakpoints

  Notes

  If you want to create a higher-order spline matching higher-order derivatives, use `BPoly.from_derivatives`.

  Array API Standard Support

  `CubicHermiteSpline` has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

  Library | CPU | GPU
  --- | --- | ---
  NumPy | ✅ | n/a
  CuPy | n/a | ⛔
  PyTorch | ✅ | ⛔
  JAX | ⚠️ no JIT | ⛔
  Dask | ⛔ | n/a

  See Support for the array API standard for more information.

  References

  [1]

  Cubic Hermite spline on Wikipedia.