Spec-Zone.ru › NumPy 1.12

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 или 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 = True

resid – сумма квадратов остатков наименьших квадратов подгонки; 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–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.polynomial.laguerre.lagfit.html

Spec-Zone.ru

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