numpy.polynomial.laguerre.lagfit
-
numpy.polynomial.laguerre.lagfit(x, y, deg, rcond=None, full=False, w=None)[source] -
Наименьшие квадраты подгонка ряда Лагерра к данным.
Возвращает коэффициенты ряда Лагерра степени
deg, который является наименьшей квадратов подгонкой к значениям данныхy, заданным в точкахx. Еслиyявляется одномерным, возвращаемые коэффициенты также будут одномерными. Еслиyявляется двумерным, выполняется несколько подгонок, по одной для каждого столбцаy, и полученные коэффициенты хранятся в соответствующих столбцах двумерного возвращаемого значения. Приведённый полином(ы) имеют вид
где
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.0 может использоваться список целых чисел, определяющих степени включаемых членов.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.Возвращает: coef : ndarray, форма (M,) или (M, K)
Коэффициенты Лагерра, упорядоченные по возрастанию степени. Если
yбыло 2-мерным, коэффициенты для данных в столбце k изyнаходятся в столбцеk.[residuals, rank, singular_values, rcond] : список
Эти значения возвращаются только если
full= Trueresid – сумма квадратов остатков наименьших квадратов подгонки; rank – числовая ранг масштабированной матрицы Вандермонда; sv – сингулярные значения масштабированной матрицы Вандермонда; rcond – значение
rcond.Для получения более подробной информации см.
linalg.lstsq.Предупреждения: RankWarning
Ранг матрицы коэффициентов в наименьших квадратах подгонке недостаточен. Предупреждение поднимается только если
full= False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', RankWarning)См. также
chebfit,legfit,polyfit,hermfit,hermefit-
lagval - Вычисляет значение ряда Лагерра.
-
lagvander - Псевдо матрица Вандермонда ряда Лагерра.
-
lagweight - Функция веса Лагерра.
-
linalg.lstsq - Вычисляет наименьшие квадраты подгонки из матрицы.
-
scipy.interpolate.UnivariateSpline - Вычисляет подгонку сплайном.
Замечания
Решение – коэффициенты ряда Лагерра
p, которые минимизируют сумму взвешенных квадратов ошибок
где
– это веса. Эта проблема решается путем построения (как правило, переопределенного) матричного уравнения
где
V– это взвешенная псевдо матрица Вандермондаx,c– это коэффициенты, которые нужно найти,w– это веса, аy– наблюдаемые значения. Это уравнение затем решается с помощью разложения по сингулярным значениямV.Если некоторые сингулярные значения
Vнастолько малы, что ими пренебрегают, то будет выведено предупреждениеRankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Обычно предупреждение исчезает при использовании подгонки с меньшей степенью. Параметрrcondтакже можно установить значением меньшим, чем по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от погрешности округления.Подгонки, использующие ряды Лагерра, вероятно, наиболее полезны, когда данные могут быть аппроксимированы
sqrt(w(x)) * p(x), гдеw(x)– это вес Лагерра. В этом случае весsqrt(w(x[i])должен использоваться вместе со значениями данныхy[i]/sqrt(w(x[i]). Функция веса доступна какlagweight.Ссылки
[R63] Википедия, “Аппроксимация кривых”, http://en.wikipedia.org/wiki/Curve_fitting Примеры
>>> from numpy.polynomial.laguerre import lagfit, lagval >>> x = np.linspace(0, 10) >>> err = np.random.randn(len(x))/10 >>> y = lagval(x, [1, 2, 3]) + err >>> lagfit(x, y, 2) array([ 0.96971004, 2.00193749, 3.00288744])
-
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.polynomial.laguerre.lagfit.html