Hermitian 矩阵的特征向量

Jak*_*ner 3 python numpy matrix linear-algebra eigenvector

埃尔米特矩阵是一个复方矩阵,等于其共轭转置。其矩阵元素满足以下条件:

$$a_{ij} = \bar{a}_{ji}$$

每次,我使用 Python 计算 Hermitian 矩阵的特征向量时,特征向量的第一个系数都是纯实数。这是 Hermitian 矩阵的属性吗?

我附加了一个代码片段来生成埃尔米特矩阵,计算其特征向量并打印与最低特征值相对应的特征向量。

import numpy as np
from numpy import linalg as LA
N = 5   # Set size of a matrix
# Generate real part of the matrix at first
real_matrix = np.random.uniform(-1.0, 1.0, size=(N,N))
real_matrix = (real_matrix + real_matrix.T)/2
# Generate imaginary part of the matrix
imaginary_matrix = np.random.uniform(-1.0, 1.0, size=(N,N))
imaginary_matrix = (imaginary_matrix + imaginary_matrix.T)/2
imaginary_matrix = imaginary_matrix.astype(complex) * 1j
for row in range(N):
    for column in range(row,N):
        if row == column:
            imaginary_matrix[row][column] = 0.0
        else:
            imaginary_matrix[row][column] *= -1
# Combine real and imaginary part
matrix = real_matrix + imaginary_matrix
# Compute and print eigenvector
eigenvalues, eigenvectors = LA.eigh(matrix)
print(eigenvectors[:,0])
Run Code Online (Sandbox Code Playgroud)

P. *_*eri 5

我认为这是一个Python问题而不是一个数学问题。

执行特征值分解时存在一些歧义:如果 u 是特征值 lambda 的酉特征向量,则 exp(i theta) * u 也是同一特征值的酉特征向量(对于任何实数 theta)。为了解决这种不确定性,某些实现强制每个特征向量的第一个系数是实数。

当对实数矩阵进行特征分解时,你会得到同样的结果:如果 u 是特征向量,则 - u 也是。为了使特征分解具有确定性,某些实现(例如 sklearn 的 PCA,请参阅此相关问题)强制 u 的最大系数为正。