Spec-Zone.ru › NumPy 1.15

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', 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] Википедия, «Подгонка кривых», http://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])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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