PyTorch – 如何计算方阵的特征值和特征向量?
**torch.linalg.eig()** 计算方阵或方阵批次的特征值分解。它接受**float、double、cfloat**和**cdouble**数据类型的矩阵和矩阵批次。它返回一个命名元组 (特征值,特征向量)。特征值和特征向量始终是复数值。特征向量由**特征向量**的列给出。
语法
(eigenvalues, eigenvectors) = torch.linalg.eig(A)
其中 A 是方阵或方阵批次。它返回一个命名元组 (特征值,特征向量)。
步骤
导入所需的库。在以下所有示例中,所需的 Python 库是**torch**。确保您已安装它。
import torch
创建一个方阵或方阵批次。这里我们定义一个大小为 [3, 3] 的方阵(一个 2D torch 张量)。
A = torch.randn(3,3)
使用**torch.linalg.eig(A)**计算方阵或方阵批次的特征值分解。这里 A 是方阵。
eigenvalues, eigenvectors = torch.linalg.eig(A)
显示特征值和特征向量。
print("Eigen Values:
", eigenvalues) print("Eigen Vectors:
", eigenvectors)
示例 1
在这个程序中,我们计算方阵的特征值和特征向量。
# import required library import torch # create a 3x3 square matrix A = torch.randn(3,3) # print the above created matrix print("Matrix:
", A) # compute the Eigen values and vectors of the matrix eigenvalues, eigenvectors = torch.linalg.eig(A) print("Eigen Values:
", eigenvalues) print("Eigen Vectors:
", eigenvectors)
输出
它将产生以下输出:
Matrix: tensor([[-0.7412, 0.6472, -0.4741], [ 1.8981, 0.2936, -1.9471], [-0.1449, 0.0327, -0.8543]]) Eigen Values: tensor([ 1.0190+0.j, -1.3846+0.j, -0.9364+0.j]) Eigen Vectors: tensor([[-0.3476+0.j, -0.7716+0.j, 0.5184+0.j], [-0.9376+0.j, 0.5862+0.j, 0.3982+0.j], [ 0.0105+0.j, -0.2469+0.j, 0.7568+0.j]])
示例 2
在这个程序中,我们计算复数方阵的特征值和特征向量。
# import required library import torch # create a 2x2 square complex matrix A = torch.randn(2,2, dtype = torch.cfloat ) # print the above created matrix print("Matrix:
", A) # computet the eigen values and vectors of the matrix eigenvalues, eigenvectors = torch.linalg.eig(A) print("Eigen Values:
", eigenvalues) print("Eigen Vectors:
", eigenvectors)
输出
它将产生以下输出:
Matrix: tensor([[-0.1068-0.0045j, 0.7061-0.5698j], [-0.2521-1.1166j, 0.6921+1.4637j]]) Eigen Values: tensor([0.3194-0.3633j, 0.2659+1.8225j]) Eigen Vectors: tensor([[ 0.8522+0.0000j, -0.2012-0.3886j], [ 0.5231-0.0109j, 0.8992+0.0000j]])
广告