如何转换以下矩阵
matrix(c(5,3,1,0,3,1,0,0,1),ncol=3,byrow = T)
[,1] [,2] [,3]
[1,] 5 3 1
[2,] 0 3 1
[3,] 0 0 1
进入
matrix(c(5,-4,3,-2,0,1),ncol=2,byrow = T)
[,1] [,2]
[1,] 5 -4
[2,] 3 -2
[3,] 0 1
背景:
我正在尝试获得以下方程组的近似值(同时是保守的):
5x+3y+z
3y+z
z
同时给予
x+y+z = a value
z= a value
我能想到的最好的是:
5x+3y+z \approx 5x+5y+z = 5*(x+y+z)-4*(z)
3y+z \approx 3x+3y+z = 3*(x+y+z)-2*(z)
z = 1*(z)
这是预期的输出。
注意你实际上有一个像
x' --> x+y+z
和z' --> z
这样的新映射,所以你最好建立一个传输矩阵u
像
> u
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 0 0 1
这样
[x'; z'] = u %*% [x; y; z]
.
然后你可以使用
MASS::ginv(u)
完成转换链
> mat %*% MASS::ginv(u)
[,1] [,2]
[1,] 4.000000e+00 -3.0
[2,] 1.500000e+00 -0.5
[3,] -2.220446e-16 1.0
因为
mat %*% [x;y;z] --> mat %*% ginv(u) %*% [x'; y']
mat <- matrix(c(5, 3, 1, 0, 3, 1, 0, 0, 1), ncol = 3, byrow = T)
u <- matrix(c(1, 1, 1, 0, 0, 1), 2, byrow = TRUE)