QR/SVD ojalgo 中的分解是否需要与列一样多的行?

Do QR/SVD decomposition in ojalgo require as many rows as columns?

在 ojalgo 中对 m x n 矩阵 A 进行 QR 或 SVD 分解时,我遇到了障碍。我的目的是为列 null space 找到一个基础。如果 m >= n,一切正常。例如,秩为 2 的 5 x 4 矩阵 A 的转置 A' 的 QR 分解给出了一个 4 x 4 Q 矩阵,其最后两列跨越 A.space 的空值

另一方面,如果我从秩为 5 的 5 x 7 矩阵 A 开始(并对 A' 进行 QR 分解),我得到正确的秩,但 Q 是 5 x 5 而不是 7 x 7,我没有得到 null space 基础。同样,具有相同矩阵 A 的 SVD 得到五个正奇异值(无零),Q2 矩阵是 5 x 7 而不是 7 x 7(无空向量)。

这是预期的行为吗?我找到了 n > m 矩阵的变通方法(向 A 添加 n-m 行零),但它很笨重。

矩阵可以是任何矩阵 size/shape,但计算经济规模的分解是默认行为。这是大多数用户 need/want。但是有一个接口 MatrixDecomposition.EconomySize 可以让你控制它(可选择地获得全尺寸分解)。目前 QR、SVD 和双对角分解实现了它。