scipy.interpolate.KroghInterpolator

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

一组点的插值多项式。

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

允许计算多项式及其所有导数。出于数值稳定性的原因,此函数不计算多项式的系数,尽管这些系数可以通过计算所有导数来获得。

参数
xi类似数组,长度为N

已知的x坐标。必须按升序排序。

yiarray_like

已知的y坐标。当an xi连续出现两次或两次以上时,相应的yi表示导数值。

axis整型,可选

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

注意事项

请注意,这里实现的算法不一定是已知的最稳定的数值。此外,即使在精确计算的世界中,除非非常仔细地选择x坐标(例如,cos(i*pi/n)),否则切比雪夫零点(例如,cos(i*pi/n))是一个很好的选择-由于Runge现象,多项式插值本身是一个非常病态的过程。通常,即使选择了精心选择的x值,高于约30度也会导致此代码中的数值不稳定问题。

基于 [1].

参考文献

1

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

示例

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

>>> from scipy.interpolate import KroghInterpolator
>>> KroghInterpolator([0,0,1],[0,2,0])

这构成了二次型2 X 2-2 x.导数条件由xi数组中的重复零表示;对应的yi值是函数值0,导数值2。

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

>>> rng = np.random.default_rng()
>>> xi = np.linspace(0, 1, 5)
>>> yi, ypi = rng.random((2, 5))
>>> xi_k, yi_k = np.repeat(xi, 2), np.ravel(np.dstack((yi,ypi)))
>>> KroghInterpolator(xi_k, yi_k)

要生成向量值多项式,请为yi提供一个更高维数组:

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

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

属性
dtype

方法:

__call__ \(X)

对插值求值

derivative \(X[, der] )

求多项式在点x处的一次导数

derivatives \(X[, der] )

求多项式在点x处的多项式的导数