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

更新于:2022年1月7日

2K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告