Spec-Zone.ru › NumPy 1.21

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.

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

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

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

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

Добавлена в версии 1.5.0.

Возвращаемые значения
coefndarray, форма (M,) или (M, K)

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

[residuals, rank, singular_values, rcond]list

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

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

Дополнительную информацию см. в numpy.linalg.lstsq.

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

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

>>> import warnings
>>> warnings.simplefilter('ignore', np.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

Wikipedia, «Подгонка кривых», https://en.wikipedia.org/wiki/Curve_fitting

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

Spec-Zone.ru

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