cupyx.scipy.interpolate.BSpline#
- class cupyx.scipy.interpolate.BSpline(t, c, k, extrapolate=True, axis=0)[源代码][源代码]#
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{如果 $t_i \le x < t_{i+1}$, 否则 $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。额外的系数,即j > n的c[j],将被忽略。度数为 k 的 B 样条基元素在 基区间 上形成了一个单位分割,
t[k] <= x <= t[n]。
引用
方法
- antiderivative(nu=1)[源代码][源代码]#
返回表示不定积分的B样条。
- 参数:
nu (int, optional) – 反导数阶数。默认是 1。
- 返回:
b – 表示反导数的新实例。
- 返回类型:
BSpline object
备注
如果计算了反导数并且
self.extrapolate='periodic',它将被设置为 False 以返回实例。这样做是因为反导数不再是周期性的,并且在其最初给定的 x 区间之外的正确评估变得困难。参见
- classmethod basis_element(t, extrapolate=True)[源代码][源代码]#
返回一个B样条基元素
B(x | t[0], ..., t[k+1])。- 参数:
- 返回:
basis_element – 一个表示结向量 t 的 B 样条基元素的可调用对象。
- 返回类型:
callable
备注
B样条的次数 k 是从 t 的长度推断出来的,即
len(t)-2。节点向量是通过在内部节点 t 前后分别添加k+1个元素来构建的。
- classmethod construct_fast(t, c, k, extrapolate=True, axis=0)[源代码][源代码]#
构建一个样条而不进行检查。接受与常规构造函数相同的参数。输入数组 t 和 c 必须具有正确的形状和数据类型。
- derivative(nu=1)[源代码][源代码]#
返回表示导数的B样条。
- 参数:
nu (int, optional) – 导数阶数。默认值为 1。
- 返回:
b – 表示导数的新实例。
- 返回类型:
BSpline object
参见
- classmethod design_matrix(x, t, k, extrapolate=False)[源代码][源代码]#
返回一个以 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<value。
- __le__(value, /)#
返回 self<=value。
- __gt__(value, /)#
返回 self>value。
- __ge__(value, /)#
返回 self>=value。
属性
- tck#
等同于
(self.t, self.c, self.k)(只读)。