eigh
计算厄米特矩阵或者实数对称矩阵的特征值和特征向量。
参数
x (Tensor):输入一个或一批厄米特矩阵或者实数对称矩阵。
x的形状应为[*, M, M],其中*为零或更大的批次维度,数据类型支持 float32、float64、complex64、complex128。别名input。UPLO (str,可选):表示计算上三角或者下三角矩阵,默认值为 'L',表示计算下三角矩阵的特征值和特征向量,'U'表示计算上三角矩阵的特征值和特征向量。
name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为 None。
关键字参数
out (tuple[Tensor, Tensor],可选) - 输出 Tensor 元组,若不为
None,计算结果将保存在该 Tensor 元组中,默认值为None。
返回
包含两项的元组:
out_value (Tensor):输出矩阵的特征值,输出顺序按照从小到大进行排序。Shape 为
[*, N],数据类型为 float32 和 float64。out_vector (Tensor):输出矩阵的特征向量,与特征值一一对应,Shape 为
[*, N, N],数据类型为 float32、float64、complex64 和 complex128。
代码示例
>>> import paddle
>>> x = paddle.to_tensor([[1, -2j], [2j, 5]])
>>> out_value, out_vector = paddle.linalg.eigh(x, UPLO='L')
>>> print(out_value)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[0.17157286, 5.82842731])
>>> print(out_vector)
Tensor(shape=[2, 2], dtype=complex64, place=Place(cpu), stop_gradient=True,
[[(-0.92387950+0.00000000j), (-0.38268340+0.00000000j)],
[ (0.00000000+0.38268340j), (0.00000000-0.92387950j) ]])