Spec-Zone.ru › NumPy 1.18

numpy.polynomial.laguerre.lagfit

numpy.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.

Parameters
xarray_like, shape (M,)

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

yarray_like, shape (M,) or (M, K)

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

degint or 1-D array_like

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

rcondfloat, optional

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

fullbool, optional

Переключатель, определяющий характер возвращаемого значения. Если оно равно False (значение по умолчанию), возвращаются только коэффициенты, если True — также возвращаются диагностические сведения из разложения по сингулярным значениям.

warray_like, shape (M,), optional

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

Returns
coefndarray, shape (M,) or (M, K)

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

[residuals, rank, singular_values, rcond]list

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

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

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

Warns
RankWarning

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

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

См. также

chebfit, legfit, polyfit, hermfit, hermefit

lagval

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

lagvander

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

lagweight

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

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

Википедия, «Аппроксимация кривых», 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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