cupyx.scipy.interpolate.CubicHermiteSpline#

class cupyx.scipy.interpolate.CubicHermiteSpline(x, y, dydx, axis=0, extrapolate=None)[source]#

分段三次插值器,匹配值和一阶导数。

结果表示为一个 PPoly 实例。 [1]

参数:
  • x (类数组, 形状 (n,)) – 包含自变量值的一维数组。值必须是实数、有限且严格递增。

  • y (类数组) – 包含因变量值的数组。它可以具有任意维数,但沿 axis (见下文) 方向的长度必须与 x 的长度匹配。值必须是有限的。

  • dydx (类数组) – 包含因变量导数的数组。它可以具有任意维数,但沿 axis (见下文) 方向的长度必须与 x 的长度匹配。值必须是有限的。

  • axis (int, 可选) – 假定 y 变化的轴。这意味着对于 x[i],对应的值是 cupy.take(y, i, axis=axis)。默认为 0。

  • extrapolate ({bool, 'periodic', None}, 可选) – 如果为 bool 类型,则确定是否根据第一个和最后一个区间外推到界外点,或者返回 NaNs。如果为 'periodic',则使用周期性外推。如果为 None (默认),则设置为 True。

变量:
  • x (ndarray, 形状 (n,)) – 断点。与传递给构造函数的 x 相同。

  • c (ndarray, 形状 (4, n-1, ...)) – 每个段上多项式的系数。尾部维度与 y 的维度匹配,不包括 axis。例如,如果 y 是一维的,则 c[k, i](x-x[i])**(3-k)x[i]x[i+1] 之间的段上的系数。

  • axis (int) – 插值轴。与传递给构造函数的轴相同。

另请参阅

Akima1DInterpolator

Akima 一维插值器。

PchipInterpolator

PCHIP 一维单调三次插值器。

PPoly

以系数和断点表示的分段多项式

注意

如果要创建匹配更高阶导数的高阶样条,请使用 BPoly.from_derivatives

参考

方法

__call__(x, nu=0, extrapolate=None)[source]#

评估分段多项式或其导数。

参数:
  • x (类数组) – 要评估插值器的点。

  • nu (int, 可选) – 要评估的导数阶数。必须是非负数。

  • extrapolate ({bool, 'periodic', None}, 可选) – 如果为 bool 类型,则确定是否根据第一个和最后一个区间外推到界外点,或者返回 NaNs。如果为 'periodic',则使用周期性外推。如果为 None (默认),则使用 self.extrapolate

返回值:

y – 插值结果。形状由将原始数组中的插值轴替换为 x 的形状确定。

返回类型:

类数组

注意

导数在每个多项式段上分段评估,即使多项式在断点处不可微。多项式区间被视为半开区间 [a, b),除了最后一个区间是闭合的 [a, b]

antiderivative(nu=1)[source]#

构造一个表示反导数的新分段多项式。反导数也是函数的不定积分,导数是其逆运算。

参数:

nu (int, 可选) – 要评估的反导数阶数。默认为 1,即计算一阶积分。如果为负数,则返回导数。

返回值:

pp – 表示此多项式反导数的、阶数为 k2 = k + n 的分段多项式。

返回类型:

PPoly

注意

此函数返回的反导数是连续的,并且连续可微直到 n-1 阶,误差在浮点舍入范围内。

如果计算了反导数且 self.extrapolate='periodic',则返回的实例的 extrapolate 将设置为 False。这是因为反导数不再是周期性的,并且在初始给定 x 区间之外的正确评估是困难的。

classmethod construct_fast(c, x, extrapolate=None, axis=0)[source]#

构造分段多项式,不进行检查。接受与构造函数相同的参数。输入参数 cx 必须是形状和类型正确的数组。c 数组只能是 float 和 complex 数据类型,x 数组必须是 float 数据类型。

derivative(nu=1)[source]#

构造一个表示导数的新分段多项式。

参数:

nu (int, 可选) – 要评估的导数阶数。默认为 1,即计算一阶导数。如果为负数,则返回反导数。

