使用 LAPACK 对角化

计算科学 计算物理学 线性代数 软件
2021-11-28 01:58:25

比如说,我们有一个哈密顿量,为了简单起见,它没有混合粒子孔扇区。如图所示,它只是真实空间中的一个简单哈密顿量,

H=ij,σA(i,j)(ciσcjσ+h.c.)

在特定的自旋扇区中(因为自旋扇区是解耦的),我们使用转换ciσ=nαnσ(i)dnσ将哈密顿量对角化为Hd=n,σEnσdnσdnσ.

如果我们使用 LAPACK 子程序 (dsyev) 对哈密顿量进行对角化,我们将得到一个由特征向量和相应特征值组成的矩阵。LAPACK 按其值的升序组织特征值和相应的向量。现在有什么方法可以标记特征值。让我具体一点。因此,在平均场计算中,您可以自洽地求解方程,您必须参考特征值Enσ在自洽方程中(你通过分析发现)。现在在每次迭代中,LAPACK 混合了特征值的顺序,因此我们不能将它在每次迭代中返回的第一个特征值称为E1.

有出路吗?

2个回答

在 Kubo 形式主义中计算与 Berry 曲率相关的量时,我遇到了同样的问题。我认为解决您的问题的最佳方法是通过特征向量确定波段索引。您可以将特征值固定为特征向量的对称属性,因为这些值随 r 平滑变化(甚至是恒定的)。如果您要在两个状态之间跳转,您会发现特征向量的属性出现不平滑的变化。

如果我把这个问题正确地翻译成我的语言,你就有一个 Hermitian 参数依赖矩阵A(t); 您将附近的各种采样对角化A(t1),A(t2),A(t3),(以便矩阵在一个和下一个之间仅略有变化),并且您希望一致地对特征值和特征向量进行排序,以便它们在附近的采样之间“平滑”变化。

如果那是您的问题,在我看来,这看起来很重要,不应该关闭。

观察:

  1. 如果您只是假设连续性,问题可能无法解决:如果您的矩阵如下,会发生什么,其中BC是具有两组不同特征值的两个不同矩阵吗?

    A(t)={I+tB,t0I+tC,t<0

  2. 这个问题在实践中可能不会经常出现:有一种称为特征值规避的现象,它说在几乎所有情况下(在这个词的测度理论意义上)平滑 Hermitian 单参数函数的特征值A(t)永不交叉。我的物理学知识非常初级,但据我了解,这具有物理意义,并且可能对您的应用有意义。

  3. 也就是说,在许多情况下可以完成这项工作的快速技巧如下:假设您已经计算了A(t1)=Q1D1Q1,A(t2)=Q2D2Q2. 那么,如果这些特征向量真的平滑变化,Q1Q2大约是一个置换矩阵。排列其列,使其近似为一个标识,这为您提供了一致的顺序。