cupyx.scipy.interpolate.BSpline#
- class cupyx.scipy.interpolate.BSpline(t, c, k, extrapolate=True, axis=0)[source]#
B样条基上的一元样条。
\[S(x) = \sum_{j=0}^{n-1} c_j B_{j, k; t}(x)\]其中 \(B_{j, k; t}\) 是次数为 k、节为 t 的 B 样条基函数。
- 参数:
- 变量:
注意
B样条基函数通过以下方式定义:
\[ \begin{align}\begin{aligned}B_{i, 0}(x) = 1, \textrm{if $t_i \le x < t_{i+1}$, otherwise $0$,}\\B_{i, k}(x) = \frac{x - t_i}{t_{i+k} - t_i} B_{i, k-1}(x) + \frac{t_{i+k+1} - x}{t_{i+k+1} - t_{i+1}} B_{i+1, k-1}(x)\end{aligned}\end{align} \]实现细节
对于次数为 k 的样条,至少需要
k+1
个系数,因此n >= k+1
。额外的系数c[j]
(其中j > n
) 将被忽略。次数为 k 的 B 样条基函数在*基本区间*
t[k] <= x <= t[n]
上构成单位分解。
参考文献
方法
- antiderivative(nu=1)[source]#
返回表示反导数的 B 样条。
- 参数:
nu (int, optional) – 反导数次数。默认为 1。
- 返回值:
b – 表示反导数的新实例。
- 返回值类型:
BSpline 对象
注意
如果计算了反导数且
self.extrapolate='periodic'
,则对于返回的实例,此属性将被设置为 False。这是因为反导数不再具有周期性,并且在初始给定 x 区间之外正确评估它很困难。另请参阅
- classmethod basis_element(t, extrapolate=True)[source]#
返回 B 样条基元素
B(x | t[0], ..., t[k+1])
。- 参数:
- 返回值:
basis_element – 表示节向量 t 的 B 样条基元素的可调用对象。
- 返回值类型:
可调用对象
注意
B 样条的次数 k 从 t 的长度推断为
len(t)-2
。节向量是通过在内部节 t 前后分别附加k+1
个元素构建的。
- classmethod construct_fast(t, c, k, extrapolate=True, axis=0)[source]#
在不进行检查的情况下构造样条。接受与常规构造函数相同的参数。输入数组 t 和 c 必须具有正确的形状和 dtype。
- derivative(nu=1)[source]#
返回表示导数的 B 样条。
- 参数:
nu (int, optional) – 导数次数。默认为 1。
- 返回值:
b – 表示导数的新实例。
- 返回值类型:
BSpline 对象
另请参阅
- classmethod design_matrix(x, t, k, extrapolate=False)[source]#
返回 CSR 格式的稀疏数组作为设计矩阵。
- 参数:
- 返回值:
design_matrix – CSR 格式的稀疏矩阵,其中每一行包含输入行的所有基元素(第一行 = x[0] 的基元素,……,最后一行 = x[-1] 的基元素)。
- 返回值类型:
csr_matrix 对象
注意
在设计矩阵的每一行中,所有基元素都在特定点进行评估(第一行 - x[0],……,最后一行 - x[-1])。nt 是节向量的长度:由于有 nt - k - 1 个基元素,nt 应该不小于 2 * k + 2 以确保至少有 k + 1 个基元素。
x 超出范围会引发 ValueError。
注意
此方法返回一个 csr_matrix 实例,因为 CuPy 尚未提供 csr_array。
- __eq__(value, /)#
返回 self==value.
- __ne__(value, /)#
返回 self!=value.
- __lt__(value, /)#
返回 self
- __le__(value, /)#
返回 self<=value.
- __gt__(value, /)#
返回 self>value.
- __ge__(value, /)#
返回 self>=value.
属性
- tck#
等价于
(self.t, self.c, self.k)
(只读)。