Spec-Zone.ru › NumPy 1.17

numpy.linalg.eig

numpy.linalg.eig(a) [source]

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

Параметры:
a : (…, M, M) array

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

Возвращаемое значение:
w : (…, M) array

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

v : (…, M, M) array

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

Возбуждает:
LinAlgError

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

См. также

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

Примечания

Введено в версии 1.8.0.

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

Эта функция реализована с использованием подпрограмм 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.        -0.70710678j, 0.        +0.70710678j]])

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

>>> a = np.array([[1, 1j], [-1j, 1]])
>>> w, v = LA.eig(a)
>>> w; v
array([2.+0.j, 0.+0.j])
array([[ 0.        +0.70710678j,  0.70710678+0.j        ], # may vary
       [ 0.70710678+0.j        , -0.        +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.17.0/reference/generated/numpy.linalg.eig.html

Spec-Zone.ru

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