Hermitian矩阵的特征向量

时间:2018-05-02 18:42:12

标签: python numpy matrix linear-algebra eigenvector

Hermitian矩阵是复数方矩阵,等于其共轭转置。其矩阵元素满足以下条件:

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

每次,我使用Python计算Hermitian矩阵的特征向量,特征向量的第一个系数是纯实数。这是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])

1 个答案:

答案 0 :(得分:4)

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

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

当对真实矩阵进行特征分解时,你会得到同样的东西:如果你是一个特征向量, - 你也是。为了使特征分解具有确定性,一些实现(例如sklearn的PCA,见this related question)强调u的最大系数为正。