查找大型稀疏矩阵的特征值分布(直方图)

计算科学 线性代数 本征系统 图论
2021-12-15 16:17:23

是否有任何现有程序能够计算非常大(对称)稀疏矩阵的特征值的(近似)分布?

请注意,我不需要特征值本身,只需要它们的分布(找到所有特征值是一个更困难的问题),我主要是在寻找现有的软件,而不仅仅是我需要自己实现的算法的描述。我的矩阵是无向图(或密切相关的矩阵)的邻接矩阵。

我发现一些论文讨论了如何在实践中做到这一点,所以我希望某个地方存在一个可行的实现。

2个回答

在结构力学中,矩阵的特征值数K在给定范围内(α,β)通过“Sturm 序列检查”计算,即计算LDLT因式分解KαIKβI并计算负枢轴数的差异。

如果你有相当大的垃圾箱,可以应用于你的问题,并且应该很容易实现。

(对 Lanczos 移位块算法的搜索应该会提供更多信息,因为这种技术通常在该上下文中用于检查丢失的特征值/特征向量对。)。

这个计数是准确的,而且对于大型K,因此您对“估计”或近似计数的请求仍处于开放状态。请张贴任何发现。

编辑/更新

“A Padé-based factorization-free algorithm for identify the eigenvalues missing by a generalized symmetric eigensolver”的作者声称

据作者所知,没有任何后处理技术不需要分解与K 和/或M当前可用于检查应用于问题 (1) 解决方案的特征求解器是否遗漏了任意感兴趣范围内的某些特征值[σL,σR].

这意味着要获得给定 bin 中特征值的精确计数,您必须使用经典的 Sturm 序列方法(另请参见Sylvester 惯性定律)。

如果不分析邻接矩阵的属性(维度、非零条目上的数字、重新排序后的填充、主要未成年人的条件数......),就无法给出在您的情况下实施此方法的一般建议。

尽管如此,我还是建议从一个简单的、不费脑筋的方法开始,看看你是否遇到了实现的故障(假设这个计算不是关键任务)。我建议使用 Tim Davis 出色的SuiteSparse

  1. 重新排列矩阵以减少填充,(例如从COLAMD调用SYMAMDAα0I)。
  2. 计算LiDiLiT=AαiI, 在哪里αi,i=0m是你的垃圾箱的边界。(首先尝试一个简单的实现,如不使用旋转的LDL,只有在遇到数值困难时才使用旋转方法。)(请注意,如果不旋转,符号分解步骤可以为所有人循环使用i.)
  3. 中的负对角项的计数D给你特征值的数量λ<αi.

这种方法只有在以下情况下才有效m很小或分解时间相对于特征分解时间可以忽略不计:您必须进行一些实验才能找出答案。祝你好运。

我想可以从伪谱函数中推断出这种东西。参见 Marc Embree 的作品,例如: http: //www.caam.rice.edu/~embree/