scipy.interpolate.

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}\]