numpy.polynomial.hermite.hermfit
- polynomial.hermite.hermfit(x, y, deg, rcond=None, full=False, w=None)[source]
-
Наименьшие квадраты подгонки полинома Эрмита к данным.
Возвращает коэффициенты ряда Эрмита степени
deg, которые обеспечивают наименьшие квадраты подгонки к значениям данныхy, заданным в точкахx. Еслиyодномерный, возвращаемые коэффициенты также будут одномерными. Еслиyдвумерный, выполняется несколько подгонок, по одной для каждого столбцаy, и полученные коэффициенты сохраняются в соответствующих столбцах двумерного результата. Подгоняемый(ые) полином(ы) имеют вид\[p(x) = c_0 + c_1 * H_1(x) + ... + c_n * H_n(x),\]где
nравноdeg.- Параметры
-
- xarray_like, форма (M,)
-
Координаты x M точек выборки
(x[i], y[i]). - yarray_like, форма (M,) или (M, K)
-
Координаты y точек выборки. Несколько наборов точек выборки, имеющих общие координаты x, могут быть подогнаны одновременно, передавая двумерный массив, содержащий один набор данных в каждом столбце.
- degint или 1-D array_like
-
Степень(и) подгоняемых полиномов. Если
deg— целое число, в подгонку включаются все члены до и включаяdeg-й член. Для версий NumPy ≥ 1.11.0 вместо этого можно использовать список целых чисел, определяющих степени членов, которые нужно включить. - rcondfloat, необязательно
-
Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого относительного значения по отношению к наибольшему сингулярному значению, будут игнорироваться. Значение по умолчанию — len(x)*eps, где eps — относительная точность типа float, примерно 2e-16 в большинстве случаев.
- fullbool, необязательно
-
Переключатель, определяющий характер возвращаемого значения. Когда False (по умолчанию), возвращаются только коэффициенты, когда True — возвращается также диагностическая информация из разложения по сингулярным значениям.
-
warray_like, форма (
M,), необязательно -
Веса. Если не None, вклад каждой точки
(x[i],y[i])в подгонку взвешивается с помощьюw[i]. В идеале веса выбираются таким образом, чтобы ошибки произведенийw[i]*y[i]все имели одинаковую дисперсию. Значение по умолчанию — None.
- Возвращает
-
- coefndarray, форма (M,) или (M, K)
-
Коэффициенты Эрмита, упорядоченные от меньшего к большему. Если
yбыло двумерным, коэффициенты данных в столбце k изyнаходятся в столбцеk. - [residuals, rank, singular_values, rcond]list
-
Эти значения возвращаются только если
full= Trueresid — сумма квадратов остатков наименьших квадратов подгонки rank — числовая ранг масштабированной матрицы Вандермонда sv — сингулярные значения масштабированной матрицы Вандермонда rcond — значение
rcond.Для получения дополнительной информации см.
numpy.linalg.lstsq.
- Предупреждения
-
- RankWarning
-
Ранг матрицы коэффициентов в подгонке методом наименьших квадратов недостаточен. Предупреждение выдаётся только если
full= False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', np.RankWarning)
См. также
Примечания
Решение — коэффициенты ряда Эрмита
p, которые минимизируют сумму взвешенных квадратов ошибок\[E = \sum_j w_j^2 * |y_j - p(x_j)|^2,\]где \(w_j\) — веса. Эта задача решается путём построения (обычно) переопределённого матричного уравнения
\[V(x) * c = w * y,\]где
V— взвешенная псевдоматрица Вандермондаx,c— коэффициенты, подлежащие определению,w— веса,y— наблюдаемые значения. Это уравнение затем решается с помощью разложения по сингулярным значениямV.Если некоторые сингулярные значения
Vнастолько малы, что они игнорируются, то выводится предупреждениеRankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Обычно, использование подгонки меньшей степени устранит предупреждение. Параметрrcondтакже можно установить на значение, меньшее его значения по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от ошибок округления.Подгонки, использующие ряд Эрмита, вероятно, наиболее полезны, когда данные могут быть аппроксимированы
sqrt(w(x)) * p(x), гдеw(x)— вес Эрмита. В этом случае весsqrt(w(x[i]))должен использоваться вместе со значениями данныхy[i]/sqrt(w(x[i])). Функция весов доступна какhermweight.Ссылки
- 1
-
Википедия, «Подгонка кривых», https://en.wikipedia.org/wiki/Curve_fitting
Примеры
>>> from numpy.polynomial.hermite import hermfit, hermval >>> x = np.linspace(-10, 10) >>> err = np.random.randn(len(x))/10 >>> y = hermval(x, [1, 2, 3]) + err >>> hermfit(x, y, 2) array([1.0218, 1.9986, 2.9999]) # may vary
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.polynomial.hermite.hermfit.html