Spec-Zone.ru › NumPy 1.10

numpy.polynomial.hermite_e.hermefit

numpy.polynomial.hermite_e.hermefit(x, y, deg, rcond=None, full=False, w=None) [source]

Наименьшие квадраты подгонки ряда Эрмита к данным.

Возвращает коэффициенты ряда Эрмита–Эрмита степени deg, являющегося наименьшей квадратичной аппроксимацией значений данных y, заданных в точках x. Если y является одномерным, возвращаемые коэффициенты также будут одномерными. Если y является двумерным, выполняется несколько подгонок, по одной для каждого столбца y, и полученные коэффициенты сохраняются в соответствующих столбцах двумерного возвращаемого значения. Подгоняемый(ые) многочлен(ы) имеют вид

p(x) = c_0 + c_1 * He_1(x) + ... + c_n * He_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 — сумма квадратов остатков наименьших квадратов подгонки rank — числовой ранг масштабированной матрицы Вандермонда sv — сингулярные значения масштабированной матрицы Вандермонда rcond — значение rcond.

Для более подробной информации см. linalg.lstsq.

Предупреждения:

RankWarning

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

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

См. также

chebfit, legfit, polyfit, hermfit, polyfit

hermeval
Вычисляет значение ряда Эрмита.
hermevander
Псевдоматрица Вандермонда ряда Эрмита.
hermeweight
Функция весов Эрмита.
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 — коэффициенты, которые необходимо найти, а элементы y — наблюдаемые значения. Это уравнение затем решается с помощью разложения по сингулярным значениям V.

Если некоторые сингулярные значения V настолько малы, что ими можно пренебречь, то будет выведено предупреждение RankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Использование подгонки с меньшей степенью обычно устраняет предупреждение. Параметр rcond также можно установить на значение, меньшее его значения по умолчанию, но полученная подгонка может быть ложной и иметь большие вклады от погрешности округления.

Подгонки с помощью ряда Эрмита–Эрмита, вероятно, наиболее полезны, когда данные можно аппроксимировать sqrt(w(x)) * p(x), где w(x) — функция весов Эрмита. В этом случае необходимо использовать вес sqrt(w(x[i]) вместе со значениями данных y[i]/sqrt(w(x[i]). Функция весов доступна как hermeweight.

Ссылки

[R62] Википедия, “Аппроксимация кривых”, http://en.wikipedia.org/wiki/Curve_fitting

Примеры

>>> from numpy.polynomial.hermite_e import hermefik, hermeval
>>> x = np.linspace(-10, 10)
>>> err = np.random.randn(len(x))/10
>>> y = hermeval(x, [1, 2, 3]) + err
>>> hermefit(x, y, 2)
array([ 1.01690445,  1.99951418,  2.99948696])

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polynomial.hermite_e.hermefit.html

Spec-Zone.ru

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