Answers:
确定矩阵零空间的标准方法是使用QR分解或SVD。如果精度至关重要,则首选SVD;否则,建议使用SVD。QR分解速度更快。
使用QR分解,如果,并且的秩为,则假设QR分解是秩揭示的,则Q的最后n - r列构成A的零空间。要确定r,请计算R的主对角线上条目的数量,该条目的大小超过公差(类似于SVD方法中使用的数量)。A r
不要使用LU分解。在精确算术中,这是一种可行的方法,但是对于浮点算术,数字误差的累加使其不准确。
维基百科在这里涵盖了这些主题。
如果,你的问题表明,你可以先选择一个索引节省一些工作组我的p ≈ 5 ñ(说)随机行和使用正交分解一个牛逼我: = Q [R。(该QR-因式分解是一个其中是sqare和- [R是矩形的秩的[R ,其余Ñ - - [R的列- [R是零使用置换后的QR分解将增强稳定性;然后置换必须考虑在。更详细的食谱。)
通常,这将为您提供一个由列(Q的最后n - r列)跨越的低维度子空间。该子空间包含A的空空间。现在选择另一个,不相交的随机索引集合,并计算的QR分解(甲我: Ñ )Ť。将左侧得到的空空间乘以N,以获得改进的N,其尺寸甚至可能更低。迭代直到N的大小不再减小。那么您可能拥有正确的空空间,并且可以通过计算A N。如果这仍然可以忽略不计,请对最重要的行进行进一步的迭代。
编辑:一旦有了,就可以通过旋转的N T = Q R的正交分解来找到A的线性独立列的最大集合J。实际上,未选择为枢轴的索引集J将具有此属性。