scipy.interpolate.BSpline.

insert_knot#

BSpline.insert_knot(x, m=1)[источник]#

Вставить новый узел в x кратности m.

По заданным узлам и коэффициентам представления B-сплайна создать новый B-сплайн с вставленным узлом m times at point x.

Параметры:
xfloat

Позиция нового узла

mint, необязательный

Количество раз для вставки заданного узла (его кратность). По умолчанию 1.

Возвращает:
splBSpline object

Новый BSpline объект с вставленным новым узлом.

Смотрите также

scipy.interpolate.insert

Примечания

На основе алгоритмов из [1] и [2].

В случае периодического сплайна (self.extrapolate == "periodic") должно быть как минимум k внутренних узлов t(j), удовлетворяющих t(k+1) или хотя бы k внутренних узлов t(j), удовлетворяющих x<=t(j).

Эта процедура функционально эквивалентна scipy.interpolate.insert.

Добавлено в версии 1.13.

Ссылки

[1]

W. Boehm, "Inserting new knots into b-spline curves.", Computer Aided Design, 12, p.199-201, 1980. DOI:10.1016/0010-4485(80)90154-2.

[2]

P. Dierckx, “Curve and surface fitting with splines, Monographs on Numerical Analysis”, Oxford University Press, 1993.

Примеры

Вы можете вставить узлы в B-сплайн:

>>> import numpy as np
>>> from scipy.interpolate import BSpline, make_interp_spline
>>> x = np.linspace(0, 10, 5)
>>> y = np.sin(x)
>>> spl = make_interp_spline(x, y, k=3)
>>> spl.t
array([ 0.,  0.,  0.,  0.,  5., 10., 10., 10., 10.])

Вставить один узел

>>> spl_1 = spl.insert_knot(3)
>>> spl_1.t
array([ 0.,  0.,  0.,  0.,  3.,  5., 10., 10., 10., 10.])

Вставить кратный узел

>>> spl_2 = spl.insert_knot(8, m=3)
>>> spl_2.t
array([ 0.,  0.,  0.,  0.,  5.,  8.,  8.,  8., 10., 10., 10., 10.])