迭代的“求解器”


9

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

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

我想到的第一个解决方案是找到 Σ1x使用(说)共轭梯度。但是,这似乎有点浪费-您寻找标量,并在此过程中找到一个巨大的向量Rn。提出一种直接计算标量的方法似乎更有意义(即不通过Σ1x)。我正在寻找这种方法。


2
您的矩阵来自 Σ=ATA 对于一些“短而宽”的矩形 A
GeoMatt22 2015年

@ GeoMatt22不幸的是没有。但是,可以这么说-在这种情况下您会提出什么建议?
Yair Daon,2015年

1
Yair,我只是在想是否可以使用一些较小的矩阵……不确定它是否会有所帮助。您是否尝试过搜索“矩阵自由mahalanobis距离”或类似内容?抱歉没有更多帮助!
GeoMatt22

感谢@ GeoMatt22,我无法在线找到任何东西。
Yair Daon,2015年

Answers:


2

我想我没有听说过任何可以真正解决您想要的方法的方法 y=Σ1x

我可以提供的唯一替代方法是,如果您对特征向量和-的值有所了解 Σ。说您知道他们是λi,vi,那么你可以代表 Σ=VTLV 哪里的列 VviL是对角线矩阵,特征值在对角线上。因此,你有Σ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 多次。


但是,剩下的就是寻找 m矩阵的最小特征值,这并非易事……
Yair Daon 2015年

正确。但是,如果您需要评估,可能会值得xTΣ1x很多次。
Wolfgang Bangerth,2015年

那你能建议一种方法吗?
Yair Daon,2015年

周围有很多或稀疏的特征值求解器。ARPACK和基于PETSc的SLEPc可能是使用最广泛的工具。
Wolfgang Bangerth,2015年

Bangreth谢谢您的参考。我检查了SLEPc(尽管不是很彻底),似乎本征对的发现方式是通过Lanczos迭代(可能是经过修改的)进行的。如果一个人寻求最小m本征对,必须找到所有本征对并将其存储在内存中。对于没有矩阵的问题,这通常是不可能的-它占用的内存与存储n×n矩阵。如果希望使用逆迭代-不保证找到的本征对的顺序。我想念什么吗?
Yair Daon,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.