线性代数:将矩阵转换为另一个矩阵

问题描述 投票:0回答:1

如何转换以下矩阵

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)

这是预期的输出。

r math matrix linear-algebra
1个回答
2
投票

注意你实际上有一个像

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)
© www.soinside.com 2019 - 2024. All rights reserved.