在 ojalgo 中对 m x n 矩阵 A 进行 QR 或 SVD 分解时,我遇到了障碍。我的目的是找到列零空间的基础。如果 m >= n,则一切正常。例如,对秩为 2 的 5 x 4 矩阵 A 的转置 A' 进行 QR 分解,得到一个 4 x 4 Q 矩阵,其最后两列跨越 A 的零空间。
另一方面,如果我从秩为 5 的 5 x 7 矩阵 A 开始(并对 A' 进行 QR 分解),我会得到正确的秩,但 Q 是 5 x 5 而不是 7 x 7,并且我没有得到零空间基础。类似地,具有相同矩阵 A 的 SVD 得到五个正奇异值(无零),并且 Q2 矩阵是 5 x 7 而不是 7 x 7(无空 vector )。这是预期的行为吗?我找到了 n > m 矩阵的解决方法(向 A 添加 n-m 行零),但它很笨重。
最佳答案
矩阵可以是任何大小/形状,但计算经济大小的分解是默认行为。这是大多数用户需要/想要的。但是有一个接口(interface)MatrixDecomposition.EconomySize
可以让您控制它(可以选择获得完整的尺寸分解)。目前有QR、SVD和双对角分解来实现。
关于java - ojalgo 中的 QR/SVD 分解是否需要与列一样多的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847140/