cupyx.scipy.interpolate.PPoly#

class cupyx.scipy.interpolate.PPoly(c, x, extrapolate=None, axis=0)[source]#

分段多项式,由系数和断点定义。在 x[i]x[i + 1] 之间的多项式以局部幂基表示

S = sum(c[m, i] * (xp - x[i]) ** (k - m) for m in range(k + 1))

其中 k 是多项式的次数。

参数
  • c (ndarray, shape (k, m, ...)) – 多项式系数,阶数 km 个区间。

  • x (ndarray, shape (m+1,)) – 多项式断点。必须按升序或降序排序。

  • extrapolate (bool'periodic', optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。默认为 True。

  • axis (int, optional) – 插值轴。默认为零。

变量
  • x (ndarray) – 断点。

  • c (ndarray) – 多项式的系数。它们被重塑为 3-D 数组,其中最后一个维度表示原始系数数组的尾随维度。

  • axis (int) – 插值轴。

另请参阅

BPoly

Bernstein 基中的分段多项式

注意

幂基中的高阶多项式可能在数值上不稳定。对于大于 20-30 的阶数,可能会出现精度问题。

方法

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

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

参数
  • x (array_like) – 用于评估插值函数点。

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。如果为 None (默认),则使用 self.extrapolate

返回

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

返回类型

array_like

注意

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

antiderivative(nu=1)[source]#

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

参数

nu (int, optional) – 评估原函数(不定积分)的阶数。默认为 1,即计算一阶积分。如果为负数,则返回导数。

返回

pp – 表示该多项式原函数(不定积分)的 k2 = k + n 阶分段多项式。

返回类型

PPoly

注意

此函数返回的原函数(不定积分)是连续的,并且在浮点舍入误差范围内可连续微分至 n-1 阶。

如果计算了原函数(不定积分),并且 self.extrapolate='periodic',则对于返回的实例,它将被设置为 False。这是因为原函数(不定积分)不再是周期性的,并且在最初给定的 x 区间之外正确评估它很困难。

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

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

derivative(nu=1)[source]#

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

参数

nu (int, optional) – 评估导数的阶数。默认为 1,即计算一阶导数。如果为负数,则返回原函数(不定积分)。

返回

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

返回类型

PPoly

注意

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

extend(c, x)[source]#

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

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

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

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

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

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

  • extrapolate (bool'periodic', optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。默认为 True。

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

从样条构造一个分段多项式

参数
  • tck – 样条,作为 (knots, coefficients, degree) 元组或 BSpline 对象。

  • extrapolate (bool'periodic', optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。默认为 True。

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

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

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

  • b (float) – 积分上限

  • extrapolate ({bool, 'periodic', None}, optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。如果为 None (默认),则使用 self.extrapolate

返回

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

返回类型

array_like

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

查找分段多项式的实数根。

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果为 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, optional) – 右侧值。默认为零。

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果为 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#