迭代“求解器”X吨Σ− 1XxtΣ−1x

计算科学 线性代数 数值分析 迭代法
2021-12-19 08:44:12

我无法想象我是第一个考虑以下问题的人,所以我会对参考感到满意(但始终感谢完整、详细的答案):

假设你有一个对称的正定ΣRn×n.n被认为非常大,所以持有Σ在记忆中是不可能的。但是,您可以评估Σx, 对于任何xRn. 鉴于一些xRn, 你想找到xtΣ1x.

想到的第一个解决方案是找到Σ1x使用(比如说)共轭梯度。然而,这似乎有点浪费——你寻找一个标量,在这个过程中你发现一个巨大的向量Rn. 想出一种直接计算标量的方法似乎更有意义(即不经过Σ1x)。我正在寻找这种方法。

1个回答

我认为我没有听说过任何方法可以在没有实际解决的情况下执行您想要的操作y=Σ1x.

我能提供的唯一选择是,如果你知道一些关于特征向量和 -valuesΣ. 说你知道他们是λi,vi,那么你可以表示Σ=VTLV其中的列Vvi, 和L是一个特征值在对角线上的对角矩阵。因此,你有Σ1=VTL1V你明白了

xTΣ1x=xTVTL1Vx=iλi1(viTx)2.
这当然需要您存储所有特征值,即完整矩阵V. 但是,如果你碰巧知道只有少数的特征值Σ小,说第一个m, 其余的是如此之大,以至于您可以忽略所有项λi1为了i>m,那么你可以近似
xTΣ1x=i=1nλi1(viTx)2i=1mλi1(viTx)2.
那么这只需要你存储m向量,而不是全部n特征向量。

当然,在实践中,与简单求解相比,计算特征值和特征向量通常同样困难或更困难y=Σ1x多次。