中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

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 ]]))
>>>