numpy.polynomial.hermite_e.hermefit#
- polynomial.hermite_e.hermefit(x, y, deg, rcond=None, полный=False, w=None)[источник]#
Метод наименьших квадратов для подгонки ряда Эрмита к данным.
Возвращает коэффициенты ряда Эрмита степени deg то есть наименьшие квадраты, подогнанные к значениям данных y заданные в точках x. Если y является 1-D, возвращаемые коэффициенты также будут 1-D. Если y является 2-D, выполняется несколько подгонок, по одной для каждого столбца y, и полученные коэффициенты сохраняются в соответствующих столбцах возвращаемого 2-D массива. Подобранные полином(ы) имеют вид
\[p(x) = c_0 + c_1 * He_1(x) + ... + c_n * He_n(x),\]где n является deg.
- Параметры:
- xarray_like, shape (M,)
x-координаты M точек выборки
(x[i], y[i]).- yarray_like, форма (M,) или (M, K)
y-координаты точек выборки. Несколько наборов данных точек выборки, использующих одинаковые x-координаты, могут быть обработаны одновременно путём передачи двумерного массива, содержащего один набор данных в каждом столбце.
- degцелое число или 1-D array_like
Степень(и) аппроксимирующих полиномов. Если deg является единственным целым числом все члены до и включая deg-й член включены в подгонку. Для версий NumPy >= 1.11.0 вместо этого может использоваться список целых чисел, указывающих степени членов для включения.
- rcondfloat, опционально
Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого значения относительно наибольшего сингулярного значения, будут проигнорированы. Значение по умолчанию равно len(x)*eps, где eps - относительная точность типа float, обычно около 2e-16.
- полныйbool, необязательно
Переключатель, определяющий тип возвращаемого значения. Когда он установлен в False (по умолчанию), возвращаются только коэффициенты; когда в True, также возвращается диагностическая информация из сингулярного разложения.
- warray_like, форма (M,), необязательный
Веса. Если не None, вес
w[i]применяется к не возведённому в квадрат остаткуy[i] - y_hat[i]вx[i]. В идеале веса выбираются так, чтобы ошибки произведенийw[i]*y[i]все имеют одинаковую дисперсию. При использовании взвешивания по обратной дисперсии используйтеw[i] = 1/sigma(y[i]). Значение по умолчанию — None.
- Возвращает:
- coefndarray, форма (M,) или (M, K)
Коэффициенты Эрмита, упорядоченные от низкого к высокому. Если y был двумерным, коэффициенты для данных в столбце k из y находятся в столбце k.
- [остатки, ранг, сингулярные значения, rcond]list
Эти значения возвращаются только если
full == Trueостатки – сумма квадратов остатков подгонки методом наименьших квадратов
ранг – числовой ранг масштабированной матрицы Вандермонда
singular_values – сингулярные значения масштабированной матрицы Вандермонда
rcond – значение rcond.
Для более подробной информации см.
numpy.linalg.lstsq.
- Предупреждает:
- RankWarning
Ранг матрицы коэффициентов в методе наименьших квадратов недостаточен. Предупреждение выводится только если
full = False. Предупреждения можно отключить с помощью>>> import warnings >>> warnings.simplefilter('ignore', np.exceptions.RankWarning)
Смотрите также
numpy.polynomial.chebyshev.chebfitnumpy.polynomial.legendre.legfitnumpy.polynomial.polynomial.polyfitnumpy.polynomial.hermite.hermfitnumpy.polynomial.laguerre.lagfithermevalВычисляет ряд Эрмита.
hermevanderпсевдо матрица Вандермонда для рядов Эрмита.
hermeweightВесовая функция Эрмита.
numpy.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 являются коэффициентами, которые нужно решить, и элементы y являются наблюдаемыми значениями. Это уравнение затем решается с использованием сингулярного разложения V.
Если некоторые из сингулярных значений V настолько малы, что ими пренебрегают, тогда
RankWarningбудет выдано. Это означает, что значения коэффициентов могут быть плохо определены. Использование подгонки более низкого порядка обычно устраняет предупреждение. The rcond параметр также может быть установлен в значение меньшее, чем значение по умолчанию, но полученная аппроксимация может быть ложной и иметь большой вклад от ошибок округления.Аппроксимация с использованием рядов Эрмита-Эйлера, вероятно, наиболее полезна, когда данные могут быть аппроксимированы
sqrt(w(x)) * p(x), гдеw(x)является весом Эрмита. В этом случае весsqrt(w(x[i]))следует использовать вместе со значениями данныхy[i]/sqrt(w(x[i])). Весовая функция доступна какhermeweight.Ссылки
[1]Википедия, «Аппроксимация кривых», https://en.wikipedia.org/wiki/Curve_fitting
Примеры
>>> import numpy as np >>> from numpy.polynomial.hermite_e import hermefit, hermeval >>> x = np.linspace(-10, 10) >>> rng = np.random.default_rng() >>> err = rng.normal(scale=1./10, size=len(x)) >>> y = hermeval(x, [1, 2, 3]) + err >>> hermefit(x, y, 2) array([1.02284196, 2.00032805, 2.99978457]) # may vary