numpy.linalg.eigvals

numpy.linalg.eigvals(a)

Функция numpy.linalg.eigvals вычисляет собственные числа (значения) матрицы.

Если вам необходимо вычислять и собственные значения и собственные векторы, то воспользуйтесь функцией linalg.eig().

Параметры:
a - массив NumPy или подобнй массиву объект.
Это может быть толко "квадратный" двумерный массив, т.е. квадратная матрица. Если это многомерный массив, то две его последние оси должны быть равны, в этом случае он рассматривается как массив матриц и все вычисления выполняются отдельно для каждой из них.
Возвращает:
w - массив NumPy
Собственные числа входной матрицы.
Смотрите так же:
eig, eigh, eigvalsh

Примеры

Данный пример основан на том, что собственные значения матрицы являются решением ее характеристического уравнения. Рассмотрим матрицу размером (3, 3), ее характеристическое уравнение записывается как:

$$\displaystyle {\rm {det}}\left(\lambda E-A\right)=\lambda ^{3}-\lambda ^{2}{\rm {tr}}(A)-\lambda {\frac {1}{2}}\left({\rm {tr}}(A^{2})-{\rm {tr}}^{2}(A)\right)-{\rm {det}}(A)=0$$

>>> import numpy as np
>>> from numpy import linalg as LA
>>> 
>>> a = np.array([[2, 3, 5], [7, 11, 13], [17, 19, 23]])
>>> 
>>> l = LA.eigvals(a)
>>> 
>>> l
array([36.81172799, -1.91702763,  1.10529963])
>>> 
>>> 
>>> l**3 - np.trace(a)*l**2 - 0.5*(np.trace(LA.matrix_power(a, 2)) - np.trace(a)**2)*l - LA.det(a)
array([-1.70530257e-11, -4.83169060e-13,  1.42108547e-13])

Как видим, результат не равен 0, однако, он настолько мал, что в определенной степени его все-таки можно считать равным 0.