numpy.polynomial.laguerre.lagfit
- polynomial.laguerre.lagfit(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.- Параметры:
-
- xarray_like, форма (M,)
-
Координаты x M точек выборки
(x[i], y[i]). - yarray_like, форма (M,) или (M, K)
-
Координаты y точек выборки. Несколько наборов данных точек выборки, имеющих общие координаты x, могут быть подогнаны одновременно, передав двумерный массив, содержащий один набор данных на столбец.
- degint или 1-мерный array_like
-
Степень(и) аппроксимирующих многочленов. Если
degявляется единственным целым числом, все члены до и включаяdegчлен включаются в подгонку. Для версий NumPy ≥ 1.11.0 вместо этого может использоваться список целых чисел, определяющих степени включаемых членов. - rcondfloat, необязательно
-
Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого значения относительно наибольшего сингулярного значения, будут игнорироваться. Значение по умолчанию равно len(x)*eps, где eps — относительная точность типа float, примерно 2e-16 в большинстве случаев.
- fullbool, необязательно
-
Переключатель, определяющий характер возвращаемого значения. Когда оно равно False (по умолчанию), возвращаются только коэффициенты, когда True также возвращается диагностическая информация из разложения по сингулярным значениям.
-
warray_like, форма (
M,), необязательно -
Веса. Если не равно None, вес
w[i]применяется к невозведённому остаткуy[i] - y_hat[i]в точкеx[i]. В идеале веса выбираются таким образом, чтобы ошибки произведенийw[i]*y[i]имели одинаковую дисперсию. При использовании взвешивания по обратной дисперсии используйтеw[i] = 1/sigma(y[i]). Значение по умолчанию равно None.
- Возвращает:
-
- coefndarray, форма (M,) или (M, K)
-
Коэффициенты Лагерра, упорядоченные от меньшего к большему. Если
yбыло двумерным, коэффициенты для данных в столбце k изyнаходятся в столбце k. - [residuals, rank, singular_values, rcond]list
-
Эти значения возвращаются только если
full == True.- residuals – сумма квадратов остатков наименьших квадратов подгонки
- rank – числовое ранговое значение отмасштабированной матрицы Вандермонда
- singular_values – сингулярные значения отмасштабированной матрицы Вандермонда
- rcond – значение
rcond.
Для более подробной информации см.
numpy.linalg.lstsq.
- Предупреждения:
-
- RankWarning
-
Ранг матрицы коэффициентов в подгонке наименьших квадратов недостаточный. Предупреждение выводится только если
full == False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', np.exceptions.RankWarning)
См. также
numpy.polynomial.polynomial.polyfitnumpy.polynomial.legendre.legfitnumpy.polynomial.chebyshev.chebfitnumpy.polynomial.hermite.hermfitnumpy.polynomial.hermite_e.hermefitlagval-
Вычисляет ряд Лагерра.
lagvander-
псевдоматрица Вандермонда ряда Лагерра.
lagweight-
Функция веса Лагерра.
numpy.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также можно установить на значение меньше его значения по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от округления.Подгонки с использованием рядов Лагерра, вероятно, наиболее полезны, когда данные могут быть аппроксимированы
sqrt(w(x)) * p(x), гдеw(x)— функция веса Лагерра. В этом случае следует использовать весsqrt(w(x[i]))вместе со значениями данныхy[i]/sqrt(w(x[i])). Функция веса доступна какlagweight.Ссылки
[1]Wikipedia, “Кривая подгонка”, https://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]) # may vary
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.polynomial.laguerre.lagfit.html