numpy.polynomial.hermite.hermfit
-
numpy.polynomial.hermite.hermfit(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 или 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= Trueresid — сумма квадратов остатков наименьших квадратов подгонки 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, минимизирующие сумму взвешенных квадратов ошибокгде
— веса. Эта задача решается путем построения (как правило, переопределенной) матричного уравнения
где
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