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处的多项式的导数