make_splprep#
- scipy.interpolate.make_splprep(x, *, w=None, u=None, ub=None, ue=None, k=3, s=0, t=None, nest=None)[источник]#
Создать сглаживающую параметрическую B-сплайн кривую с ограниченной ошибкой, минимизируя скачки производной.
Для заданного списка из N одномерных массивов, x, которые представляют кривую в N-мерном пространстве, параметризованную u, найти гладкую аппроксимирующую сплайн-кривую
g(u).- Параметры:
- xarray_like, shape (m, ndim)
Выборочные точки данных, представляющие кривую в
ndimразмерности. Типичное использование - список одномерных массивов, каждый длинойm.- warray_like, shape(m,), optional
Строго положительный одномерный массив весов. Веса используются при вычислении взвешенного сплайна методом наименьших квадратов. Если ошибки в x значения имеют стандартное отклонение, заданное вектором d, тогда w должно быть 1/d. По умолчанию
np.ones(m).- uarray_like, необязательный
Массив значений параметров для кривой в параметрической форме. Если не задан, эти значения вычисляются автоматически, согласно:
v[0] = 0 v[i] = v[i-1] + distance(x[i], x[i-1]) u[i] = v[i] / v[-1]
- ub, uefloat, опционально
Конечные точки интервала параметров. По умолчанию
u[0]иu[-1].- kint, необязательный
Степень сплайна. Кубические сплайны,
k=3, рекомендуются. Чётные значения k следует избегать, особенно с малымsзначение. По умолчаниюk=3- sfloat, опционально
Условие сглаживания. Степень гладкости определяется удовлетворением условий:
sum((w * (g(u) - x))**2) <= s,
где
g(u)является сглаженным приближением кx. Пользователь может использовать s для управления компромиссом между точностью и гладкостью аппроксимации. Большиеsозначает большее сглаживание, в то время как меньшие значенияsуказывают на меньшее сглаживание. Рекомендуемые значенияsзависят от весов,w. Если веса представляют обратную величину стандартного отклоненияx, тогда хорошийsзначение должно находиться в диапазоне(m - sqrt(2*m), m + sqrt(2*m)), гдеmэто количество точек данных вxиw.- tarray_like, необязательный
Узлы сплайна. Если None (по умолчанию), узлы будут построены автоматически. Должно быть не менее
2*k + 2и не болееm + k + 1узлы.- nestint, необязательный
Целевая длина вектора узлов. Должна быть между
2*(k + 1)(минимальное количество узлов для степени-kspline), иm + k + 1(количество узлов интерполирующего сплайна). Фактическое количество узлов, возвращаемых этой процедурой, может быть немного больше, чем nest. По умолчанию None (без ограничения, суммировать доm + k + 1узлы).
- Возвращает:
- spla
BSplineэкземпляр Для s=0,
spl(u) == x. Для ненулевых значенийs, spl представляет сглаженное приближение кx, обычно с меньшим количеством узлов.- undarray
Значения параметров
- spla
Смотрите также
generate_knotsиспользуется внутри для генерации узлов
make_splrepаналог этой процедуры для 1D функций
make_interp_splineпостроить интерполяционный сплайн (
s = 0)make_lsq_splineпостроить сплайн наименьших квадратов по заданному вектору узлов
splprepаналог этой процедуры из FITPACK
Примечания
Для заданного набора \(m\) точек данных в \(D\) размерности, \(\vec{x}_j\), с \(j=1, ..., m\) и \(\vec{x}_j = (x_{j; 1}, ..., x_{j; D})\), эта процедура строит параметрическую сплайн-кривую \(g_a(u)\) с \(a=1, ..., D\), чтобы минимизировать сумму скачков, \(D_{i; a}\), из
k-я производная во внутренних узлах (\(u_b < t_i < u_e\)), где\[D_{i; a} = g_a^{(k)}(t_i + 0) - g_a^{(k)}(t_i - 0)\]-5.90290827e-01, \(g(u)\) который минимизирует
\[\sum_i \sum_{a=1}^D | D_{i; a} |^2 \to \mathrm{min}\]при условии, что
\[\sum_{j=1}^m \sum_{a=1}^D (w_j \times (g_a(u_j) - x_{j; a}))^2 \leqslant s\]где \(u_j\) является значением параметра, соответствующим точке данных \((x_{j; 1}, ..., x_{j; D})\), и \(s > 0\) является входным параметром.
Другими словами, мы балансируем максимизацию гладкости (измеряемой как скачки производной, первый критерий) и отклонение \(g(u_j)\) из данных \(x_j\) (второй критерий).
Обратите внимание, что суммирование во втором критерии выполняется по всем точкам данных, а в первом критерии — по внутренним узлам сплайна (т.е. тем, с
ub < t[i] < ue). Узлы сплайна в общем случае являются подмножеством данных, см.generate_knotsподробности.Добавлено в версии 1.15.0.
Ссылки
[1]P. Dierckx, "Algorithms for smoothing data with periodic and parametric splines, Computer Graphics and Image Processing", 20 (1982) 171-184.
[2]P. Dierckx, «Curve and surface fitting with splines», Monographs on Numerical Analysis, Oxford University Press, 1993.