numpy.polynomial.legendre.legfit
-
numpy.polynomial.legendre.legfit(x, y, deg, rcond=None, full=False, w=None)[source] -
Наименьшие квадраты подгонки полиномов Лежандра к данным.
Возвращает коэффициенты ряда Лежандра степени
deg, который является наименьшей квадратичной аппроксимацией значений данныхy, заданных в точкахx. Еслиyодномерно, возвращаемые коэффициенты также будут одномерными. Еслиyдвумерно, выполняются несколько подгонок, по одной для каждого столбцаy, и полученные коэффициенты хранятся в соответствующих столбцах двумерного возвращаемого значения. Подгоняемые полиномы имеют видгде
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.Введено в версии 1.5.0.
Возвращает: -
coef : ndarray, shape (M,) or (M, K) -
Коэффициенты Лежандра, упорядоченные от низшего к высшему. Если
yбыл двумерным, коэффициенты для данных в столбце k изyнаходятся в столбцеk. Еслиdegзадан в виде списка, коэффициенты для членов, не включенных в подгонку, устанавливаются равными нулю в возвращаемомcoef. -
[residuals, rank, singular_values, rcond] : list -
Эти значения возвращаются только если
full= Trueresid — сумма квадратов остатков наименьших квадратов; rank — числовой ранг отмасштабированной матрицы Вандермонда; sv — сингулярные значения отмасштабированной матрицы Вандермонда; rcond — значение
rcond.Для получения более подробной информации см.
linalg.lstsq.
Предупреждения: - RankWarning
-
Ранг матрицы коэффициентов в подгонке наименьших квадратов недостаточный. Предупреждение выдается только если
full= False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', np.RankWarning)
См. также
chebfit,polyfit,lagfit,hermfit,hermefit-
legval - Вычисляет значения ряда Лежандра.
-
legvander - Матрица Вандермонда для ряда Лежандра.
-
legweight - Функция веса Лежандра (= 1).
-
linalg.lstsq - Вычисляет подгонку наименьших квадратов из матрицы.
-
scipy.interpolate.UnivariateSpline - Вычисляет сплайн-подгонки.
Примечания
Решение — это коэффициенты ряда Лежандра
p, которые минимизируют сумму взвешенных квадратов ошибокгде
— веса. Эта задача решается путём построения (обычно) переопределённого матричного уравнения
где
V— взвешенная псевдо-матрица Вандермондаx,c— коэффициенты, которые необходимо найти,w— веса, аy— наблюдаемые значения. Это уравнение затем решается с помощью разложения по сингулярным значениямV.Если некоторые из сингулярных значений
Vнастолько малы, что ими можно пренебречь, будет выведено предупреждениеRankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Использование подгонки с меньшей степенью обычно устраняет предупреждение. Параметрrcondтакже может быть установлен на значение, меньшее, чем значение по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады из-за ошибок округления.Подгонки с использованием ряда Лежандра обычно лучше обусловлены, чем подгонки с использованием степенных рядов, но многое может зависеть от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.
Ссылки
[1] Википедия, «Аппроксимация кривых», https://en.wikipedia.org/wiki/Curve_fitting -
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.polynomial.legendre.legfit.html