scipy.interpolate.

PchipInterpolator#

класс scipy.interpolate.PchipInterpolator(x, y, ось=0, экстраполяция=None)[источник]#

PCHIP интерполятор, сохраняющий форму (гладкость C1).

x и y являются массивами значений, используемых для аппроксимации некоторой функции f, с y = f(x). Интерполянт использует монотонные кубические сплайны для нахождения значения новых точек. (PCHIP означает Piecewise Cubic Hermite Interpolating Polynomial).

Параметры:
xndarray, форма (npoints, )

Одномерный массив монотонно возрастающих вещественных значений. x не может содержать повторяющиеся значения (иначе f переопределена)

yndarray, форма (..., npoints, ...)

N-мерный массив действительных значений. yдлина вдоль оси интерполяции должна быть равна длине x. Используйте axis параметр для выбора оси интерполяции.

осьint, необязательный

Ось в y массив, соответствующий значениям x-координаты. По умолчанию равен axis=0.

экстраполяцияbool, необязательно

Экстраполировать ли точки вне границ на основе первого и последнего интервалов или возвращать NaN.

Атрибуты:
ось
c
экстраполяция
x

Методы

__call__(x[, nu, extrapolate])

Вычислить кусочно-полиномиальную функцию или её производную.

derivative([nu])

Создать новый кусочно-полиномиальный объект, представляющий производную.

antiderivative([nu])

Создать новый кусочно-полиномиальный объект, представляющий первообразную.

integrate(a, b[, extrapolate])

Вычислить определённый интеграл по кусочно-полиномиальной функции.

solve([y, разрыв, экстраполяция])

Найти вещественные решения уравнения pp(x) == y.

roots([discontinuity, extrapolate])

Найти вещественные корни кусочно-полиномиальной функции.

Смотрите также

CubicHermiteSpline

Кусочно-кубический интерполятор.

Akima1DInterpolator

Интерполятор Akima 1D.

CubicSpline

Кубический сплайн-интерполятор данных.

PPoly

Кусочно-полиномиальная функция в терминах коэффициентов и точек разрыва.

Примечания

Интерполятор сохраняет монотонность в данных интерполяции и не дает выбросов, если данные не гладкие.

Первые производные гарантированно непрерывны, но вторые производные могут иметь разрывы в \(x_k\).

Определяет производные в точках \(x_k\), \(f'_k\), используя алгоритм PCHIP [1].

Пусть \(h_k = x_{k+1} - x_k\), и \(d_k = (y_{k+1} - y_k) / h_k\) являются наклонами во внутренних точках \(x_k\). Если знаки \(d_k\) и \(d_{k-1}\) различаются или любой из них равен нулю, тогда \(f'_k = 0\). В противном случае оно задается взвешенным гармоническим средним

\[\frac{w_1 + w_2}{f'_k} = \frac{w_1}{d_{k-1}} + \frac{w_2}{d_k}\]

где \(w_1 = 2 h_k + h_{k-1}\) и \(w_2 = h_k + 2 h_{k-1}\).

Конечные наклоны устанавливаются с использованием односторонней схемы [2].

Ссылки

[1]

Ф. Н. Фрич и Дж. Батланд, Метод построения локальных монотонных кусочно-кубических интерполянтов, SIAM J. Sci. Comput., 5(2), 300-304 (1984). DOI:10.1137/0905021.

[2]

см., например, C. Moler, Numerical Computing with Matlab, 2004. DOI:10.1137/1.9780898717952