Spec-Zone.ru › NumPy 1.14

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, форма (M,)

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

y : array_like, форма (M,) или (M, K)

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

deg : int или 1-мерный array_like

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

rcond : float, необязательно

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

full : bool, необязательно

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

w : array_like, форма (M,), необязательно

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

Возвращает:

coef : ndarray, форма (M,) или (M, K)

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

[residuals, rank, singular_values, rcond] : список

Эти значения возвращаются только если 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.

Ссылки

[R71] Википедия, «Подгонка кривых», 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.14.5/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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