scipy.interpolate.BSpline.
basis_element#
- classmethod BSpline.basis_element(t, extrapolate=True)[源代码]#
返回 B 样条基元素
B(x | t[0], ..., t[k+1])
。- 参数:
- tndarray,形状 (k+2,)
内部节点
- extrapolatebool 或 ‘periodic’,可选
是否在基本区间
t[0] .. t[k+1]
之外进行外推,或返回 NaN。如果为 ‘periodic’,则使用周期性外推。默认值为 True。
- 返回:
- basis_element可调用对象
表示结向量 t 的 B 样条基元素的可调用对象。
注释
B 样条的阶数 k 是从 t 的长度推断出来的,计算方式为
len(t)-2
。结向量是通过在内部节点 t 的前后添加k+1
个元素来构建的。示例
构造一个三次 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()