scipy.interpolate.BSpline.
basis_element#
- classmethod BSpline.basis_element(t, extrapolate=True)[源代码][源代码]#
返回一个B样条基元素
B(x | t[0], ..., t[k+1])
。- 参数:
- tndarray, 形状 (k+2,)
内部结点
- 外推布尔值或 ‘periodic’,可选
是否在基本区间
t[0] .. t[k+1]
之外进行外推,或者返回 nans。如果为 ‘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()