make_splrep#
- scipy.interpolate.make_splrep(x, y, *, w=None, xb=None, xe=None, k=3, s=0, t=None, nest=None)[источник]#
Создайте функцию сглаживающего B-сплайна с ограниченной ошибкой, минимизируя скачки производной.
Для заданного набора точек данных
(x[i], y[i]), определить гладкую сплайн-аппроксимацию степениkна интервалеxb <= x <= xe.- Параметры:
- x, yarray_like, shape (m,)
Точки данных, определяющие кривую
y = f(x).- warray_like, shape (m,), optional
Строго положительный 1D-массив весов той же длины, что и x и y. Веса используются при вычислении взвешенного сплайна методом наименьших квадратов. Если ошибки в значениях y имеют стандартное отклонение, заданное вектором
d, затем w должен быть1/d. По умолчаниюnp.ones(m).- xb, xefloat, опционально
Интервал для подгонки. Если None, по умолчанию используются
x[0]иx[-1], соответственно.- kint, необязательный
Степень сплайн-аппроксимации. Рекомендуется использовать кубические сплайны.
k=3, что является значением по умолчанию. Чётные значения k следует избегать, особенно с малыми s значения.- sfloat, опционально
Условие сглаживания. Степень гладкости определяется удовлетворением ограничения МНК (метода наименьших квадратов):
sum((w * (g(x) - y))**2 ) <= s
где
g(x)является сглаженной аппроксимацией для(x, y). Пользователь может использовать s для управления компромиссом между близостью к данным и гладкостью аппроксимации. Большие s означает большее сглаживание, в то время как меньшие значения s указывают на меньшее сглаживание. Рекомендуемые значения s зависят от весов, w. Если веса представляют обратное значение стандартного отклонения y, тогда хороший s значение должно находиться в диапазоне(m-sqrt(2*m), m+sqrt(2*m))гдеmэто количество точек данных в x, y, и w. По умолчаниюs = 0.0, т.е. интерполяция.- 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(x) == y. Для ненулевых значений s the spl представляет сглаженное приближение к (x, y), обычно с меньшим количеством узлов.
- spla
Смотрите также
generate_knotsиспользуется внутри для генерации узлов
make_splprepаналог этой процедуры для параметрических кривых
make_interp_splineпостроить интерполяционный сплайн (
s = 0)make_lsq_splineпостроить сплайн наименьших квадратов по заданному вектору узлов
splrepаналог этой процедуры из FITPACK
Примечания
Эта процедура строит функцию сглаживающего сплайна, \(g(x)\), чтобы минимизировать сумму скачков, \(D_j\), из
k-я производная в внутренних узлах (\(x_b < t_i < x_e\)), где\[D_i = g^{(k)}(t_i + 0) - g^{(k)}(t_i - 0)\]-5.90290827e-01, \(g(x)\) который минимизирует
\[\sum_i | D_i |^2 \to \mathrm{min}\]при условии, что
\[\sum_{j=1}^m (w_j \times (g(x_j) - y_j))^2 \leqslant s ,\]где \(s > 0\) является входным параметром.
Другими словами, мы балансируем максимизацию гладкости (измеряемой как скачки производной, первый критерий) и отклонение \(g(x_j)\) из данных \(y_j\) (второй критерий).
Обратите внимание, что суммирование во втором критерии выполняется по всем точкам данных, а в первом критерии — по внутренним узлам сплайна (т.е. тем, с
xb < t[i] < xe). Узлы сплайна в общем случае являются подмножеством данных, см.generate_knotsподробности.Также обратите внимание на различие этой процедуры с
make_lsq_spline: последняя подпрограмма не учитывает гладкость и просто решает задачу наименьших квадратов\[\sum w_j \times (g(x_j) - y_j)^2 \to \mathrm{min}\]для сплайн-функции \(g(x)\) с _фиксированным_ вектором узлов
t.Добавлено в версии 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.