Spec-Zone.ru › NumPy 1.20

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.

Parameters
xarray_like, shape (M,)

Координаты x M выборочных точек (x[i], y[i]).

yarray_like, shape (M,) or (M, K)

Координаты y выборочных точек. Несколько наборов данных выборочных точек, имеющих одинаковые координаты x, могут быть подогнаны одновременно путём передачи двумерного массива, содержащего один набор данных на столбец.

degint or 1-D array_like

Степень(и) подгоняемых многочленов. Если deg является единственным целым числом, все члены до и включая deg’й член включаются в подгонку. Для версий NumPy >= 1.11.0 может использоваться список целых чисел, определяющих степени включаемых членов.

rcondfloat, optional

Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого значения относительно наибольшего сингулярного значения, будут игнорироваться. Значение по умолчанию равно len(x)*eps, где eps — относительная точность типа float, примерно 2e-16 в большинстве случаев.

fullbool, optional

Переключатель, определяющий характер возвращаемого значения. Когда он равен False (по умолчанию), возвращаются только коэффициенты, а когда True, возвращается также диагностическая информация из разложения по сингулярным значениям.

warray_like, shape (M,), optional

Веса. Если не равно None, вклад каждой точки (x[i],y[i]) в подгонку взвешивается значением w[i]. В идеале веса выбираются таким образом, чтобы ошибки произведений w[i]*y[i] все имели одинаковую дисперсию. Значение по умолчанию — None.

Returns
coefndarray, shape (M,) or (M, K)

Коэффициенты Лагера, упорядоченные от низшего к высшему. Если y было двумерным, коэффициенты для данных в столбце k из y находятся в столбце k.

[residuals, rank, singular_values, rcond]list

Эти значения возвращаются только в случае, если full = True

resid — сумма квадратов остатков наименьших квадратов подгонки, rank — числовая ранг масштабированной матрицы Вандермонда, sv — сингулярные значения масштабированной матрицы Вандермонда, rcond — значение rcond.

Для получения дополнительной информации см. numpy.linalg.lstsq.

Warns
RankWarning

Ранг матрицы коэффициентов в подгонке наименьших квадратов является недостаточным. Предупреждение выдаётся только в том случае, если full = False. Предупреждения можно отключить, используя

>>> import warnings
>>> warnings.simplefilter('ignore', np.RankWarning)

См. также

numpy.polynomial.polynomial.polyfit
numpy.polynomial.legendre.legfit
numpy.polynomial.chebyshev.chebfit
numpy.polynomial.hermite.hermfit
numpy.polynomial.hermite_e.hermefit
lagval

Вычисляет значение ряда Лагера.

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

Википедия, «Подгонка кривых», 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API