scipy.interpolate.barycentric_interpolate

scipy.interpolate.barycentric_interpolate(xi, yi, x, axis=0)[源代码]

多项式插值的方便函数。

构造通过一组给定点的多项式,然后计算该多项式。出于数值稳定性的原因,此函数不计算多项式的系数。

此函数使用“重心插值”方法,该方法将问题视为有理函数插值的特例。此算法在数值上相当稳定,但即使在精确计算的世界中也是如此,除非 x 坐标的选择非常谨慎-切比雪夫零点(例如,cos(i*pi/n))是一个很好的选择-由于Runge现象,多项式插值本身就是一个非常病态的过程。

参数
xiarray_like

多项式应经过的点的x坐标的一维数组

yiarray_like

多项式应该经过的点的y坐标。

x标量或类似数组

要计算插值器的点。

axis整型,可选

与x坐标值对应的yi数组中的轴。

退货
y标量或类似数组

插值值。形状是通过将原始数组中的插值轴替换为x的形状来确定的。

参见

BarycentricInterpolator

二进制中心插值器

注意事项

内插权重的构建是一个相对较慢的过程。如果您想用相同的xi(但可能会改变yi或x)多次调用它,那么应该使用这个类 BarycentricInterpolator 。这就是此函数在内部使用的内容。

示例

我们可以使用重心插值对2D观测数据进行插值:

>>> 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