Spec-Zone.ru › NumPy 1.17

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.

Параметры:
x : array_like, shape (M,)

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

y : array_like, shape (M,) or (M, K)

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

deg : int or 1-D array_like

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

rcond : float, optional

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

full : bool, optional

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

w : array_like, shape (M,), optional

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

Возвращает:
coef : ndarray, shape (M,) or (M, K)

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

[residuals, rank, singular_values, rcond] : list

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

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

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

Предупреждения:
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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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