有没有办法找到R中矩阵的行和列空间的基?

有没有办法找到R中矩阵的行和列空间的基?,r,linear-algebra,R,Linear Algebra,一位同事向我提出了这个问题,希望我能给出答案。对于R来说,我是个新手,而且我的第一门线性代数课程只上了一半,几个小时的搜索并没有给出答案。这里的任何帮助都将不胜感激 我知道这个问题相当模糊,也不详细,但这正是它向我提出的方式。如果有人问我,我会尽量补充任何细节 这也是我在这里的第一个问题,所以如果我没有正确地提出问题,我很抱歉。请随意评论我,我是来学习的。您可以使用rref(A)函数定义pracma包中的行和空空间。行空间将是前导为1的列,null/col空间将是列数减去行空间。因此,编写rre

一位同事向我提出了这个问题,希望我能给出答案。对于R来说,我是个新手,而且我的第一门线性代数课程只上了一半,几个小时的搜索并没有给出答案。这里的任何帮助都将不胜感激

我知道这个问题相当模糊,也不详细,但这正是它向我提出的方式。如果有人问我,我会尽量补充任何细节

这也是我在这里的第一个问题,所以如果我没有正确地提出问题,我很抱歉。请随意评论我,我是来学习的。

您可以使用rref(A)函数定义pracma包中的行和空空间。行空间将是前导为1的列,null/col空间将是列数减去行空间。因此,编写rref(as.matrix(A))代码,然后编写一些代码,在简化的矩阵中查找轴心列并计算列数。剩下的是简单的算术

记住矩阵的重要性:

创建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
为位于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
> (Row_sp <- rref(M)[apply(rref(M), 1, function(x) !all(x==0)),])
     v1 v2 v3
[1,]  1  0  1
[2,]  0  1 -2
这两个向量满足条件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
> round(Row_sp %*% Right_Null,10)
     [,1]
[1,]    0
[2,]    0
检查

为生活在R3或解决方案(x)中的行空间生成基础,以
Mx=b

> (Row_sp <- rref(M)[apply(rref(M), 1, function(x) !all(x==0)),])
     v1 v2 v3
[1,]  1  0  1
[2,]  0  1 -2
Mx=0是否满足要求

> round(M %*% Right_Null, 10)
     [,1]
[1,]    0
[2,]    0
[3,]    0
[4,]    0
检查

最后两个子空间是正交的吗

> round(t(Col_sp) %*% Left_Null, 10)
   [,1] [,2]
v1    0    0
v2    0    0
> round(Row_sp %*% Right_Null,10)
     [,1]
[1,]    0
[2,]    0

检查

函数的作用很大。现在我有了我的rref矩阵,我很难将列空间与矩阵的其余部分分开。我知道前导为1的列是列空间的一部分,其他列是null空间的一部分。因此,如果在5列矩阵中,列1、2和4具有前导1,则这是列空间的基础。我现在的问题是如何用R代码确定并显示它。你可以求列的向量和。类似于:AI刚刚检查过,空{MASS}将在手动滚动解决方案之外工作。从空值中可以找到其他属性。