scipy.interpolate.

sproot#

scipy.interpolate.sproot(tck, mest=10)[источник]#

Найти корни кубического B-сплайна.

Наследие

Эта функция считается устаревшей и больше не будет получать обновления. Хотя в настоящее время у нас нет планов по ее удалению, мы рекомендуем, чтобы новый код использовал более современные альтернативы. В частности, мы рекомендуем создавать BSpline объект и использование следующего шаблона: PPoly.from_spline(spl).roots().

По заданным узлам (>=8) и коэффициентам кубического B-сплайна вернуть корни сплайна.

Параметры:
tckкортеж или объект BSpline

Если кортеж, то он должен быть последовательностью длины 3, содержащей вектор узлов, коэффициенты B-сплайна и степень сплайна. Количество узлов должно быть >= 8, а степень должна быть 3. Узлы должны быть монотонно возрастающей последовательностью.

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

Оценка количества нулей (по умолчанию 10).

Возвращает:
zerosndarray

Массив, содержащий корни сплайна.

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

splprep, splrep, splint, spalde, splev
bisplrep, bisplev
BSpline

Примечания

Прямое манипулирование tck-кортежами не рекомендуется. В новом коде предпочтительнее использовать BSpline объекты.

Ссылки

[1]

C. де Бур, "О вычислениях с B-сплайнами", J. Approximation Theory, 6, стр.50-62, 1972.

[2]

M. G. Cox, "Численная оценка B-сплайнов", J. Inst. Maths Applics, 10, стр.134-149, 1972.

[3]

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

Примеры

Для некоторых данных этот метод может пропустить корень. Это происходит, когда один из узлов сплайна (которые FITPACK размещает автоматически) совпадает с истинным корнем. Обходной путь — преобразовать в PPoly, который использует другой алгоритм нахождения корней.

Например,

>>> x = [1.96, 1.97, 1.98, 1.99, 2.00, 2.01, 2.02, 2.03, 2.04, 2.05]
>>> y = [-6.365470e-03, -4.790580e-03, -3.204320e-03, -1.607270e-03,
...      4.440892e-16,  1.616930e-03,  3.243000e-03,  4.877670e-03,
...      6.520430e-03,  8.170770e-03]
>>> from scipy.interpolate import splrep, sproot, PPoly
>>> tck = splrep(x, y, s=0)
>>> sproot(tck)
array([], dtype=float64)

Преобразование в объект PPoly действительно находит корни в x=2:

>>> ppoly = PPoly.from_spline(tck)
>>> ppoly.roots(extrapolate=False)
array([2.])

Дополнительные примеры приведены в учебнике.