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
是多项式的次数。- 参数:
- 变量:
另请参阅
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 阶分段多项式。
- 返回类型:
注意
此函数返回的原函数(不定积分)是连续的,并且在浮点舍入误差范围内可连续微分至 n-1 阶。
如果计算了原函数(不定积分),并且
self.extrapolate='periodic'
,则对于返回的实例,它将被设置为 False。这是因为原函数(不定积分)不再是周期性的,并且在最初给定的 x 区间之外正确评估它很困难。
- classmethod construct_fast(c, x, extrapolate=None, axis=0)[source]#
不进行检查地构造分段多项式。接受与构造函数相同的参数。输入参数
c
和x
必须是具有正确形状和类型的数组。c
数组的 dtype 只能是 float 和 complex,x
数组的 dtype 必须是 float。
- derivative(nu=1)[source]#
构造一个表示导数的新分段多项式。
- 参数:
nu (int, optional) – 评估导数的阶数。默认为 1,即计算一阶导数。如果为负数,则返回原函数(不定积分)。
- 返回:
pp – 表示该多项式导数的 k2 = k - n 阶分段多项式。
- 返回类型:
注意
导数是针对每个多项式段分段评估的,即使多项式在断点处不可微分。多项式区间被视为半开区间,
[a, b)
,除了最后一个区间是闭合的[a, b]
。
- classmethod from_spline(tck, extrapolate=None)[source]#
从样条构造一个分段多项式
- 参数:
tck – 样条,作为 (knots, coefficients, degree) 元组或 BSpline 对象。
extrapolate (bool 或 'periodic', optional) – 如果为 bool,则确定是否根据第一个和最后一个区间对超出边界的点进行外插,或返回 NaN。如果为 'periodic',则使用周期性外插。默认为 True。
- roots(discontinuity=True, extrapolate=None)[source]#
查找分段多项式的实数根。
- 参数:
discontinuity (bool, optional) – 是否将断点处不连续点两侧的符号变化报告为根。
extrapolate ({bool, 'periodic', None}, optional) – 如果为 bool,则确定是否返回基于第一个和最后一个区间外插的多项式的根,'periodic' 的作用与 False 相同。如果为 None (默认),则使用 self.extrapolate。
- 返回:
roots – 多项式的根。如果 PPoly 对象描述了多个多项式,则返回值为一个对象数组,其每个元素是一个包含根的 ndarray。
- 返回类型:
另请参阅
- solve(y=0.0, discontinuity=True, extrapolate=None)[source]#
查找方程
pp(x) == y
的实数解。- 参数:
- 返回:
roots – 多项式的根。如果 PPoly 对象描述了多个多项式,则返回值为一个对象数组,其每个元素是一个包含根的 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#