参数矩阵的特征向量的连续性

计算科学 线性代数 矩阵 本征系统 麻木的
2021-11-30 11:28:16

我有维矩阵取决于向量参数nH^(k)k

现在,特征值例程以没有特定顺序返回特征值(它们通常是排序的),但我想将特征值跟踪为的平滑函数。因为特征值不是以任何特定顺序返回的,所以仅针对某个特定索引将返回一组不平滑的线,如下图所示EikEii{1,..,n}

能带结构

我追踪连续线的想法是使用特征向量。即,对于两个接近点特征向量应该近似正交使得其中是一些排列。然后我会使用给定的排列来重新排序特征值,从而跟踪平滑线。kk+dkvi(k)vj(k+dk)δpipjpi,pjπ({1,...,n})π

换句话说,我会追踪特征向量的连续性。

但是,我在数值例程中遇到了一些问题。在我使用的给定点的小子集上,附近点的少数特征向量几乎不是正交的。我的第一个怀疑是那些特征向量对应于一个退化的特征值,但这并不总是正确的。

减小到非常小,这也适用。dk

这样的事情是否允许发生。或者,是否可以保证数值例程返回连续的特征向量?我使用的例程是 numpy.linalg.eigh,它是来自 LAPACK 的 zheevd 的接口。

(你们当中的物理学家会认识到我在谈论能带结构)

2个回答

在两条线合并的点处,您有两个特征值相同,因此对应于这两个特征向量的特征空间是二维的。这意味着在这一点上,两个特征向量不再是唯一的(不仅仅是一个符号),而是可以是跨越这个二维空间的无限多个可能的正交向量中的任何一个。

值上跟踪各个行的延续方法k

我从事电磁学工作,所以我必须计算光子能带结构。我曾经尝试通过检测交叉点来使频段平滑,但经过多次尝试和与同事的讨论,我们最终得出结论,没有真正好的方法或理由这样做。

但是,如果你仍然坚持做你想做的事,你想看看计算关于 k 的特征值导数。有很多关于这方面的文献,主要是关于特征值问题的微扰理论(Kato 的经典著作),以及存在特征值退化的情况下的微扰分析(一个更难的问题,Roger CE Tan 的文献)。我会首先尝试为非退化情况执行此操作,因为这仍然相对容易。