天天看点

python interpolate函数_python scipy interpolate.KroghInterpolator用法及代码示例

为一组点插值多项式。

多项式通过所有对(xi,yi)。可以在每个点xi处另外指定多个导数;这可以通过重复值xi并将导数指定为连续的yi值来完成。

允许评估多项式及其所有导数。出于数值稳定性的考虑,尽管可以通过评估所有导数来获得多项式的系数,但该函数不会计算多项式的系数。

参数:

xi:array_like, length N已知的x-coordinates。必须按升序排序。

yi:array_like已知的y-coordinates。当xi连续出现两次或两次以上时,相应的yi表示导数值。

axis:int, 可选参数yi数组中的轴对应于x坐标值。

注意:

请注意,此处实现的算法不一定是已知的数值最稳定的算法。此外,即使在一个精确的计算世界中,除非非常仔细地选择x坐标-切比雪夫零点(例如cos(i * pi /n))是一个不错的选择-多项式插值本身由于Runge现象是一个非常ill-conditioned的过程。一般而言,即使使用well-chosen x值,度数也超过约30会导致此代码中的数值不稳定问题。

参考文献:

Krogh,“多项式插值和数值微分的有效算法”,1970年。

例子:

要生成在0和1处为零且在0处具有导数2的多项式,请调用

>>> from scipy.interpolate import KroghInterpolator

>>> KroghInterpolator([0,0,1],[0,2,0])

这构造了二次2 * X ** 2-2 * X。微分条件由xi数组中的重复零表示;相应的yi值为函数值0和2的导数。

再举一个例子,给定每个点的xi,yi和一个导数ypi,可以将适当的数组构造为:

>>> xi = np.linspace(0, 1, 5)

>>> yi, ypi = np.random.rand(2, 5)

>>> xi_k, yi_k = np.repeat(xi, 2), np.ravel(np.dstack((yi,ypi)))

>>> KroghInterpolator(xi_k, yi_k)

要生成vector-valued多项式,请为yi提供一个高维数组:

>>> KroghInterpolator([0,1],[[2,3],[4,5]])

这构造了一个线性多项式,给定了(2,3)为0和(4,5)为1。

属性

dtype:

方法:

__call__(self, x)

评估插值

derivative(self, x[, der])

评估点x处的多项式的一个导数

derivatives(self, x[, der])

评估点x处的多项式的许多导数