我试图找到独立的列来求解线性方程组。这是我的简化示例:
> mat = matrix(c(1,0,0,0,-1,1,0,0,0,-1,1,0,0,0,-1,0,-1,0,0,1,0,0,1,-1), nrow=4, ncol=6, dimnames=list(c("A", "B", "C", "D"), paste("v", 1:6, sep="")))
> mat
v1 v2 v3 v4 v5 v6
A 1 -1 0 0 -1 0
B 0 1 -1 0 0 0
C 0 0 1 -1 0 1
D 0 0 0 0 1 -1
矩阵是满秩的:
qr(mat)$rank
给我 4,因为有 6 列,所以应该有 6-4=2 个独立的列,我可以从中计算其他列。我知道列 v4 和 v6 是独立的......我的第一个问题是,我怎样才能找到这些列(可能使用 qr(mat)$pivot)?
通过重新排列纸上的线性方程,我看到
[v1, v2, v3, v4, v5, v6] = [v4, v4-v6, v4-v6, v4, v4, v6, v6]
因此,我可以通过将 v4 和 v6 与以下向量相乘,从 v4 和 v6 的任意值中找到位于零空间中的向量:
v4 * [1,1,1,1,0,0] + v6 * [0,-1,-1,0,1,1]
我的第二个问题是:如何找到这些向量,这意味着如何求解 v4 和 v6 的矩阵?例如
qr.solve(mat, cbind(c(0,0,0,0), c(0,0,0,0)))
给我两个长度为 6 且只有零的向量。
任何帮助表示赞赏,非常感谢提前!
-H-