返回值:

pp – 表示此多项式导数的、阶数为 k2 = k - n 的分段多项式。

返回类型:

PPoly

注意

导数在每个多项式段上分段评估,即使多项式在断点处不可微。多项式区间被视为半开区间 [a, b),除了最后一个区间是闭合的 [a, b]

extend(c, x)[source]#

向多项式添加额外的断点和系数。

参数:
  • c (ndarray, 大小 (k, m, ...)) – 区间内多项式的附加系数。请注意,第一个附加区间将使用 self.x 的一个端点形成。

  • x (ndarray, 大小 (m,)) – 附加断点。必须与 self.x 以相同的顺序排序,并且位于当前断点的右侧或左侧。

classmethod from_bernstein_basis(bp, extrapolate=None)[source]#

从 Bernstein 基的多项式构造幂基的分段多项式。

参数:
  • bp (BPoly) – 一个 Bernstein 基多项式,由 BPoly 创建。

  • extrapolate (bool or 'periodic', 可选) – 如果为 bool 类型,则确定是否根据第一个和最后一个区间外推到界外点,或者返回 NaNs。如果为 'periodic',则使用周期性外推。默认为 True。

classmethod from_spline(tck, extrapolate=None)[source]#

从样条构造分段多项式

参数:
  • tck – 一个样条,可以是一个 (knots, coefficients, degree) 元组或一个 BSpline 对象。

  • extrapolate (bool or 'periodic', 可选) – 如果为 bool 类型,则确定是否根据第一个和最后一个区间外推到界外点,或者返回 NaNs。如果为 'periodic',则使用周期性外推。默认为 True。

integrate(a, b, extrapolate=None)[source]#

计算分段多项式的定积分。

参数:
  • a (float) – 积分下限

  • b (float) – 积分上限

  • extrapolate ({bool, 'periodic', None}, 可选) – 如果为 bool 类型,则确定是否根据第一个和最后一个区间外推到界外点,或者返回 NaNs。如果为 'periodic',则使用周期性外推。如果为 None (默认),则使用 self.extrapolate

返回值:

ig – 分段多项式在 [a, b] 上的定积分

返回类型:

类数组

roots(discontinuity=True, extrapolate=None)[source]#

查找分段多项式的实根。

参数:
  • discontinuity (bool, 可选) – 是否将断点处不连续点的符号变化报告为根。

  • extrapolate ({bool, 'periodic', None}, 可选) – 如果为 bool 类型,则确定是否返回根据第一个和最后一个区间外推的多项式的根;‘periodic’ 的作用与 False 相同。如果为 None (默认),则使用 self.extrapolate

返回值:

roots – 多项式的根。如果 PPoly 对象描述了多个多项式,则返回值为一个对象数组,其每个元素都是一个包含根的 ndarray。

返回类型:

ndarray

另请参阅

PPoly.solve

solve(y=0.0, discontinuity=True, extrapolate=None)[source]#

找到方程 pp(x) == y 的实数解。

参数:
  • y (float, 可选) – 右侧值。默认为零。

  • discontinuity (bool, 可选) – 是否将断点处不连续点的符号变化报告为根。

  • extrapolate ({bool, 'periodic', None}, 可选) – 如果为 bool 类型,则确定是否返回根据第一个和最后一个区间外推的多项式的根;‘periodic’ 的作用与 False 相同。如果为 None (默认),则使用 self.extrapolate

返回值:

roots – 多项式的根。如果 PPoly 对象描述了多个多项式,则返回值为一个对象数组,其每个元素都是一个包含根的 ndarray。

返回类型:

ndarray

注意

此例程仅适用于实值多项式。如果分段多项式包含恒为零的段,则根列表将包含相应区间的起始点,后跟一个 nan 值。如果多项式在断点处不连续,并且断点处存在符号变化,则如果 discont 参数为 True,则会报告此情况。

目前,尚无实际实现。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。

属性

c#
x#
extrapolate#
axis#