计算稀疏矩阵的零空间

3

我发现在R中可以使用函数(null OR nullspace)来查找常规矩阵的零空间,但是我找不到任何用于稀疏矩阵(sparseMatrix)的函数或包。

有人知道如何做吗?

1个回答

3
如果您查看ggm::null代码,您会发现它基于输入矩阵的QR分解。另一方面,Matrix软件包提供了计算稀疏矩阵QR分解的自己的方法。例如:
require(Matrix)
A <- matrix(rep(0:1, 3), 3, 2)
As <- Matrix(A, sparse = TRUE)

qr.Q(qr(A), complete=TRUE)[, 2:3]
qr.Q(qr(As), complete=TRUE)[, 2:3]

嗨,文森特。我使用了你的评论,效果很好。虽然矩阵及其转置已被分解,但在稀疏情况下,当行数小于列数时,它不会分解。 例如:A<-matrix(1:6, nc=2,nr=3) 和 As <- Matrix(A, sparse= TRUE) 和 > qr.Q(qr(A), complete=TRUE) 和 > qr.Q(qr(As), complete=TRUE) 和
qr.Q(qr(t(A)), complete=TRUE) 都可以工作,但是 qr.Q(qr(t(As)), complete=TRUE) 无法工作 Error in .local(x, ...) : A must have #{rows} >= #{columns}. 非常感谢。最好的。
- Mahin
我收到了相同的错误信息。我不知道为什么它在密集矩阵上运行正常,但在稀疏矩阵上失败了... - Vincent Guillemot
非常感谢你的关注。 - Mahin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接