Spec-Zone.ru › NumPy 1.11

numpy.linalg.eig

numpy.linalg.eig(a) [source]

Вычисление собственных значений и правых собственных векторов квадратной матрицы.

Параметры:

a : (..., M, M) массив

Матрицы, для которых будут вычислены собственные значения и правые собственные векторы

Возвращает:

w : (..., M) массив

Собственные значения, каждое повторяется в соответствии с его кратностью. Собственные значения не обязательно упорядочены. Результирующий массив будет комплексного типа, если мнимая часть равна нулю, в этом случае он будет преобразован к вещественному типу. Если a вещественное, то полученные собственные значения будут вещественными (0 мнимая часть) или появятся в комплексно-сопряженных парах

v : (..., M, M) массив

Нормализованные (единичной «длины») собственные векторы, такие, что столбец v[:,i] является собственным вектором, соответствующим собственному значению w[i].

Возможные исключения:

LinAlgError

Если вычисление собственных значений не сходится.

См. также

eigvals
собственные значения несимметричной матрицы.
eigh
собственные значения и собственные векторы симметричной или эрмитовой (сопряжённо-симметричной) матрицы.
eigvalsh
собственные значения симметричной или эрмитовой (сопряжённо-симметричной) матрицы.

Замечания

Впервые появилась в версии 1.8.0.

Применяются правила вещания, см. документацию numpy.linalg для получения подробностей.

Это реализовано с помощью процедур LAPACK _geev, которые вычисляют собственные значения и собственные векторы общих квадратных матриц.

Число w является собственным значением матрицы a, если существует вектор v, такой что dot(a,v) = w * v. Таким образом, матрицы a, w, и v удовлетворяют уравнениям dot(a[:,:], v[:,i]) = w[i] * v[:,i] для i \in \{0,...,M-1\}.

Матрица v собственных векторов может не иметь максимального ранга, т. е. некоторые столбцы могут быть линейно зависимыми, хотя погрешность округления может скрыть этот факт. Если собственные значения все различны, то теоретически собственные векторы линейно независимы. Аналогично, (комплекснозначная) матрица собственных векторов v является унитарной, если матрица a является нормальной, т. е. если dot(a, a.H) = dot(a.H, a), где a.H обозначает сопряжённо-транспонированную матрицу a.

Наконец, следует подчеркнуть, что v состоит из правых (как в правой части) собственных векторов матрицы a. Вектор y удовлетворяющий dot(y.T, a) = z * y.T для некоторого числа z называется левым собственным вектором матрицы a, и, вообще говоря, левые и правые собственные векторы матрицы не обязательно являются (возможно сопряжённо-транспонированными) друг друга.

Ссылки

Г. Стрэнг, Линейная алгебра и её приложения, 2-е изд., Орландо, Флорида, издательство Academic Press, Inc., 1980, Различные страницы.

Примеры

>>> from numpy import linalg as LA

(Практически) тривиальный пример с вещественными собственными значениями и собственными векторами.

>>> w, v = LA.eig(np.diag((1, 2, 3)))
>>> w; v
array([ 1.,  2.,  3.])
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

Вещественная матрица с комплексными собственными значениями и собственными векторами; обратите внимание, что собственные значения являются комплексными сопряжёнными друг другу.

>>> w, v = LA.eig(np.array([[1, -1], [1, 1]]))
>>> w; v
array([ 1. + 1.j,  1. - 1.j])
array([[ 0.70710678+0.j        ,  0.70710678+0.j        ],
       [ 0.00000000-0.70710678j,  0.00000000+0.70710678j]])

Комплекснозначная матрица с вещественными собственными значениями (но комплексными собственными векторами); обратите внимание, что a.conj().T = a, т.е. a — эрмитова матрица.

>>> a = np.array([[1, 1j], [-1j, 1]])
>>> w, v = LA.eig(a)
>>> w; v
array([  2.00000000e+00+0.j,   5.98651912e-36+0.j]) # i.e., {2, 0}
array([[ 0.00000000+0.70710678j,  0.70710678+0.j        ],
       [ 0.70710678+0.j        ,  0.00000000+0.70710678j]])

Будьте внимательны к погрешности округления!

>>> a = np.array([[1 + 1e-9, 0], [0, 1 - 1e-9]])
>>> # Theor. e-values are 1 +/- 1e-9
>>> w, v = LA.eig(a)
>>> w; v
array([ 1.,  1.])
array([[ 1.,  0.],
       [ 0.,  1.]])

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

Spec-Zone.ru

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