numpy.polynomial.legendre.legfit
-
numpy.polynomial.legendre.legfit(x, y, deg, rcond=None, full=False, w=None)[source] -
Наименьшие квадраты подгонки полинома Лежандра к данным.
Возвращает коэффициенты полинома Лежандра степени
deg, являющегося наилучшей подгонкой к значениям данныхy, заданным в точкахx. Еслиyявляется одномерным массивом, возвращаемые коэффициенты также будут одномерными. Еслиyявляется двумерным, выполняется несколько подгонок, по одной для каждого столбцаy, и результирующие коэффициенты хранятся в соответствующих столбцах возвращаемого двумерного массива. Подгоняемый(ые) полином(ы) имеют вид
где
nявляетсяdeg.Параметры: x : array_like, shape (M,)
Координаты x M точек выборки
(x[i], y[i]).y : array_like, shape (M,) или (M, K)
Координаты y точек выборки. Несколько наборов данных точек выборки с одинаковыми координатами x можно подгонять одновременно, передавая двумерный массив, содержащий один набор данных в каждом столбце.
deg : int или 1-D array_like
Степень(и) подгоняемых полиномов. Если
deg— целое число, то в подгонку включаются все члены до и включаяdeg-й член. Для версий NumPy >= 1.11.0 вместо этого можно использовать список целых чисел, определяющих степени членов, которые необходимо включить.rcond : float, необязательно
Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого отношения относительно наибольшего сингулярного значения, будут игнорироваться. Значение по умолчанию равно len(x)*eps, где eps — относительная точность типа float, примерно 2e-16 в большинстве случаев.
full : bool, необязательно
Переключатель, определяющий характер возвращаемого значения. Когда значение False (по умолчанию), возвращаются только коэффициенты; когда True, также возвращаются диагностические сведения из разложения по сингулярным значениям.
w : array_like, shape (
M,), необязательноВеса. Если не None, вклад каждой точки
(x[i],y[i])в подгонку взвешивается с помощьюw[i]. В идеале веса выбираются таким образом, чтобы ошибки произведенийw[i]*y[i]имели одинаковую дисперсию. Значение по умолчанию — None.Введено в версии 1.5.0.
Возвращает: coef : ndarray, shape (M,) или (M, K)
Коэффициенты Лежандра, упорядоченные от низшей к высшей степени. Если
yбыла двумерной, коэффициенты для данных в столбце k изyнаходятся в столбцеk. Еслиdegуказан как список, коэффициенты для членов, не включенных в подгонку, устанавливаются равными нулю в возвращаемомcoef.[residuals, rank, singular_values, rcond] : список
Эти значения возвращаются только если
full= Trueresid — сумма квадратов остатков наименьших квадратов подгонки rank — числовой ранг масштабированной матрицы Вандермонда sv — сингулярные значения масштабированной матрицы Вандермонда rcond — значение
rcond.Для более подробной информации см.
linalg.lstsq.Предупреждения: RankWarning
Ранг матрицы коэффициентов в наименьших квадратах подгонке недостаточен. Предупреждение выводится только если
full= False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', RankWarning)См. также
chebfit,polyfit,lagfit,hermfit,hermefit-
legval - Вычисляет значения полинома Лежандра.
-
legvander - Матрица Вандермонда полинома Лежандра.
-
legweight - Функция веса Лежандра (= 1).
-
linalg.lstsq - Вычисляет наименьшие квадраты подгонки из матрицы.
-
scipy.interpolate.UnivariateSpline - Вычисляет подгонку сплайнами.
Примечания
Решение — это коэффициенты полинома Лежандра
p, которые минимизируют сумму взвешенных квадратов ошибок
где
— это веса. Эта задача решается путем построения (как правило, переопределенного) матричного уравнения
где
V— это взвешенная псевдо-матрица Вандермонда изx,c— это коэффициенты, которые необходимо найти,w— это веса, аy— наблюдаемые значения. Это уравнение решается с помощью разложения по сингулярным значениямV.Если некоторые из сингулярных значений
Vнастолько малы, что ими можно пренебречь, то выводится предупреждениеRankWarning. Это означает, что значения коэффициентов могут быть плохо определены. Использование подгонки меньшей степени обычно устраняет это предупреждение. Параметрrcondтакже может быть установлен на значение, меньшее, чем по умолчанию, но результирующая подгонка может быть ложной и иметь значительные вклады от ошибки округления.Подгонки, использующие полиномы Лежандра, обычно лучше обусловлены, чем подгонки, использующие степенные ряды, но многое зависит от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.
Ссылки
[R69] Wikipedia, “Кривая подгонка”, http://en.wikipedia.org/wiki/Curve_fitting -
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.polynomial.legendre.legfit.html