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было двумерным, коэффициенты для данных в столбце kyнаходятся в столбце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', 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] Wikipedia, “Кривая подгонка”, 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.16.1/reference/generated/numpy.polynomial.legendre.legfit.html