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-ю' производную.
- rng
numpy.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()