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, и полученные коэффициенты сохраняются в соответствующих столбцах двумерного возвращаемого значения. Подгоняемый(ые) многочлен(ы) имеют вид
где
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был двумерным, коэффициенты для данных в столбце kyнаходятся в столбцеk.[residuals, rank, singular_values, rcond] : список
Эти значения возвращаются только если
full= Trueresid — сумма квадратов остатков наименьших квадратов подгонки rank — числовой ранг масштабированной матрицы Вандермонда sv — сингулярные значения масштабированной матрицы Вандермонда rcond — значение
rcond.Для более подробной информации см.
linalg.lstsq.Предупреждения: RankWarning
Ранг матрицы коэффициентов в наименьших квадратах подгонки недостаточен. Предупреждение генерируется только если
full= False. Предупреждения можно отключить, выполнив>>> import warnings >>> warnings.simplefilter('ignore', RankWarning)См. также
chebfit,legfit,polyfit,hermfit,polyfithermeval- Вычисляет значение ряда Эрмита.
hermevander- Псевдоматрица Вандермонда ряда Эрмита.
hermeweight- Функция весов Эрмита.
linalg.lstsq- Вычисляет наименьшие квадраты подгонки из матрицы.
scipy.interpolate.UnivariateSpline- Вычисляет сплайн-подгонки.
Примечания
Решение — коэффициенты ряда Эрмита–Эрмита
p, которые минимизируют сумму взвешенных квадратов ошибок
где
— веса. Эта задача решается путем построения (как правило) переопределенной матричной системы
где
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