scipy.interpolate.BSpline.
basis_element#
- classmethod BSpline.basis_element(t, extrapolate=True)[source]#
- 返回 B 样条基元素 - B(x | t[0], ..., t[k+1])。- 参数:
- tndarray,形状 (k+2,)
- 内部节点 
- extrapolatebool 或 ‘periodic’,可选
- 是否超出基本区间 - t[0] .. t[k+1]进行外推,或返回 nan。 如果为 ‘periodic’,则使用周期性外推。 默认为 True。
 
- 返回:
- basis_elementcallable
- 表示节点向量 t 的 B 样条基元素的可调用对象。 
 
 - 注意 - B 样条的阶数 k 从 t 的长度推断为 - len(t)-2。 节点向量是通过将- k+1个元素附加和前置到内部节点 t 来构造的。- 示例 - 构造一个三次 B 样条 - >>> import numpy as np >>> from scipy.interpolate import BSpline >>> b = BSpline.basis_element([0, 1, 2, 3, 4]) >>> k = b.k >>> b.t[k:-k] array([ 0., 1., 2., 3., 4.]) >>> k 3 - 在 - [0, 1, 1, 2]上构造一个二次 B 样条,并将其与其显式形式进行比较- >>> t = [0, 1, 1, 2] >>> b = BSpline.basis_element(t) >>> def f(x): ... return np.where(x < 1, x*x, (2. - x)**2) - >>> import matplotlib.pyplot as plt >>> fig, ax = plt.subplots() >>> x = np.linspace(0, 2, 51) >>> ax.plot(x, b(x), 'g', lw=3) >>> ax.plot(x, f(x), 'r', lw=8, alpha=0.4) >>> ax.grid(True) >>> plt.show() 