linalg.eigh
功能描述
返回复埃尔米特(共轭对称)或实对称矩阵的特征值和特征向量。
返回两个对象,一个包含a特征值的1维数组,以及相应特征向量(以列为单位)的二维正方形数组或矩阵(取决于输入类型)。
必选输入参数
参数名 |
类型 |
说明 |
---|---|---|
a |
(…, M, M) array |
埃尔米特矩阵或实对称矩阵。 |
可选输入参数
参数名 |
类型 |
默认值 |
说明 |
---|---|---|---|
UPLO |
{‘L’, ‘U’}, |
‘L’ |
指定计算是用a的下三角部分(“L”)还是上三角形部分(“U”)完成。无论这个值如何,在计算中只考虑对角线的实际部分,以保留埃尔米特矩阵的概念。因此,对角线的虚部将始终被视为零。 |
返回数据
名称 |
类型 |
说明 |
---|---|---|
w |
(…, M) ndarray |
特征值按升序排列,每个特征值根据其多重性重复。 |
v |
{(…, M, M) ndarray, (…, M, M) matrix} |
列v[:,i]是与特征值w[i]相对应的归一化特征向量。如果a是矩阵对象,将返回矩阵对象。 |
示例
>>> import numpy as np >>> # 向量输入 >>> a = np.array([[1,-2j], [2j, 5]]) >>> a array([[ 1.+0.j, -0.-2.j], [ 0.+2.j, 5.+0.j]]) >>> w, v = np.linalg.eigh(a) >>> w, v (array([0.17157288, 5.82842712]), array([[-0.92387953-0.j , -0.38268343+0.j ], [ 0. +0.38268343j, 0. -0.92387953j]])) >>> >>> np.dot(a, v[:, 0]) - w[0] * v[:, 0] array([5.55111512e-17+0.0000000e+00j, 0.00000000e+00+1.2490009e-16j]) >>> np.dot(a, v[:, 1]) - w[1] * v[:, 1] array([0.+0.j, 0.+0.j]) >>> >>> # 矩阵输入 >>> A = np.matrix(a) >>> A matrix([[ 1.+0.j, -0.-2.j], [ 0.+2.j, 5.+0.j]]) >>> w, v = np.linalg.eigh(A) >>> w; v array([0.17157288, 5.82842712]) matrix([[-0.92387953-0.j , -0.38268343+0.j ], [ 0. +0.38268343j, 0. -0.92387953j]]) >>> >>> # 对角线虚部处理 >>> a = np.array([[5+2j, 9-2j], [0+2j, 2-1j]]) >>> a array([[5.+2.j, 9.-2.j], [0.+2.j, 2.-1.j]]) >>> b = np.array([[5.+0.j, 0.-2.j], [0.+2.j, 2.-0.j]]) >>> b array([[5.+0.j, 0.-2.j], [0.+2.j, 2.+0.j]]) >>> >>> np.linalg.eigh(a) (array([1., 6.]), array([[-0.4472136 -0.j , -0.89442719+0.j ], [ 0. +0.89442719j, 0. -0.4472136j ]])) >>> >>> np.linalg.eigh(b) (array([1., 6.]), array([[-0.4472136 -0.j , -0.89442719+0.j ], [ 0. +0.89442719j, 0. -0.4472136j ]])) >>>
父主题: 线性代数函数