numpy.polynomial.legendre.legfit
- polynomial.legendre.legfit(x, y, deg, rcond=None, full=False, w=None)[source]
-
Наименьшие квадраты подгонки полинома Лежандра к данным.
Возвращает коэффициенты полинома Лежандра степени
deg, который является наименьшим квадратичным приближением к значениям данныхy, заданным в точкахx. Еслиyявляется одномерным, возвращаемые коэффициенты также будут одномерными. Еслиyявляется двумерным, выполняются несколько подгонок, по одной для каждого столбцаy, а полученные коэффициенты хранятся в соответствующих столбцах двумерного возвращаемого значения. Приближенный полином(ы) имеет вид\[p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x),\]где
nявляетсяdeg.- Параметры
-
- xarray_like, форма (M,)
-
Координаты x M точек выборки
(x[i], y[i]). - yarray_like, форма (M,) или (M, K)
-
Координаты y точек выборки. Несколько наборов точек выборки с одинаковыми координатами x могут быть подогнаны одновременно, передав двумерный массив, содержащий один набор данных в каждом столбце.
- degint или 1-D array_like
-
Степень(и) подгоняемых полиномов. Если
deg- это целое число, то все члены до и включаяdeg-ый член включены в подгонку. Для версий NumPy >= 1.11.0 может использоваться список целых чисел, указывающих степени членов, которые нужно включить. - rcondfloat, необязательно
-
Относительное число обусловленности подгонки. Сингулярные значения, меньшие этого отношения к наибольшему сингулярному значению, будут игнорироваться. Значение по умолчанию равно len(x)*eps, где eps - относительная точность типа float, примерно 2e-16 в большинстве случаев.
- fullbool, необязательно
-
Переключатель, определяющий характер возвращаемого значения. Когда он равен False (по умолчанию), возвращаются только коэффициенты, когда True - также возвращается диагностическая информация из разложения по сингулярным значениям.
-
warray_like, форма (
M,), необязательно -
Веса. Если не None, вклад каждой точки
(x[i],y[i])в подгонку взвешивается значениемw[i]. В идеале веса выбираются таким образом, чтобы ошибки произведенийw[i]*y[i]имели одинаковую дисперсию. Значение по умолчанию равно None.Добавлена в версии 1.5.0.
- Возвращаемые значения
-
- coefndarray, форма (M,) или (M, K)
-
Коэффициенты Лежандра, упорядоченные от низшего к высшему. Если
yбыло двумерным, коэффициенты для данных в столбце k изyнаходятся в столбцеk. Еслиdegуказан как список, коэффициенты для членов, не включенных в подгонку, устанавливаются равными нулю в возвращаемомcoef. - [residuals, rank, singular_values, rcond]list
-
Эти значения возвращаются только если
full= Trueresid – сумма квадратов остатков наименьших квадратов подгонки rank – числовой ранг отмасштабированной матрицы Вандермонда sv – сингулярные значения отмасштабированной матрицы Вандермонда rcond – значение
rcond.Дополнительную информацию см. в
numpy.linalg.lstsq.
- Предупреждения
-
- RankWarning
-
Ранг матрицы коэффициентов в подгонке наименьших квадратов является недостаточным. Предупреждение выдается только если
full= False. Предупреждения можно отключить, используя>>> import warnings >>> warnings.simplefilter('ignore', np.RankWarning)
См. также
numpy.polynomial.polynomial.polyfitnumpy.polynomial.chebyshev.chebfitnumpy.polynomial.laguerre.lagfitnumpy.polynomial.hermite.hermfitnumpy.polynomial.hermite_e.hermefitlegval-
Вычисляет значение полинома Лежандра.
legvander-
Матрица Вандермонда полиномов Лежандра.
legweight-
Функция веса Лежандра (= 1).
numpy.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также может быть установлен на значение меньше значения по умолчанию, но полученная подгонка может быть ложной и иметь значительные вклады от погрешности округления.Подгонки с использованием полиномов Лежандра обычно лучше обусловлены, чем подгонки с использованием степенных рядов, но многое зависит от распределения точек выборки и гладкости данных. Если качество подгонки недостаточно, сплайны могут быть хорошей альтернативой.
Ссылки
- 1
-
Wikipedia, «Подгонка кривых», https://en.wikipedia.org/wiki/Curve_fitting
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.polynomial.legendre.legfit.html