scipy.interpolate.BSpline.
basis_element#
- classmethod BSpline.basis_element(t, extrapolate=True)[source]#
返回 B 样条基元素
B(x | t[0], ..., t[k+1])
。- 参数:
- tndarray, shape (k+2,)
内部节点
- extrapolatebool 或 ‘periodic’, 可选
是否在基区间
t[0] .. t[k+1]
之外进行外推,或者返回 nans。如果为 ‘periodic’,则使用周期性外推。默认值为 True。
- 返回值:
- basis_elementcallable
表示节点向量 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()