Spec-Zone.ru › NumPy 1.11

numpy.polynomial.legendre.legfit

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

Параметры:

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 можно использовать список целых чисел, определяющих степени членов, которые следует включить.

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.

Новое в версии 1.5.0.

Возвращает:

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

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

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

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

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

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

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

RankWarning

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

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

См. также

chebfit, polyfit, lagfit, hermfit, hermefit

legval
Вычисляет полином Лежандра.
legvander
Матрица Вандермонда полиномов Лежандра.
legweight
Функция веса Лежандра (= 1).
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 также можно задать значением, меньшим, чем по умолчанию, но полученная подгонка может быть ложной и иметь большие погрешности, связанные с ошибками округления.

Подгонка с использованием полиномов Лежандра обычно лучше обусловлена, чем подгонка с использованием степенных рядов, но многое может зависеть от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.

Ссылки

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

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.polynomial.legendre.legfit.html

Spec-Zone.ru

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