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.polyfitnumpy.polynomial.chebyshev.chebfitnumpy.polynomial.laguerre.lagfitnumpy.polynomial.hermite.hermfitnumpy.polynomial.hermite_e.hermefitlegval-
Вычисляет полином Лежандра.
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