Spec-Zone.ru › NumPy 2.0

numpy.polynomial.laguerre.lagfit

polynomial.laguerre.lagfit(x, y, deg, rcond=None, full=False, w=None)[source]

Наименьшие квадраты подгонки ряда Лагерра к данным.

Возвращает коэффициенты ряда Лагерра степени deg, являющиеся наименьшими квадратами подгонки к значениям данных y, заданных в точках x. Если y является одномерным, возвращаемые коэффициенты также будут одномерными. Если y является двумерным, выполняется несколько подгонок, по одной для каждого столбца y, и полученные коэффициенты хранятся в соответствующих столбцах двумерного возвращаемого значения. Приближённый многочлен(ы) имеет вид

\[p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x),\]

где n является deg.

Параметры:
xarray_like, форма (M,)

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

yarray_like, форма (M,) или (M, K)

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

degint или 1-мерный array_like

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

rcondfloat, необязательно

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

fullbool, необязательно

Переключатель, определяющий характер возвращаемого значения. Когда оно равно 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.

[residuals, rank, singular_values, rcond]list

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

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

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

Предупреждения:
RankWarning

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

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

См. также

numpy.polynomial.polynomial.polyfit
numpy.polynomial.legendre.legfit
numpy.polynomial.chebyshev.chebfit
numpy.polynomial.hermite.hermfit
numpy.polynomial.hermite_e.hermefit
lagval

Вычисляет ряд Лагерра.

lagvander

псевдоматрица Вандермонда ряда Лагерра.

lagweight

Функция веса Лагерра.

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 — коэффициенты, которые необходимо найти, w — веса, а y — наблюдаемые значения. Это уравнение затем решается с использованием разложения по сингулярным значениям V.

Если некоторые сингулярные значения V настолько малы, что ими можно пренебречь, то будет выведено предупреждение RankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Используя подгонку меньшей степени, обычно можно избавиться от предупреждения. Параметр rcond также можно установить на значение меньше его значения по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от округления.

Подгонки с использованием рядов Лагерра, вероятно, наиболее полезны, когда данные могут быть аппроксимированы sqrt(w(x)) * p(x), где w(x) — функция веса Лагерра. В этом случае следует использовать вес sqrt(w(x[i])) вместе со значениями данных y[i]/sqrt(w(x[i])). Функция веса доступна как lagweight.

Ссылки

[1]

Wikipedia, “Кривая подгонка”, https://en.wikipedia.org/wiki/Curve_fitting

Примеры

>>> from numpy.polynomial.laguerre import lagfit, lagval
>>> x = np.linspace(0, 10)
>>> err = np.random.randn(len(x))/10
>>> y = lagval(x, [1, 2, 3]) + err
>>> lagfit(x, y, 2)
array([ 0.96971004,  2.00193749,  3.00288744]) # may vary

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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