Spec-Zone.ru › NumPy 1.10

numpy.polynomial.laguerre.lagfit

numpy.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.

Параметры:

x : array_like, форма (M,)

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

y : array_like, форма (M,) или (M, K)

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

deg : int

Степень полинома подгонки

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 было двумерным, коэффициенты для данных в столбце k из y находятся в столбце k.

[residuals, rank, singular_values, rcond] : список

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

resid — сумма квадратов остатков наименьших квадратов fit 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 , которые минимизируют сумму взвешенных квадратов ошибок

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.

Ссылки

[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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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