当我在scipy中使用线性代数模块来计算埃尔米特矩阵的矩阵对数时,它输出的矩阵不是埃尔米特。我首先使用:
定义一个向量n = np.random.uniform(size = 3) + 1j*np.random.uniform(size = 3)
然后我定义了相应的厄米特矩阵:
N = np.outer(n,n.conj())
但是,linalg.logm(N)
不会返回埃尔米特矩阵。为什么会这样?
答案 0 :(得分:2)
随机矩阵的除一个特征值之外的所有特征值均为零。由于矩阵上的函数可以作为函数写在矩阵的特征值上,我看到为什么对数在那里有问题,因为没有定义log(0)。也许该函数没有看到这个问题,只是返回垃圾。
我想你只需要确保你的随机Hermitian矩阵具有非零特征值。