Spec-Zone.ru › NumPy 1.13

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, shape (M,)

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

y : array_like, shape (M,) или (M, K)

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

deg : int или 1-D array_like

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

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

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

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

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

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

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

Введено в версии 1.5.0.

Возвращает:

coef : ndarray, shape (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 также может быть установлен на значение, меньшее, чем по умолчанию, но результирующая подгонка может быть ложной и иметь значительные вклады от ошибки округления.

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

Ссылки

[R69] Wikipedia, “Кривая подгонка”, http://en.wikipedia.org/wiki/Curve_fitting

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

Spec-Zone.ru

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