Spec-Zone.ru › NumPy 1.18

numpy.polynomial.hermite.hermfit

numpy.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.

Parameters
xarray_like, shape (M,)

Координаты x M точек выборки (x[i], y[i]).

yarray_like, shape (M,) or (M, K)

Координаты y точек выборки. Несколько наборов данных точек выборки с одинаковыми координатами x могут быть подогнаны одновременно, передав двумерный массив, содержащий один набор данных в каждом столбце.

degint or 1-D array_like

Степень(и) подгоняемых полиномов. Если deg — целое число, все члены вплоть до и включая deg-й член включаются в подгонку. Для версий NumPy ≥ 1.11.0 вместо этого можно использовать список целых чисел, определяющих степени членов, которые нужно включить.

rcondfloat, optional

Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого значения по отношению к наибольшему сингулярному значению, будут игнорироваться. Значение по умолчанию равно len(x)*eps, где eps — относительная точность типа float, примерно 2e-16 в большинстве случаев.

fullbool, optional

Переключатель, определяющий характер возвращаемого значения. Если значение False (значение по умолчанию), возвращаются только коэффициенты, если True — также возвращается диагностическая информация из разложения по сингулярным значениям.

warray_like, shape (M,), optional

Веса. Если не None, вклад каждой точки (x[i],y[i]) в подгонку взвешивается значением w[i]. В идеале веса выбираются таким образом, чтобы ошибки произведений w[i]*y[i] имели одинаковую дисперсию. Значение по умолчанию — None.

Returns
coefndarray, shape (M,) or (M, K)

Коэффициенты Эрмита, упорядоченные по возрастанию степени. Если y было двумерным, коэффициенты для данных в столбце k из y находятся в столбце k.

[residuals, rank, singular_values, rcond]list

Эти значения возвращаются только если full = True

resid – сумма квадратов остатков наименьших квадратов подгонки rank – числовой ранг масштабированной матрицы Вандермонда sv – сингулярные значения масштабированной матрицы Вандермонда rcond – значение rcond.

Для получения более подробной информации см. linalg.lstsq.

Warns
RankWarning

Ранг матрицы коэффициентов в аппроксимации наименьших квадратов недостаточен. Предупреждение выводится только если full = False. Предупреждения можно отключить, выполнив

>>> import warnings
>>> warnings.simplefilter('ignore', np.RankWarning)

См. также

chebfit, legfit, lagfit, polyfit, hermefit

hermval

Вычисляет ряд Эрмита.

hermvander

Матрица Вандермонда ряда Эрмита.

hermweight

Функция веса Эрмита

linalg.lstsq

Вычисляет аппроксимацию наименьших квадратов из матрицы.

scipy.interpolate.UnivariateSpline

Вычисляет сплайн-аппроксимации.

Примечания

Решение — коэффициенты ряда Эрмита 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.polynomial.hermite.hermfit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API