我正在用 Python 编写一个程序,用于numpy.linalg.eigh对埃尔米特矩阵(哈密顿矩阵)进行对角化。我对许多这样的矩阵进行对角化,并使用所得的特征向量矩阵对其他矩阵进行多重酉变换。“特征向量矩阵”是指其列是原始矩阵的特征向量的矩阵。
不幸的是,由于特征向量符号模糊,我遇到了一个潜在的问题(即特征向量仅定义为常数,并且归一化仍然不能修复特征向量的符号)。具体来说,我计算的结果取决于连续酉变换产生的干涉图案。因此,我预计符号歧义将成为一个问题。
我的问题:
强制执行特征向量特定符号约定的最佳方法(或行业标准)是什么?
我想到/遇到以下内容:
我试图找到什么是“标准”约定,但我很难找到任何特别有用的东西,特别是在 Python 中。有一个 SVD 的解决方案(SVD 和 PCA 中的符号校正),但我没有任何数据向量可以比较。有Eigenshuffle(这是用于 Matlab 的,我使用的是 Python),但我的矩阵通常不是彼此连续的小修改(尽管有些是)。
我倾向于解决方案 5,因为它看起来非常直观;我们只是确保所有特征向量位于同一高维“象限”中。此外,假设系统的维数不太大(我的系统的维数为 9),拥有两个或三个具有正系数的随机参考向量应该以非常高的概率覆盖几乎所有特征向量。