scipy.interpolate.BSpline.basis_element

classmethod BSpline.basis_element(t, extrapolate=True)[源代码]

返回B样条基元素 B(x | t[0], ..., t[k+1])

参数
tndarray,形状(k+2,)

内结

extrapolate布尔值或‘周期性’,可选

是否在基准间隔之外进行外推, t[0] .. t[k+1] ,或退还NANS。如果为‘PERIONAL’,则使用周期性外推。默认值为True。

退货
basis_element可调用

表示结向量的B样条基元素的可调用 t

注意事项

B样条的阶数, k ,是从的长度推断出来的 t 作为 len(t)-2 。节点向量是通过附加和前缀来构造的 k+1 元素到内部结 t

示例

构造三次B样条曲线:

>>> 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

在上构造二次B样条 [0, 1, 1, 2] ,并与其显式形式进行比较:

>>> t = [-1, 0, 1, 1, 2]
>>> b = BSpline.basis_element(t[1:])
>>> 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()
../../_images/scipy-interpolate-BSpline-basis_element-1.png