Compute the eigenvalues and right eigenvectors of a square array.
求方阵(
n x n
)的特征值与右特征向量
Parameters
a : (…, M, M) array
Matrices for which the eigenvalues and right eigenvectors will be computed
a是一个矩阵
Matrix
的数组。每个矩阵
M
都会被计算其特征值与特征向量。
Returns
w : (…, M) array
The eigenvalues, each repeated according to its multiplicity.
The eigenvalues are not necessarily ordered. The resulting array will be of complex type, unless the imaginary part is zero in which case it will be cast to a real type. When
a
is real the resulting eigenvalues will be real (0 imaginary part) or occur in conjugate pairs
返回的
w
是其特征值。特征值不会特意进行排序。返回的array一般都是复数形式,除非虚部为0,会被cast为实数。当
a
是实数类型时,返回的就是实数。
v : (…, M, M) array
The normalized (unit “length”) eigenvectors, such that the column
v[:,i]
is the eigenvector corresponding to the eigenvalue
w[i]
.
返回的
v
是归一化后的特征向量(
length
为1)。特征向量
v[:,i]
对应特征值
w[i]
。
Raises
LinAlgError
If the eigenvalue computation does not converge.
Ralated Function:
See Also
eigvals : eigenvalues of a non-symmetric array.
eigh : eigenvalues and eigenvectors of a real symmetric or complex Hermitian (conjugate symmetric) array.
eigvalsh : eigenvalues of a real symmetric or complex Hermitian (conjugate symmetric) array.
scipy.linalg.eig : Similar function in SciPy that also solves the generalized eigenvalue problem.
scipy.linalg.schur : Best choice for unitary and other non-Hermitian normal matrices.
相关的函数有:
eigvals
:计算非对称矩阵的特征值
eigh
:实对称矩阵或者复共轭对称矩阵(
Hermitian
)的特征值与特征向量
eigvalsh
: 实对称矩阵或者复共轭对称矩阵(
Hermitian
)的特征值与特征向量
scipy.linalg.eig
scipy.linalg.schur
Notes
… versionadded:: 1.8.0
Broadcasting rules apply, see the
numpy.linalg
documentation for details.
This is implemented using the
_geev
LAPACK routines which compute the eigenvalues and eigenvectors of general square arrays.
The number
w
is an eigenvalue of
a
if there exists a vector
v
such that
a @ v = w * v
. Thus, the arrays
a
,
w
, and
v
satisfy the equations
a @ v[:,i] = w[i] * v[:,i]
for :math:
i \\in \\{0,...,M-1\\}
.
The array
v
of eigenvectors may not be of maximum rank, that is, some of the columns may be linearly dependent, although round-off error may obscure that fact. If the eigenvalues are all different, then theoretically the eigenvectors are linearly independent and
a
can be diagonalized by a similarity transformation using
v
, i.e,
inv(v) @ a @ v
is diagonal.
For non-Hermitian normal matrices the SciPy function
scipy.linalg.schur
is preferred because the matrix
v
is guaranteed to be unitary, which is not the case when using
eig
. The Schur factorization produces an upper triangular matrix rather than a diagonal matrix, but for normal matrices only the diagonal of the upper triangular matrix is needed, the rest is roundoff error.
Finally, it is emphasized that
v
consists of the right (as in right-hand side) eigenvectors of
a
. A vector
y
satisfying
y.T @ a = z * y.T
for some number
z
is called a left eigenvector of
a
, and, in general, the left and right eigenvectors of a matrix are not necessarily the (perhaps conjugate) transposes of each other.
References
G. Strang, Linear Algebra and Its Applications, 2nd Ed., Orlando, FL,
Academic Press, Inc., 1980, Various pp.