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