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]).
Parameters: | c : ndarray, shape (k, m, ...)
x : ndarray, shape (m+1,)
extrapolate : bool, optional
|
---|
See also
Notes
Properties of Bernstein polynomials are well documented in the literature. Here’s a non-exhaustive list:
[R32] | http://en.wikipedia.org/wiki/Bernstein_polynomial |
[R33] | Kenneth I. Joy, Bernstein polynomials, http://www.idav.ucdavis.edu/education/CAGDNotes/Bernstein-Polynomials.pdf |
[R34] | E. H. Doha, A. H. Bhrawy, and M. A. Saker, Boundary Value Problems, vol 2011, article ID 829546, doi:10.1155/2011/829543 |
Examples
>>> x = [0, 1]
>>> c = [[1], [2], [3]]
>>> bp = BPoly(c, x)
This creates a 2nd order polynomial
Attributes
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. |
Methods
__call__(x[, nu, extrapolate]) | Evaluate the piecewise polynomial or its derivative |
extend(c, x[, right]) | Add additional breakpoints and coefficients to the polynomial. |
derivative([nu]) | Construct a new piecewise polynomial representing the derivative. |
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. |