当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy interpolate.KroghInterpolator用法及代码示例


本文简要介绍 python 语言中 scipy.interpolate.KroghInterpolator 的用法。

用法:

class  scipy.interpolate.KroghInterpolator(xi, yi, axis=0)#

对一组点进行插值多项式。

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

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

参数

xi 类似数组,形状 (npoints, )

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

yi 数组,形状(...,npoints,...)

已知 y 坐标。当 xi 连续出现两次或多次时,相应的 yi 表示导数值。 yi 沿插补轴的长度必须等于 xi 的长度。使用轴参数选择正确的轴。

axis 整数,可选

轴在对应于 x 坐标值的数组。默认为axis=0.

注意

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

基于[1]。

参考

[1]

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

例子

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

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

这构造了二次方程\(2x^2-2x\) 。导数条件由重复的零表示xi大批;对应的 yi 值为 0(函数值)和 2(导数值)。

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

>>> import numpy as np
>>> 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)

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

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

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

属性

dtype

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.interpolate.KroghInterpolator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。