Spec-Zone.ru › NumPy 1.14

numpy.polynomial.hermite.hermfit

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

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

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

p(x) = c_0 + c_1 * H_1(x) + ... + c_n * H_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 было двумерным, коэффициенты для данных в столбце 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, lagfit, polyfit, hermefit

hermval
Вычисляет ряд Эрмита.
hermvander
Матрица Вандермонда ряда Эрмита.
hermweight
Функция весов Эрмита
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]). Функция весов доступна как hermweight.

Ссылки

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

Примеры

>>> from numpy.polynomial.hermite import hermfit, hermval
>>> x = np.linspace(-10, 10)
>>> err = np.random.randn(len(x))/10
>>> y = hermval(x, [1, 2, 3]) + err
>>> hermfit(x, y, 2)
array([ 0.97902637,  1.99849131,  3.00006   ])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.polynomial.hermite.hermfit.html

Spec-Zone.ru

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