这是一些希望清楚地说明我在做什么的代码:
>>> sp.linalg.eig(d)[0].real; sp.linalg.eigh(d)[0]; d; sp.linalg.eig(d)[1]; sp.linalg.eigh(d)[1]
array([ 1., -1.])
array([-1., 1.])
matrix([[ 0, -1],
[-1, 0]])
array([[ 0.70710678, 0.70710678],
[-0.70710678, 0.70710678]])
array([[-0.70710678, -0.70710678],
[-0.70710678, 0.70710678]])
为了稍微解释一下代码,前两个分别是和array()的特征值,后者仅适用于 Hermitian 矩阵。然后我显示矩阵,然后特征向量显示为以下两个矩阵的列,与特征值的顺序相同。eig()eigh()d
在这里,我正在做的是采用一个矩阵d,在这种情况下很简单,泡利 x-spin 矩阵。我正在做绝热量子模拟,所以我在这里得到了一个 1 量子位案例的横向磁场的基态。更高的量子比特情况具有对应于最低能量的初始状态向量:
所以我现在正在做的是使用通用 LAPACK eigensolver zgeev 和eig()调用 zheevd eigh(),分别是通用和 Hermitian 求解器。
为什么我从 得到基态特征向量作为一件事eig(),但eigh()我得到同样的事情但总体为负?这有关系吗?
值得注意的是,如果我说这个问题不会出现具有正值而不是负值。这一点真的让我很困惑。