矩形稠密矩阵的零空间


16

给定的致密基质

ARm×n,m>>n;max(m)100000
什么是找到一定误差内的零空间基础的最佳方式ϵ

基于这个基础上我可以说以一定的cols是线性相关的内ϵ?换句话说,以零空间为基础计算,为了获得非奇异矩阵,必须删除哪些列A

参考被赞赏。

Answers:


12

确定矩阵零空间的标准方法是使用QR分解或SVD。如果精度至关重要,则首选SVD;否则,建议使用SVD。QR分解速度更快。

A=UΣVHVΣεmax(m,n)εε

使用QR分解,如果,并且的秩为,则假设QR分解是秩揭示的,则Q的最后n - r列构成A的零空间。要确定r,请计算R的主对角线上条目的数量,该条目的大小超过公差(类似于SVD方法中使用的数量)。A rAT=QRArnrQArR

不要使用LU分解。在精确算术中,这是一种可行的方法,但是对于浮点算术,数字误差的累加使其不准确。

维基百科在这里涵盖了这些主题。


Geoff,就QR而言,假设我已经分解了,那么我该如何关联空空间基础和原始矩阵中的列呢?换句话说,为了摆脱空空间,我应该从中删除哪些列?这里的重点是使用A本身而不是分解。AA
亚历山大

计算QR分解的例程通常包括一个返回排列向量的选项,该向量指示如何对列进行排列以获得QR分解。最后该置换矢量的条目将对应于各行(列Ť是在零空间)。第一RnrAATr向量个条目对应于的线性独立列。我不确定“摆脱空空间”是什么意思。您是否要删除A的列以获得非奇异矩阵?ATA
Geoff Oxberry 2012年

是的,我是说。我会看一下排列,谢谢。
亚历山大

那是一个不同的问题。那么,什么你会做的却是计算的QR分解(SVD或)。如果您计算A的QR分解,则可以按照上述答案计算A的秩(无需转置矩阵),然后排列向量的前r个条目(其中rA的秩)对应到A的独立列。相同的算法适用于SVD。如果您可以随分解返回排列向量,则应该提供必要的信息。AAArrAA
Geoff Oxberry 2012年

8

如果,你的问题表明,你可以先选择一个索引节省一些工作组p 5 ñ(说)随机行和使用正交分解一个牛逼 = Q [RmnIp5nAI:T=QR。(该QR-因式分解是一个其中是sqare和- [R是矩形的秩的[R ,其余Ñ - - [R的列- [R是零使用置换后的QR分解将增强稳定性;然后置换必须考虑在。更详细的食谱。)QRrnrR

通常,这将为您提供一个由列(Q的最后n - r列)跨越的低维度子空间。该子空间包含A的空空间。现在选择另一个,不相交的随机索引集合,并计算的QR分解 Ñ Ť。将左侧得到的空空间乘以N,以获得改进的N,其尺寸甚至可能更低。迭代直到N的大小不再减小。那么您可能拥有正确的空空间,并且可以通过计算A NNnrQA(AI:N)TNNNAN。如果这仍然可以忽略不计,请对最重要的行进行进一步的迭代。

编辑:一旦有了,就可以通过旋转的N T = Q R的正交分解来找到A的线性独立列的最大集合J。实际上,未选择为枢轴的索引集J将具有此属性。NJANT=QRJ


+1是确定大型矩阵的零空间的有效方法。我将不得不记住稍后在需要时咨询此答案。
Geoff Oxberry 2012年

确实,这听起来很合理,但是我的矩阵适合16 GB的RAM,因此我会选择使用标准的matlab qr。
2012年

Neumaier教授,我决定测试该算法,但我不完全了解是什么,“计算A I N T的QR因式分解”是什么意思?您能否再解释一下。N(AI:N)T
2012年

我稍微修改了答案。由Geoff Oxberry的配方计算得出。N
阿诺德·诺伊迈耶

谢谢。我实现了。然而,据我看到的,这个算法不允许我定义一组线性无关列的(因为我们分解一个牛逼而不是一个),但只是帮助估算零空间基础本身?AAI:TAI:
2012年
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.