Spec-Zone.ru › NumPy 2.0

numpy.polynomial.legendre.legfit

polynomial.legendre.legfit(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.

Parameters:
xarray_like, shape (M,)

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

yarray_like, shape (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, shape (M,), необязательно

Веса. Если не None, вес w[i] применяется к невозведённому в квадрат остатку y[i] - y_hat[i] в x[i]. В идеале веса выбираются так, чтобы ошибки произведений w[i]*y[i] все имели одинаковую дисперсию. При использовании взвешивания обратной дисперсии используйте w[i] = 1/sigma(y[i]). Значение по умолчанию — None.

Введено в версии 1.5.0.

Returns:
coefndarray, shape (M,) или (M, K)

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

[residuals, rank, singular_values, rcond]list

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

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

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

Warns:
RankWarning

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

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

См. также

numpy.polynomial.polynomial.polyfit
numpy.polynomial.chebyshev.chebfit
numpy.polynomial.laguerre.lagfit
numpy.polynomial.hermite.hermfit
numpy.polynomial.hermite_e.hermefit
legval

Вычисляет полином Лежандра.

legvander

Матрица Вандермонда полиномов Лежандра.

legweight

Функция веса Лежандра (= 1).

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

Подгонки с использованием полиномов Лежандра обычно лучше обусловлены, чем подгонки с использованием степенных рядов, но многое может зависеть от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.

Ссылки

[1]

Википедия, «Подгонка кривых», https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D0%BD%D0%BA%D0%B0_%D0%BA%D1%80%D0%B8%D0%B2%D1%8B%D1%85

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

Spec-Zone.ru

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