cupyx.scipy.interpolate.NdPPoly#

cupyx.scipy.interpolate.NdPPoly(c, x, extrapolate=None)[source]#

分段张量积多项式

xp = (x', y', z', ...) 处的值通过首先计算满足以下条件的区间索引 i 来评估

x[0][i[0]] <= x' < x[0][i[0]+1]
x[1][i[1]] <= y' < x[1][i[1]+1]
...

然后计算

S = sum(c[k0-m0-1,...,kn-mn-1,i[0],...,i[n]]
        * (xp[0] - x[0][i[0]])**m0
        * ...
        * (xp[n] - x[n][i[n]])**mn
        for m0 in range(k[0]+1)
        ...
        for mn in range(k[n]+1))

其中 k[j] 是维度 j 中多项式的次数。这种表示是分段多元幂基。

参数:
  • c (ndarray, shape (k0, ..., kn, m0, ..., mn, ...)) – 多项式系数,其中 kj 是多项式阶数,mj+1 是每个维度 j 的区间数。

  • x (ndim-tuple of ndarrays, shapes (mj+1,)) – 每个维度的多项式断点。这些必须按递增顺序排序。

  • extrapolate (bool, optional) – 是否根据第一个和最后一个区间对外插界外点,或返回 NaNs。默认值: True。

变量:
  • x (tuple of ndarrays) – 断点。

  • c (ndarray) – 多项式的系数。

另请参阅

PPoly

一维分段多项式

说明

幂基中的高阶多项式在数值上可能不稳定。

方法

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

评估分段多项式或其导数

参数:
  • x (array-like) – 用于评估插值函数点。

  • nu (tuple, optional) – 要评估的导数阶数。每个必须是非负数。

  • extrapolate (bool, optional) – 是否根据第一个和最后一个区间对外插界外点,或返回 NaNs。

返回:

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

返回类型:

类数组

说明

导数针对每个多项式段分段评估,即使多项式在断点处不可微分也是如此。多项式区间被视为半开区间 [a, b),最后一个区间除外,它是闭区间 [a, b]

antiderivative(nu)[source]#

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

参数:

nu (ndim-tuple of int) – 评估每个维度的导数阶数。如果为负,则返回导数。

返回:

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

返回类型:

PPoly

说明

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

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

构造分段多项式,不进行检查。

参数与构造函数相同。输入参数 cx 必须是正确形状和类型的数组。c 数组只能是 dtypes float 和 complex,x 数组必须是 dtype float。

derivative(nu)[source]#

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

参数:

nu (ndim-tuple of int) – 评估每个维度的导数阶数。如果为负,则返回反导数。

返回:

pp – 表示该多项式的导数的阶数 (k[0] - nu[0], …, k[n] - nu[n]) 的分段多项式。

返回类型:

NdPPoly

说明

导数针对每个多项式段分段评估,即使多项式在断点处不可微分也是如此。每个维度中的多项式区间被视为半开区间 [a, b),最后一个区间除外,它是闭区间 [a, b]

integrate(ranges, extrapolate=None)[source]#

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

参数:
  • ranges (ndim-tuple of 2-tuples float) – 每个维度的下限和上限序列,[(a[0], b[0]), ..., (a[ndim-1], b[ndim-1])]

  • extrapolate (bool, optional) – 是否根据第一个和最后一个区间对外插界外点,或返回 NaNs。

返回:

ig – 分段多项式在 [a[0], b[0]] x … x [a[ndim-1], b[ndim-1]] 上的定积分

返回类型:

类数组

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

计算一维定积分的 NdPPoly 表示

结果是表示积分的分段多项式

其中积分的维度由 axis 参数指定。

参数:
  • a (float) – 积分的下限和上限。

  • b (float) – 积分的下限和上限。

  • axis (int) – 计算一维积分的维度

  • extrapolate (bool, optional) – 是否根据第一个和最后一个区间对外插界外点,或返回 NaNs。

返回:

ig – 分段多项式在 [a, b] 上的定积分。如果多项式是一维的,则返回一个数组;否则,返回一个 NdPPoly 对象。

返回类型:

NdPPoly or 类数组

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。