区间特征值问题:求解Ax = λBx 在区间[λmin, λmax]的特征值。
1. 谱切片(Spectrum Slicing)方法
一个常用的方法就是进行格林函数的分解,格林函数定义为G(σ)=(σB - A)^-1,其中σ靠近搜索区间的特征值。其实就是应用谱变换技术,在区间类进行扫描。
其实下面提到的CISS和FEAST算法,也算谱切片方法,即“将谱中感兴趣的部分切出来”。
2. CISS(Contour Integral Spectrum Slicing)方法
这个是Sakurai等人提出的方法,已经在Slepc实现了。
该方法是将(A-λB) 投影到一个子空间中,这个子空间是由围道积分计算出来的,该子空间等价于由围道内特征值对应的特征向量所张成的空间。
需要注意的是,在复平面,围道是一个区域,在实数范围内,围道就是一个区间
这个方法是基于Raylegh Ritz算法,因此也叫CIRR(Contour Integral Raylegh Ritz)。
计算的特征对作为原问题特征对的近似值。Q的计算需要使用到围道积分。
下面假设围道为一个圆,圆心在γ,半径为ρ。
定义如下的围道积分:
采用N点梯形积分公式来计算:
m是围道内特征值数量,但是子空间的维数M通常要选择大于m,以减小计算误差。
示意图,求解虚线围道内的特征值
3. FEAST算法
FEAST算法是Polizzi从量子力学中的密度矩阵受到启发,在CISS基础上改进的算法。
密度函数ρ定义为格林函数G在围道上的积分。
下面算法中,N是G的维度,M是围道内的特征值。G(z)Y 的计算,需要用到线性方程组求解。
4. 为什么叫G(z)=(zB - A)^-1为Green函数?
在经典物理中,Green函数主要被当做一种求解线性微分方程数学物理方法来使用。在量子物理中,其定义稍显“不同”:
当然其本质还是求解线性微分方程,关于它们之间的联系,详见博客文章:量子物理中Green函数与其广义定义的联系。参考:量子物理中的Green函数定义及其应用 | Mo's Notebook | 摸着羊的笔记本
参考资料:
CIRR: a Rayleigh-Ritz type method with contour integral for generalized eigenvalue problems, Sakurai, 2007
Density-matrix-based algorithm for solving eigenvalue problems, Polizzi, 2009