Spec-Zone.ru › NumPy 1.11

numpy.ma.polyfit

numpy.ma.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False) [source]

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

Подгон полинома p(x) = p[0] * x**deg + ... + p[deg] степени deg к точкам (x, y). Возвращает вектор коэффициентов p, минимизирующий среднеквадратическую ошибку.

Параметры:

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,), необязательно

Веса, применяемые к координатам y точек выборки. Для гауссовых неопределённостей используйте 1/sigma (а не 1/sigma**2).

cov : bool, необязательно

Возвращает оценку и ковариационную матрицу оценки. Если full равен True, cov не возвращается.

Возвращает:

p : ndarray, форма (M,) или (M, K)

Коэффициенты полинома, старший член вначале. Если y был двумерным, коэффициенты для k-го набора данных находятся в p[:,k].

residuals, rank, singular_values, rcond :

Присутствуют только если full = True. Остатки наименьших квадратов подгонки, эффективный ранг матрицы коэффициентов масштабированной матрицы Вандермонда, её сингулярные значения и заданное значение rcond. Для более подробной информации см. linalg.lstsq.

V : ndarray, форма (M,M) или (M,M,K)

Присутствует только если full = False и cov`=True. The covariance matrix of the polynomial coefficient estimates. The diagonal of this matrix are the variance estimates for each coefficient. If y is a 2-D array, then the covariance matrix for the `k-й набор данных находится в V[:,:,k].

Предупреждения:

RankWarning

Ранг матрицы коэффициентов в наименьших квадратах подгонки недостаточный. Предупреждение выводится только если full = False.

Предупреждения можно отключить с помощью

>>> import warnings
>>> warnings.simplefilter('ignore', np.RankWarning)

См. также

polyval
Вычисление полиномиальных значений.
linalg.lstsq
Вычисляет подгонку наименьших квадратов.
scipy.interpolate.UnivariateSpline
Вычисляет подгонки сплайнами.

Примечания

Любые значения, замаскированные в x, передаются в y и наоборот.

Ссылки

[R52] Википедия, “Подгонка кривой”, http://en.wikipedia.org/wiki/Curve_fitting
[R53] Википедия, “Полиномическая интерполяция”, http://en.wikipedia.org/wiki/Polynomial_interpolation

Примеры

>>> x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254])

Для работы с полиномами удобно использовать объекты %%%CODE_BLOCK_21%%:

>>> p = np.poly1d(z)
>>> p(0.5)
0.6143849206349179
>>> p(3.5)
-0.34732142857143039
>>> p(10)
22.579365079365115

Полиномы высокой степени могут колебаться:

>>> p30 = np.poly1d(np.polyfit(x, y, 30))
/... RankWarning: Polyfit may be poorly conditioned...
>>> p30(4)
-0.80000000000000204
>>> p30(5)
-0.99999999999999445
>>> p30(4.5)
-0.10547061179440398

Иллюстрация:

>>> import matplotlib.pyplot as plt
>>> xp = np.linspace(-2, 6, 100)
>>> _ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
>>> plt.ylim(-2,2)
(-2, 2)
>>> plt.show()

(Исходный код, png, pdf)

../../_images/numpy-ma-polyfit-1.png

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.ma.polyfit.html

Spec-Zone.ru

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