class scipy.interpolate.BPoly(c, x, extrapolate=None)[source]

Piecewise polynomial in terms of coefficients and breakpoints

The polynomial in the i-th interval x[i] <= xp < x[i+1] is written in the Bernstein polynomial basis:

S = sum(c[a, i] * b(a, k; x) for a in range(k+1))

where k is the degree of the polynomial, and:

b(a, k; x) = comb(k, a) * t**k * (1 - t)**(k - a)

with t = (x - x[i]) / (x[i+1] - x[i]).



Polynomial coefficients, order k and m intervals

x : ndarray, shape (m+1,)

Polynomial breakpoints. These must be sorted in increasing order.

extrapolate : bool, optional


See also

piecewise polynomials in the power basis


Properties of Bernstein polynomials are well documented in the literature. Here’s a non-exhaustive list:

[R38]Kenneth I. Joy, Bernstein polynomials,
[R39]E. H. Doha, A. H. Bhrawy, and M. A. Saker, Boundary Value Problems, vol 2011, article ID 829546, doi:10.1155/2011/829543


>>> x = [0, 1]
>>> c = [[1], [2], [3]]
>>> bp = BPoly(c, x)

This creates a 2nd order polynomial

\[\begin{split}B(x) = 1 \times b_{0, 2}(x) + 2 \times b_{1, 2}(x) + 3 \times b_{2, 2}(x) \\ = 1 \times (1-x)^2 + 2 \times 2 x (1 - x) + 3 \times x^2\end{split}\]


x (ndarray) Breakpoints.


construct_fast(c, x[, extrapolate]) Construct the piecewise polynomial without making checks.
from_power_basis(pp[, extrapolate]) Construct a piecewise polynomial in Bernstein basis from a power basis polynomial.
from_derivatives(xi, yi[, orders, extrapolate]) Construct a piecewise polynomial in the Bernstein basis, compatible with the specified values and derivatives at breakpoints.