假设我有以下增广矩阵
100 100 0 100
325 0 500 500
用方程式表示:
c1(100) + c2(100) + c3(0) = 100
c1(325) + c2(0) + c3(500) = 500
我无法更改最后一列。如何找到所有可能的线性组合?显而易见的解决方案是c2=1和c3=1。但我如何以系统的方式获得它呢?
我试着在pracma软件包中使用rref,但我得到了
1 0 1.538462 1.5384615
0 1 -1.538462 -0.5384615
我真的不能有任何分数值。
有什么建议吗?
这是一个欠定线性方程组。借助于A
的Moore-Penrose逆,可以得到它的所有解。设CCD_ 2为CCD_ 3的Moore-Penrose逆。然后由Ainv %*% b + (I - Ainv %*% A) %*% w
给出了A %*% x = b
的所有解,其中I
是单位矩阵,w
是任意向量。
A <- rbind(c(100,100,0), c(325,0,500))
b <- c(100,500)
Ainv <- MASS::ginv(A)
w <- c(1,2,3) # arbitrary
one_solution <- Ainv %*% b + (diag(3L) - Ainv %*% A) %*% w
A %*% one_solution
# [,1]
# [1,] 100
# [2,] 500