numpy.linalg.eig
-
numpy.linalg.eig(a)[source] -
Вычисление собственных значений и собственных векторов квадратной матрицы.
Параметры: a : (…, M, M) массив
Матрицы, для которых будут вычислены собственные значения и собственные векторы
Возвращаемые значения: w : (…, M) массив
Собственные значения, каждое повторяется в соответствии с его кратностью. Собственные значения не обязательно упорядочены. Результирующий массив будет комплексного типа, если мнимая часть не равна нулю, в противном случае он будет преобразован к вещественному типу. Когда
aявляется вещественной, результирующие собственные значения будут вещественными (0 мнимая часть) или встречаются в сопряженных парахv : (…, M, M) массив
Нормализованные (единичной «длины») собственные векторы, такие что столбец
v[:,i]является собственным вектором, соответствующим собственному значениюw[i].Исключения: LinAlgError
Если вычисление собственных значений не сходится.
См. также
Примечания
Новое в версии 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]для.
Массив
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.]])
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.linalg.eig.html