scipy.interpolate.BSpline.
basis_element#
- метод класса BSpline.basis_element(t, экстраполяция=True)[источник]#
Возвращает базисный элемент B-сплайна
B(x | t[0], ..., t[k+1]).- Параметры:
- tndarray, форма (k+2,)
внутренние узлы
- экстраполяцияbool или 'periodic', опционально
следует ли экстраполировать за пределы базового интервала,
t[0] .. t[k+1]или возвращать nan. Если ‘periodic’, используется периодическая экстраполяция. По умолчанию True.
- Возвращает:
- basis_elementcallable
Вызываемый объект, представляющий базисный элемент B-сплайна для вектора узлов t.
Примечания
Степень 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
Постройте квадратичный B-сплайн на
[0, 1, 1, 2], и сравнить с его явной формой:>>> 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()