上一主题

numpy.linalg.eigh

下一主题

numpy.linalg.eigvalsh

numpy.linalg.eigvals

numpy.linalg.eigvals(a)[source]

计算一般矩阵的特征值。

eigvalseig之间的主要区别:不返回本征向量。

参数:

a:(...,M,M)array_like

将计算其特征值的复值或实值矩阵。

返回:

w:(...,M,)ndarray

特征值,每个根据其多重性重复。它们不一定是有序的,也不一定是真实的矩阵。

上升:

LinAlgError

如果特征值计算不收敛。

也可以看看

eig
一般数组的特征值和右特征向量
eigvalsh
对称或Hermitian数组的特征值。
eigh
对称/ Hermitian数组的特征值和特征向量。

笔记

版本1.8.0中的新功能。

广播规则适用,有关详细信息,请参阅numpy.linalg文档。

这是使用_geev LAPACK例程来实现的,其计算一般方阵数组的特征值和特征向量。

例子

Illustration, using the fact that the eigenvalues of a diagonal matrix are its diagonal elements, that multiplying a matrix on the left by an orthogonal matrix, Q, and on the right by Q.T (the transpose of Q), preserves the eigenvalues of the “middle” matrix. 换句话说,如果Q是正交的,则Q * A t5> QT具有与A相同的特征值:

>>> from numpy import linalg as LA
>>> x = np.random.random()
>>> Q = np.array([[np.cos(x), -np.sin(x)], [np.sin(x), np.cos(x)]])
>>> LA.norm(Q[0, :]), LA.norm(Q[1, :]), np.dot(Q[0, :],Q[1, :])
(1.0, 1.0, 0.0)

现在将一个对角矩阵乘以一侧的Q,另一侧乘以Q.T:

>>> D = np.diag((-1,1))
>>> LA.eigvals(D)
array([-1.,  1.])
>>> A = np.dot(Q, D)
>>> A = np.dot(A, Q.T)
>>> LA.eigvals(A)
array([ 1., -1.])