当我使用scipy中的线性代数模块计算厄米矩阵的矩阵对数时,它输出的矩阵不是厄米矩阵。我首先使用
定义一个向量:n = np.random.uniform(size = 3) + 1j*np.random.uniform(size = 3)
然后定义相应的厄米特矩阵:
N = np.outer(n,n.conj())
但是,linalg.logm(N)
不返回厄米矩阵。为什么会发生这种情况? 随机矩阵的特征值除一个外均为零。由于矩阵上的函数可以写成矩阵特征值上的函数,我明白了为什么对数在这里有问题,因为log(0)没有定义。也许函数没有发现这个问题,只是返回垃圾。
我猜你只需要确保你的随机厄米矩阵具有非零特征值。