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,) или (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= 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также может быть установлен на значение, меньшее, чем по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от ошибок округления.Подгонки, использующие ряды Лежандра, обычно лучше обусловлены, чем подгонки, использующие степенные ряды, но многое может зависеть от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.
Ссылки
[R64] Википедия, «Подгонка кривых», http://en.wikipedia.org/wiki/Curve_fitting -
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.polynomial.legendre.legfit.html