cupyx.scipy.interpolate.PPoly#

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

分段多项式,关于系数和断点 在 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 or 'periodic', optional) – 如果是布尔值,决定是否根据第一个和最后一个区间对边界外的点进行外推,或者返回NaN。如果是’periodic’,则使用周期性外推。默认为True。

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

变量:
  • x (ndarray) – 断点。

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

  • axis (int) – 插值轴。

参见

BPoly

Bernstein 基中的分段多项式

备注

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

方法

__call__(x, nu=0, extrapolate=None)[源代码]#

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

参数:
  • x (array_like) – 评估插值点。

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果是布尔值,决定是否根据第一个和最后一个区间外推到边界外的点,或者返回NaN。如果是’periodic’,则使用周期性外推。如果是None(默认),则使用`self.extrapolate`。

返回:

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

返回类型:

array_like

备注

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

antiderivative(nu=1)[源代码][源代码]#

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

参数:

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)[源代码]#

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

derivative(nu=1)[源代码][源代码]#

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

参数:

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

返回:

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

返回类型:

PPoly

备注

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

extend(c, x)[源代码]#

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

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

  • x (ndarray, size (m,)) – 额外的断点。必须按照与 self.x 相同的顺序排序,并且要么在当前断点的右侧,要么在左侧。

classmethod from_bernstein_basis(bp, extrapolate=None)[源代码][源代码]#

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

参数:
  • bp (BPoly) – 伯恩斯坦基多项式,由 BPoly 创建

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

classmethod from_spline(tck, extrapolate=None)[源代码][源代码]#

从样条曲线构建分段多项式

参数:
  • tck – 样条,作为一个 (节点, 系数, 次数) 元组或一个 BSpline 对象。

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

integrate(a, b, extrapolate=None)[源代码][源代码]#

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

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

  • b (float) – 上积分限

  • extrapolate ({bool, 'periodic', None}, optional) – 如果是布尔值,决定是否根据第一个和最后一个区间外推到边界外的点,或者返回NaN。如果是’periodic’,则使用周期性外推。如果是None(默认),则使用`self.extrapolate`。

返回:

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

返回类型:

array_like

roots(discontinuity=True, extrapolate=None)[源代码][源代码]#

找到分段多项式的实根。

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果是布尔值,决定是否基于第一个和最后一个区间返回从多项式外推得到的根,’periodic’ 的工作方式与 False 相同。如果是 None(默认),则使用 self.extrapolate

返回:

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

返回类型:

ndarray

参见

PPoly.solve

solve(y=0.0, discontinuity=True, extrapolate=None)[源代码][源代码]#

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

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

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

  • extrapolate ({bool, 'periodic', None}, optional) – 如果是布尔值,决定是否基于第一个和最后一个区间返回从多项式外推得到的根,’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#