scipy.interpolate.BPoly.

from_derivatives#

метод класса BPoly.from_derivatives(xi, yi, порядки=None, экстраполяция=None)[источник]#

Построить кусочно-полиномиальную функцию в базисе Бернштейна, совместимую с указанными значениями и производными в точках разрыва.

Параметры:
xiarray_like

отсортированный одномерный массив x-координат

yiarray_like или список array_likes

yi[i][j] является jth производная известна в xi[i]

порядкиNone или int или array_like из int. По умолчанию: None.

Задает степень локальных полиномов. Если не None, некоторые производные игнорируются.

экстраполяцияbool или 'periodic', опционально

Если bool, определяет, следует ли экстраполировать на точки вне границ на основе первого и последнего интервалов или возвращать NaN. Если 'periodic', используется периодическая экстраполяция. По умолчанию True.

Примечания

Если k производные заданы в точке разрыва x, построенный полином точно k раз непрерывно дифференцируема в x, если только order предоставляется явно. В последнем случае гладкость полинома в точке разрыва контролируется order.

Определяет количество производных для сопоставления на каждом конце из order и количество доступных производных. Если возможно, используется одинаковое количество производных с каждого конца; если число нечётное, он пытается взять лишнюю из y2. В любом случае, если недостаточно производных доступно на одном конце или другом, он берёт достаточно, чтобы восполнить общее количество с другого конца.

Если порядок слишком высок и недостаточно доступных производных, возникает исключение.

Примеры

>>> from scipy.interpolate import BPoly
>>> BPoly.from_derivatives([0, 1], [[1, 2], [3, 4]])

Создает полином f(x) степени 3, определенной на [0, 1] такой, что f(0) = 1, df/dx(0) = 2, f(1) = 3, df/dx(1) = 4

>>> BPoly.from_derivatives([0, 1, 2], [[0, 1], [0], [2]])

Создаёт кусочно-полиномиальную функцию f(x), так что f(0) = f(1) = 0, f(2) = 2, и df/dx(0) = 1. На основе количества предоставленных производных, порядок локальных полиномов равен 2 на [0, 1] и 1 на [1, 2]. Обратите внимание, что никаких ограничений не накладывается на производные в x = 1 и x = 2.

Действительно, явная форма полинома:

f(x) = | x * (1 - x),  0 <= x < 1
       | 2 * (x - 1),  1 <= x <= 2

Так что f’(1-0) = -1 и f’(1+0) = 2