NumPy - 特征向量



什么是特征向量?

特征向量是与矩阵相关联的特殊向量,它提供有关矩阵属性的信息。

在线性代数的上下文中,如果A是一个方阵,则对应于特征值λ的特征向量v是一个非零向量,满足以下等式:

Av = λv

这意味着当矩阵A乘以向量v时,结果与用标量λ乘以向量v相同。

在 NumPy 中计算特征向量

NumPy 提供了numpy.linalg.eig()函数来计算方阵的特征值和特征向量。让我们通过一个例子来看看这个函数是如何工作的。

示例

在这个例子中,矩阵A的特征值是 3 和 2。相应的特征向量显示在输出中:

import numpy as np

# Define a 2x2 matrix
A = np.array([[4, -2], 
              [1,  1]])

# Compute the eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(A)

print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)

numpy.linalg.eig()函数的输出包含两个数组:一个用于特征值,一个用于特征向量。

特征值数组包含矩阵的特征值,而特征向量数组的每一列都表示对应于相应特征值的特征向量:

Eigenvalues: [3. 2.]
Eigenvectors:
 [[ 0.89442719  0.70710678]
 [ 0.4472136  -0.70710678]]

特征向量的性质

特征向量具有几个重要的性质,它们是:

  • 线性:对应于不同特征值的特征向量是线性无关的。
  • 可伸缩性:特征向量的任何标量倍数也是对应于相同特征值的特征向量。
  • 不变性:特征向量在由矩阵定义的线性变换下保持不变(最多一个标量倍数)。
  • 正交性:对于对称矩阵,对应于不同特征值的特征向量是正交的。

特征向量的应用

特征向量有许多应用,它们是:

  • 主成分分析 (PCA):用于数据分析和机器学习中的降维。
  • 稳定性分析:用于控制理论中分析系统的稳定性。
  • 量子力学:用于求解薛定谔方程并找到系统的能级。
  • 振动分析:用于工程中分析结构的固有频率。
  • 图论:用于分析图和网络的属性。

示例:3x3 矩阵的特征向量

在下面的示例中,我们使用 NumPy 计算 3x3 矩阵的特征值和特征向量:

import numpy as np

# Define a 3x3 matrix
B = np.array([[1, 2, 3],
              [0, 1, 4],
              [5, 6, 0]])

# Compute the eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(B)

print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)

这将产生以下结果:

Eigenvalues: [-5.2296696  -0.02635282  7.25602242]
Eigenvectors:
[[ 0.22578016 -0.75769839 -0.49927017]
 [ 0.52634845  0.63212771 -0.46674201]
 [-0.81974424 -0.16219652 -0.72998712]]

对称矩阵和实特征向量

对称矩阵是指等于其转置的矩阵(即,A = AT)。对称矩阵在特征值和特征向量方面具有一些特殊的性质:

  • 实特征值:对称矩阵的特征值始终是实数。
  • 正交特征向量:对称矩阵对应于不同特征值的特征向量是正交的。

示例

让我们计算一个对称矩阵的特征值和特征向量:

import numpy as np

# Define a symmetric matrix
C = np.array([[4, 1, 1],
              [1, 4, 1],
              [1, 1, 4]])

# Compute the eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(C)

print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)

以下是上述代码的输出:

Eigenvalues: [6. 3. 3.]
Eigenvectors:
[[-0.57735027 -0.81649658 -0.15430335]
 [-0.57735027  0.40824829 -0.6172134 ]
 [-0.57735027  0.40824829  0.77151675]]

特征向量和对角化

如果方阵A可以写成以下形式,则称其为可对角化的:

A = PDP-1

其中,D是一个包含A的特征值的对角矩阵,P是一个其列是A的特征向量的矩阵。

示例

让我们看看如何使用 NumPy 对角化矩阵:

import numpy as np

# Define a matrix
D = np.array([[2, 0, 0],
              [1, 3, 0],
              [4, 5, 6]])

# Compute the eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(D)

# Diagonal matrix of eigenvalues
D_diag = np.diag(eigenvalues)

# Reconstruct the original matrix
reconstructed_D = eigenvectors @ D_diag @ np.linalg.inv(eigenvectors)

print("Original matrix:\n", D)
print("Reconstructed matrix:\n", reconstructed_D)

使用其特征值和特征向量成功地重建了原始矩阵,演示了对角化过程:

Original matrix:
 [[2 0 0]
 [1 3 0]
 [4 5 6]]
Reconstructed matrix:
 [[2. 0. 0.]
 [1. 3. 0.]
 [4. 5. 6.]]
广告