class scipy.interpolate.PPoly(c, x, extrapolate=None, axis=0)[source]

Piecewise polynomial in terms of coefficients and breakpoints

The polynomial between x[i] and x[i + 1] is written in the local power basis:

S = sum(c[m, i] * (xp - x[i])**(k-m) for m in range(k+1))

where k is the degree of the polynomial.


c : ndarray, shape (k, m, ...)

Polynomial coefficients, order k and m intervals

x : ndarray, shape (m+1,)

Polynomial breakpoints. Must be sorted in either increasing or decreasing order.

extrapolate : bool or ‘periodic’, 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. Default is True.

axis : int, optional

Interpolation axis. Default is zero.

See also

piecewise polynomials in the Bernstein basis


High-order polynomials in the power basis can be numerically unstable. Precision problems can start to appear for orders larger than 20-30.


x (ndarray) Breakpoints.
c (ndarray) Coefficients of the polynomials. They are reshaped to a 3-dimensional array with the last dimension representing the trailing dimensions of the original coefficient array.
axis (int) Interpolation axis.


__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 the equation pp(x) == y.
roots([discontinuity, extrapolate]) Find real roots of the the piecewise polynomial.
extend(c, x[, right]) Add additional breakpoints and coefficients to the polynomial.
from_spline(tck[, extrapolate]) Construct a piecewise polynomial from a spline
from_bernstein_basis(bp[, extrapolate]) Construct a piecewise polynomial in the power basis from a polynomial in Bernstein basis.
construct_fast(c, x[, extrapolate, axis]) Construct the piecewise polynomial without making checks.