Spec-Zone.ru › NumPy 1.10

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 для получения подробной информации.

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

Число 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.10.1/reference/generated/numpy.linalg.eig.html

Spec-Zone.ru

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