【发布时间】:2016-04-04 15:21:05
【问题描述】:
一位同事向我提出了这个问题,我希望得到答案。对 R 很陌生,而且我的第一个线性代数课程才刚刚完成,数小时的搜索并没有得到答案。在这里的任何帮助将不胜感激!
我知道这个问题相当模糊且不详细,但这正是向我提出的问题。如果被问到,我会尝试添加任何细节。
这也是我在这里的第一个问题,所以如果我没有正确提出问题,我深表歉意。欢迎批评我,我是来学习的。
【问题讨论】:
标签: r linear-algebra
一位同事向我提出了这个问题,我希望得到答案。对 R 很陌生,而且我的第一个线性代数课程才刚刚完成,数小时的搜索并没有得到答案。在这里的任何帮助将不胜感激!
我知道这个问题相当模糊且不详细,但这正是向我提出的问题。如果被问到,我会尝试添加任何细节。
这也是我在这里的第一个问题,所以如果我没有正确提出问题,我深表歉意。欢迎批评我,我是来学习的。
【问题讨论】:
标签: r linear-algebra
您可以使用 rref(A) 函数从 pracma 包中定义行和空空间。行空间将是具有前导 1 的列,空/列空间将是列数减去行空间。所以代码 rref(as.matrix(A)) 然后写一点来找到你的简化矩阵中的枢轴列并计算你的列。剩下的就是简单的算术。
【讨论】:
记住矩阵的four subspaces:
在 R4 中创建一个包含 3 个向量的矩阵,只有两个线性无关:
> v1 <- c(3,5,11,-1)
> v2 <- c(45,-2,5,23)
> v3 <- v1 -2*v2
>
> (M <- cbind(v1,v2,v3))
v1 v2 v3
[1,] 3 45 -87
[2,] 5 -2 9
[3,] 11 5 1
[4,] -1 23 -47
确定排名:
> # RANK:
> nrow(rref(M)[apply(rref(M)[,-1], 1, function(x) !all(x==0)),])
[1] 2
为 COLUMN SPACE 生成一个基础,它存在于 R4 中,是所有 Mx=b 的结果 (b):
> (Col_sp <- t(rref(t(M))[apply(rref(t(M)), 1, function(x) !all(x==0)),]))
v1 v2
[1,] 1.0000000 0.0000000
[2,] 0.0000000 1.0000000
[3,] 0.2034632 2.0779221
[4,] 0.4891775 -0.4935065
为 R4 中的列空间(即 LEFT NULL SPACE 或转置的空空间)或 tr(M)x = 0 中的 x 生成正交子空间的基础:
library(MASS)
> (Left_Null <- Null(M))
[,1] [,2]
[1,] -0.2369092 -0.399278229
[2,] -0.8051370 0.413649975
[3,] 0.4573183 -0.004747012
[4,] 0.2940891 0.818198057
这两个向量是否满足条件tr(M)x = 0?
> round(t(M)%*%Left_Null,10)
[,1] [,2]
v1 0 0
v2 0 0
v3 0 0
检查!
这两个子空间真的正交吗?
> round(t(Col_sp) %*% Left_Null, 10)
[,1] [,2]
v1 0 0
v2 0 0
检查!
为存在于 R3 中的 ROW SPACE 或Mx = b 的解决方案 (x) 生成基础:
> (Row_sp <- rref(M)[apply(rref(M), 1, function(x) !all(x==0)),])
v1 v2 v3
[1,] 1 0 1
[2,] 0 1 -2
为RIGHT NULL SPACE(列空间的零空间)或Mx=0生活在R3中的解决方案生成基础:
> (Right_Null <- Null(t(M)))
[,1]
[1,] -0.4082483
[2,] 0.8164966
[3,] 0.4082483
Mx=0 实现了吗?
> round(M %*% Right_Null, 10)
[,1]
[1,] 0
[2,] 0
[3,] 0
[4,] 0
检查!
最后两个子空间是正交的吗?
> round(Row_sp %*% Right_Null,10)
[,1]
[1,] 0
[2,] 0
检查!
【讨论】: