假设我有一个对称线性算子其中是“小”(例如),我想找到它的前几个特征向量, (例如,特征向量)。
如果我们有的矩阵表示,这将是稠密数值线性代数中的标准问题。然而,问题是我们没有的条目,只有一个可以评估在向量上的动作的代码。此外,评估的成本适中 - 它涉及在幕后求解 PDE。
在这种情况下的前几个特征向量的最佳方法是什么?我的第一个想法是 Lanczos 算法,但这通常适用于大型稀疏系统,而我的系统又小又密集。
假设我有一个对称线性算子其中是“小”(例如),我想找到它的前几个特征向量, (例如,特征向量)。
如果我们有的矩阵表示,这将是稠密数值线性代数中的标准问题。然而,问题是我们没有的条目,只有一个可以评估在向量上的动作的代码。此外,评估的成本适中 - 它涉及在幕后求解 PDE。
在这种情况下的前几个特征向量的最佳方法是什么?我的第一个想法是 Lanczos 算法,但这通常适用于大型稀疏系统,而我的系统又小又密集。
矩阵是否也是正的,使得特征值等于奇异值?您可以估计矩阵乘法中至少有些孤立。正如Halko、Martinsson 和 Tropp (2012)的出色调查中所述,该算法是:
前个奇异值和奇异向量通常提供几位数的精度。该算法通常比 Lanczos 或 Arnoldi 迭代更准确,并且同步点更少。对于大型问题,优势更为显着,并且如果一次将运算符应用于多个向量比一次将其应用于一个向量要便宜得多。如果您只需要几个值,这可能是一个不错的选择。
要以合理的准确度找到一般 100 x 100 矩阵的 10 个主要特征向量,您几乎没有比使用 100 个矩阵向量相乘然后找到其特征值来构建矩阵更好的方法。
一个例外是当您确信等级远小于时。在这种情况下,完全重新正交化的 Lanczsos 是可行的方法。