BPoly#
- класс scipy.interpolate.BPoly(c, x, экстраполяция=None, ось=0)[источник]#
Кусочно-полиномиальная функция в базисе Бернштейна.
Полином между
x[i]иx[i + 1]записывается в базисе полиномов Бернштейна:S = sum(c[a, i] * b(a, k; x) for a in range(k+1)),
где
kявляется степенью полинома, и:b(a, k; x) = binom(k, a) * t**a * (1 - t)**(k - a),
с
t = (x - x[i]) / (x[i+1] - x[i])иbinomэто биномиальный коэффициент.- Параметры:
- cndarray, форма (k, m, …)
Коэффициенты полинома, порядок k и m интервалы
- xndarray, shape (m+1,)
Точки разрыва полинома. Должны быть отсортированы в порядке возрастания или убывания.
- экстраполяцияbool, необязательно
Если bool, определяет, следует ли экстраполировать на точки вне границ на основе первого и последнего интервалов или возвращать NaN. Если 'periodic', используется периодическая экстраполяция. По умолчанию True.
- осьint, необязательный
Ось интерполяции. По умолчанию равна нулю.
- Атрибуты:
- xndarray
Точки разрыва.
- cndarray
Коэффициенты полиномов. Они преобразуются в 3-D массив, где последнее измерение представляет замыкающие измерения исходного массива коэффициентов.
- осьint
Ось интерполяции.
Методы
__call__(x[, nu, extrapolate])Вычислить кусочно-полиномиальную функцию или её производную.
extend(c, x)Добавить дополнительные точки разрыва и коэффициенты к полиному.
derivative([nu])Создать новый кусочно-полиномиальный объект, представляющий производную.
antiderivative([nu])Создать новый кусочно-полиномиальный объект, представляющий первообразную.
integrate(a, b[, extrapolate])Вычислить определённый интеграл по кусочно-полиномиальной функции.
construct_fast(c, x[, extrapolate, axis])Построить кусочно-полиномиальную функцию без проверок.
from_power_basis(pp[, extrapolate])Построить кусочно-полиномиальную функцию в базисе Бернштейна из полинома в степенном базисе.
from_derivatives(xi, yi[, orders, extrapolate])Построить кусочно-полиномиальную функцию в базисе Бернштейна, совместимую с заданными значениями и производными в точках разрыва.
Смотрите также
PPolyкусочно-полиномиальные функции в степенном базисе
Примечания
Свойства полиномов Бернштейна хорошо задокументированы в литературе, см., например [1] [2] [3].
Ссылки
[2]Кеннет И. Джой, полиномы Бернштейна, http://www.idav.ucdavis.edu/education/CAGDNotes/Bernstein-Polynomials.pdf
[3]E. H. Doha, A. H. Bhrawy, and M. A. Saker, Boundary Value Problems, vol 2011, article ID 829546, DOI:10.1155/2011/829543.
Примеры
>>> from scipy.interpolate import BPoly >>> x = [0, 1] >>> c = [[1], [2], [3]] >>> bp = BPoly(c, x)
Это создаёт полином 2-го порядка
\[\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}\]