【线性代数】矩阵的四个基本子空间

矩阵的四个基本子空间

1、零空间

矩阵A的零空间就Ax=0的解的集合。假设矩阵的秩为r,矩阵为m*n的矩阵,则零空间的维数为n-r。因为秩为r,则自由变量的个数为n-r,有几个自由变量,零空间就可以表示层几个特解的线性组合,也即是零空间的维数为自由变量的个数。

2、列空间

矩阵A的列空间就是矩阵A中各列的线性组合。假设矩阵的秩为r,矩阵为m*n的矩阵,则列空间可以表示为r个主元的线性组合,即零空间的维数为r。

3、行空间

在线性代数中,我们一般习惯将矩阵看出是一组列向量的组合,matlab中矩阵的存储是按列存储的(c中不是)。因此,我们可以将矩阵A进行转置后来讨论行空间和左零空间。假设转置后的矩阵为AT,则A的行空间就是AT的列空间,A的左零空间为AT的零空间。注意这里AT为n*m的矩阵。则此时行空间的维数为r。

4、左零空间

左零空间是ATx=0的解的集合。由于秩为r,则自由变量的个数为m-r,即左零空间的维数为m-r。

上面都是一些定理结果,下面来举例说明上述定理:

假设矩阵为A:

经过高斯消元得到行最简式R:

于是我们知道矩阵A的秩为2,则其列空间,行空间的维数都是2,零空间的维数为4-2=2,左零空间的维数为3-2=1。

很明显,矩阵A的列中,前两列是线性无关的,则其列空间可以由前两列来表示。同理,前两行是线性无关的,其行空间可以有前两行来表示。由于只有两个主元,则自由变量个数为4-2=2,所以零空间的特解有两个,零空间可以由这两个特解的线性组合来表示。由于左零空间可以看成是ATx=0的线性组合,则有:

我们知道初等行变换不改变矩阵的行空间,但可能改变其列空间(因为行变换是行向量的线性组合),并且消元过程可以表示如下:

我们可以看出,初等矩阵E的第三行与A相乘得到的是0向量即:

对比下式:

可以求得x的值:

这个x就是左零空间的基,因此左零空间的维数为3-2=1。

原文:http://blog.csdn.net/tengweitw/article/details/40950001

作者:nineheadedbird

时间: 2024-10-25 02:45:37

【线性代数】矩阵的四个基本子空间的相关文章

线性代数——矩阵乘法(续)

之前提到过,矩阵乘法可以视作对向量基底的改变,而基底的选取可能直接导致向量维度的改变.一个2*3矩阵可以把二维向量映射到三维空间,故矩阵可以被视作操控空间的一种手段. 矩阵改变了向量维度 为弄懂这种变换的具体性质,我们必须从矩阵本身开始分析.依照之前的思路,矩阵的各列是基底向量,矩阵的右乘就是对列向量的线性组合,同理,矩阵左乘可以看作是对矩阵行向量的线性组合,所以矩阵的列构成了列空间,行构成了行空间.经线性变换后,若有T(x)=0 亦即 Ax=0, 则称 x 在A的零空间N(A)中. 我们用秩来

矩阵的四个子空间

对于任意一个矩阵A m×n,那么这个矩阵存在四个子空间: Column space, 记作 C(A). 矩阵A的列空间就是A的任意列向量的线性组合.可以看出矩阵列空间是属于Rm, 用数学的表达方式就是 C(A) = { v | v = Ax, where x is any vector of Rn } Null space of A,记作Ν(A),任意和矩阵相乘为0的向量(那些右乘A为0的向量就组成矩阵A的零空间向量,Ax=0的x),可以看出矩阵的零空间是属于Rn , 用数学的表达方式就是 N(

[线性代数] 矩阵白化

[线性代数] 矩阵白化 2013-11-25 22:17:22 kuang_liu 阅读数 3735 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kuang_liu/article/details/16951461 给一个任意矩阵 X,一般情况下它的协方差矩阵并不是对角矩阵.矩阵白化就是用一个白化矩阵 A,使 Y = A * X 的协方差矩阵转化为对角矩阵. 这里首先指出 Y = A

麻省理工公开课:线性代数 第10课 四个基本子空间

参考资料: 网易公开课:http://open.163.com/special/opencourse/daishu.html 麻省理工公开课:线性代数 教材:Introduction to Linear Algebra, 4th edition  by Gilbert Strang 链接:https://pan.baidu.com/s/1bvC85jbtOVdVdw8gYMpPZg 提取码:s9bl 假设:$m\times n$矩阵$A$ 一.矩阵$A$的列空间:$C(A)$ (1)是$R^m$

线性代数-矩阵-乘法 C和C++实现

矩阵的知识点之多足以写成一本线性代数. 所以我们把矩阵封装成类.以C++为主进行详解. C++语言 分段详解: 基本成员: 矩阵类的成员变量我们使用三个: 矩阵的行数 矩阵的列数 用二维数组(向量)存放矩阵中的所有元素 int m_iRows; int m_iColumns; vector<vector<T>> m_vecMatrix; 矩阵中的基本成员函数包括 加入一行 加入一列 bool addOneRowToBack(vector<T> &vec); //

线性代数——矩阵与矩阵乘法

在刚接触线性代数时,最先学到的是行列式,随之而来的就是矩阵.矩阵的出现过于突兀,当初学习时完全不清楚它的概念,更不要说还有矩阵乘法等各种奇怪的算术操作.于是从网上学习了各种矩阵概念,受益良多,在此总结一下学到的概念. 一.矩阵 矩阵最早来自于方程组的系数及常数所构成的方阵.——百度百科 如此看来,矩阵和行列式还是有联系的,矩阵最初可能就是用来表示行列式用的 方程组 改写成矩阵的形式 然而矩阵的作用不仅限于此,它有着线性变换的作用,我们将通过分析矩阵乘法来详加解释 二.矩阵乘法 提起矩阵乘法,我们

线性代数-矩阵-加减 C和C++实现

原理解析: (此处补图) 本节编写矩阵的加法和减法,两个矩阵相加,即把两个相同大小的矩阵对应的元素分别相加 .两个矩阵相减,把两个相同大小矩阵的对应元素分别相减. C++语言: 矩阵加法: 首先需要判断矩阵是否行列数相等,在计算中,由于存放矩阵m_vecMatrix我们使用的是二维vector,所以我们需要: 判断合法性 把两个矩阵的第i行元素提取出来 把两个矩阵中此行的第j个元素提取并相加,推入一个临时向量tempVec中, 通过addOneRowToBack()函数将tempVec加入目标向

线性代数-矩阵-【5】矩阵化简 C和C++实现

点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Liang/p/7287369.html [2]矩阵生成:http://www.cnblogs.com/HongYi-Liang/p/7275278.html [3]矩阵加减:http://www.cnblogs.com/HongYi-Liang/p/7287403.html [4]矩阵点乘:http://www.cnblogs.com/HongYi-Liang/p/7287324.html [5]矩

线性代数-矩阵-点乘 C和C++的实现

原理解析: 矩阵乘法分为点乘和叉乘,本小结介绍点乘.我们知道A点乘B,是利用 A的每一行 乘以 B每一列得到新的一组值. (此处补动图) C++语言: 我们首先要有把一行或一列提取出来的成员函数:(请展开查看) bool getSpecifiedRow(int index,vector<T> *vec); //获取第index行元素 bool getSpecifiedColumn(int index,vector<T> *vec);//获取第index列元素 获取行: 获取列: 接