如何识别不增加R中矩阵等级的行/列?

时间:2015-08-10 07:46:27

标签: r matrix linear-algebra

假设我有一个维度 n x n 的对称正半定矩阵AA的等级是 d< n ,我希望找到一组长度为d的索引,以使A[indices, indices]具有等级d。例如,如果

A <- structure(c(3, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), .Dim = c(4L, 4L))

然后我想确定其中一组索引c(1, 2, 3)c(1, 2, 4)

我可以通过蛮力遍历所有行和列的组合来做到这一点,但我的猜测是存在更多优雅和有效的方法来做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以使用QR分解qr

q <- qr(A)
q$pivot[seq(q$rank)]
# [1] 1 2 3

A[,q$pivot[seq(q$rank)]]
#      [,1] [,2] [,3]
# [1,]    3    2    1
# [2,]    2    2    1
# [3,]    1    1    1
# [4,]    1    1    1

这些结果列应该是线性独立的。