我看到一些类似的问题:
给出元素:
elems = [1,2,3,4] # dimensions 1x4
如果我有矢量:
M = [4,2,3,1] # dimensions 1x4
我知道有一些可以乘以p
的置换矩阵elems * p = M
,在这种情况下为:
p =
[
0 0 0 1
0 1 0 0
0 0 1 0
1 0 0 0
] # dimensions 4x4
# eg:
# elems * P = M
1x4 4x4 = 1x4
现在,对于我的问题,我对M是非矢量,非方阵的情况感兴趣,例如:
M' = [
4 2 3 1
4 3 2 1
1 2 3 4
] # dimensions 3x4
相同
elems' = [
1 2 3 4
1 2 3 4
1 2 3 4
] # where this is now tripled to be conformant dimensions
# dimensions 3x4
#
# meaning P is still 4x4
在这种情况下,您可以看到M_prime
和elems_prime
仍然只是排列,但现在是多元的,而不是原来的单个向量。
我知道我不能做以下事情,因为矩阵不是正方形的,因此是不可逆的:
elems' * P = M'
P = elems'^-1 * M'
# eg:
# elems' * P = M'
3x4 4x4 = 3x4
当我尝试时,至少在R中,我看到:
> P <- ginv(elems_prime) %*% M_prime
[,1] [,2] [,3] [,4]
[1,] 0.1 0.07777778 0.08888889 0.06666667
[2,] 0.2 0.15555556 0.17777778 0.13333333
[3,] 0.3 0.23333333 0.26666667 0.20000000
[4,] 0.4 0.31111111 0.35555556 0.26666667
这会给我M'吗?
> elems_prime %*% P
[,1] [,2] [,3] [,4]
[1,] 3 2.333333 2.666667 2
[2,] 3 2.333333 2.666667 2
[3,] 3 2.333333 2.666667 2
!= M' # No, does not.
所以这不对。
我的问题是:
> dput(elems_prime)
structure(c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4), .Dim = 3:4)
> dput(M_prime)
structure(c(4, 4, 1, 2, 3, 2, 3, 2, 3, 1, 1, 4), .Dim = 3:4)
答案 0 :(得分:1)
请注意,M'
的列空间比elem'
的列空间高。这意味着从elem'
到M'
不存在线性映射,因为线性映射无法增加矩阵的行或列空间(将其视为基础变换很有用)。
因此,M'
生成的任何elem' * P
的秩最高为1,仅保留常规置换矩阵作为P'
的候选对象
如果我们考虑从M'
回到elem
,这是一个完全不同的问题,这种不对称性也值得注意。
答案 1 :(得分:0)
当M不是向量时,这是不可能的。
这就是原因。通常,如果我们将nxm
矩阵乘以mxp
矩阵,我们将得到nxp
矩阵。这里的elems
是一个向量,是一个1x4
矩阵,因此elems * P
必须是某种1x?
矩阵。通过延长P
,可以延长M
,但是必须更改elems
才能使M
更高。
顺便说一句,在线性代数中,通常将向量翻转为列并将矩阵放在其左侧。这样做的原因是矩阵表示线性函数,并将矩阵放在线性函数所在的相同位置。因此,从功能符号转换为矩阵符号时非常好。另外,如果您仍然必须编写一个方阵,则在页面上花费较少的空间在右侧写一个垂直矢量,而在左侧写一个水平矢量...