scipy.interpolate.

barycentric_interpolate#

scipy.interpolate.barycentric_interpolate(xi, yi, x, ось=0, *, der=0, rng=None)[источник]#

Удобная функция для барицентрической интерполяции.

Строит полином, проходящий через заданный набор точек, затем вычисляет полином. По соображениям численной устойчивости, эта функция не вычисляет коэффициенты полинома.

Эта функция использует метод «барицентрической интерполяции», который рассматривает задачу как частный случай интерполяции рациональной функции. Этот алгоритм довольно устойчив численно, но даже в мире точных вычислений, если только x координаты выбираются очень тщательно - нули Чебышёва (например, cos(i*pi/n)) являются хорошим выбором - сама полиномиальная интерполяция является очень плохо обусловленным процессом из-за явления Рунге.

Параметры:
xiarray_like

1-D массив x-координат точек, через которые должен проходить полином

yiarray_like

Координаты y точек, через которые должен проходить полином.

xскаляр или array_like

Точка или точки, в которых вычисляется интерполянт.

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

Ось в yi массив, соответствующий значениям координаты x.

derint или list или None, опционально

Сколько производных вычислить, или None для всех потенциально ненулевых производных (то есть число, равное количеству точек), или список производных для вычисления. Это число включает значение функции как '0-ю' производную.

rngnumpy.random.Generator, опционально

Состояние генератора псевдослучайных чисел. Когда rng равно None, новый numpy.random.Generator создаётся с использованием энтропии из операционной системы. Типы, отличные от numpy.random.Generator передаются в numpy.random.default_rng для создания экземпляра Generator.

Возвращает:
yскаляр или array_like

Интерполированные значения. Форма определяется заменой оси интерполяции в исходном массиве на форму x.

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

BarycentricInterpolator

Барицентрический интерполятор

Примечания

Построение интерполяционных весов — относительно медленный процесс. Если вы хотите вызывать эту функцию много раз с одинаковыми xi (но, возможно, разными yi или x), вам следует использовать класс BarycentricInterpolator. Это то, что эта функция использует внутренне.

Примеры

Мы можем интерполировать 2D наблюдаемые данные, используя барицентрическую интерполяцию:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.interpolate import barycentric_interpolate
>>> x_observed = np.linspace(0.0, 10.0, 11)
>>> y_observed = np.sin(x_observed)
>>> x = np.linspace(min(x_observed), max(x_observed), num=100)
>>> y = barycentric_interpolate(x_observed, y_observed, x)
>>> plt.plot(x_observed, y_observed, "o", label="observation")
>>> plt.plot(x, y, label="barycentric interpolation")
>>> plt.legend()
>>> plt.show()
../../_images/scipy-interpolate-barycentric_interpolate-1.png