矩阵论 - 10 - 四个基本子空间

作者:神秘网友 发布时间:2021-10-13 07:24:09

矩阵论 - 10 - 四个基本子空间

For some vectors b the equation Ax = b has solutions and for others it does not. Some vectors x are solutions to the equation Ax = 0 and some are not. To understand these equations we study the column space, nullspace, row space and left nullspace of the matrix A.

四个基本子空间

四个子空间 Four subspaces

对于任意的 \(m \times n\) 矩阵 \(A\),若 \(rank(A)=r\) ,则有:

  • 行空间 \(C(A^T)\)

    • \(A\) 的行向量的线性组合在 \(\mathbb{R}^n\) 空间中构成的子空间,也就是矩阵 \(A^T\) 的列空间。

    • \(C(A^T) \in \mathbb{R}^n, dim C(A^T)=r\):

      行空间的基:将矩阵 \(A\) 化为行阶梯矩阵:\( A= \begin{bmatrix} 1 2 3 1 \\ 1 1 2 1 \\ 1 2 3 1 \\ \end{bmatrix} \underrightarrow{消元、化简} \begin{bmatrix} 1 0 1 1 \\ 0 1 1 0 \\ 0 0 0 0 \\ \end{bmatrix} =R \)

      行变换影响了 \(A\) 的列空间,所以 \(C(R) \neq C(A)\),但行变换并不影响行空间,所以可以在矩阵 \(R\) 中看出前两行就是行空间的一组基。

      无论对于矩阵\(A\)还是\(R\),其行空间的一组基,可以由行阶梯矩阵 \(R\) 的前 \(r\) 行向量组成。

  • 零空间 \(N(A)\)

    • \(Ax=0\) 的所有解 \(x\) 在 \(\mathbb{R}^n\) 空间中构成的子空间。
    • \(N(A) \in \mathbb{R}^n, dim N(A)=n-r\),自由元所在的列即可组成零空间的一组基。
  • 列空间 \(C(A)\)

    • \(A\) 的列向量的线性组合在 \(\mathbb{R}^m\) 空间中构成的子空间。
    • \(C(A) \in \mathbb{R}^m, dim C(A)=r\),主元所在的列即可组成列空间的一组基。
  • 左零空间 \(N(A^T)\)

    • 矩阵 \(A^T\) 的零空间为矩阵 \(A\) 的左零空间,是 \(\mathbb{R}^m\) 空间中的子空间。

    • 为什么叫零空间:\(A^Ty=0 \rightarrow (A^Ty)^T=0^T\rightarrow y^TA=0^T\)

    • \(N(A^T) \in \mathbb{R}^m, dim N(A^T)=m-r\):

      左零空间的基:

      应用增广矩阵 \(\left[\begin{array}{c|c}A_{m \times n} I_{m \times n}\end{array}\right] \rightarrow \left[\begin{array}{c|c}R_{m \times n} E_{m \times n}\end{array}\right]\)

      将 \(A\) 通过消元得到矩阵 \(R\) ,其消元矩阵记为 \(E\) 。

      则有 \(EA=R\) (若 \(A\) 为可逆方阵,则有 \(E=A^{-1}\))

      例子:

      \[\left[\begin{array}{c|c}A_{m \times n} I_{m \times m}\end{array}\right]=\left[\begin{array}{c c c c|c c c}1 2 3 1 1 0 0 \\1 1 2 1 0 1 0 \\1 2 3 1 0 0 1 \\\end{array}\right]\underrightarrow{消元、化简}\left[\begin{array}{c c c c|c c c}1 0 1 1 -1 2 0 \\0 1 1 0 1 -1 0 \\0 0 0 0 -1 0 1 \\\end{array}\right]=\left[\begin{array}{c|c}R_{m \times n} E_{m \times m}\end{array}\right] \]

      \[EA= \begin{bmatrix} -1 2 0 \\ 1 -1 0 \\ -1 0 1 \\ \end{bmatrix} \cdot \begin{bmatrix} 1 2 3 1 \\ 1 1 2 1 \\ 1 2 3 1 \\ \end{bmatrix} = \begin{bmatrix} 1 0 1 1 \\ 0 1 1 0 \\ 0 0 0 0 \\ \end{bmatrix} =R \]

      很明显,式中 \(E\) 的最后一行对 \(A\) 的行做线性组合后,得到 \(R\) 的最后一行,即 \(0\) 向量,也就是 \(y^TA=0^T\)。

总结

四个子空间维度以及其之间关系可以参考Gilbert Strang的图:

  1. 行空间求法:将矩阵 \(A\) 化为行阶梯矩阵,前 r 行向量。
  2. 零空间求法:将矩阵 \(A\) 化为行阶梯矩阵,得出自由列个数,自由列一个个赋1,其他皆0,求解方程,得出自由列个数个特解,特解的线性组合就是 \(A\) 的零空间。
  3. 列空间求法:主元所在的列即可组成列空间的一组基。
  4. 左零空间求法:应用增广矩阵 \(\left[\begin{array}{c|c}A_{m \times n} I_{m \times n}\end{array}\right] \rightarrow \left[\begin{array}{c|c}R_{m \times n} E_{m \times n}\end{array}\right]\) ,套用 \(EA=R\) ,使得 \(R\) 的某行为 \(0\) 的\(E\) 对应行向量。

reference

[1] textbook

[2] mit18.06学习笔记-0

[3] mit18.06学习笔记-1


本文章教程介绍完毕,更多请访问跳墙网其他文章教程!

矩阵论 - 10 - 四个基本子空间 相关文章

  1. 【专题】最大子数组和 / 子矩阵和

    【专题】最大子数组和 / 子矩阵和 目录 最大子序和(最大子数组和) 最大子序和 (返回子数组位置) 最大子矩阵 最大子矩阵(返回矩阵坐标) 环状矩阵的最大子矩阵和 最大子序和(最大子数组和) 给定一个整数数组 nums,找到一个...

  2. 【Matlab】矩阵中选取任意子矩阵

    【Matlab】矩阵中选取任意子矩阵 [var1] 好久没用Matlab写代码了,嗯,也没用其他语言。 至于怎么实现在矩阵中提取子矩阵,又学了一会,好记性不如烂笔头呀。 [var1] 如下图,我们要在33的矩阵中,选取位于右下角的22的子矩阵,...

  3. 最大子段和,最大子矩阵和

    1定义 最大子段和是指,对于一段数列来说,有区间\([l,r]\)使得\(a_i+a_{i+1}+...a_r\)最大,这个最大的和被称为最大子段和。 扩展内容是求解最大子矩阵和。 2算法 2.1 朴素算法 通过枚举l和r,来枚举所有可能的情况,暴力计算l到r...

  4. 子数组最大累加和+子矩阵的最大和+子数组累加和为给定值的最大子

    子数组最大累加和+子矩阵的最大和+子数组累加和为给定值的最大子数组长度 1.如何求一个子数组的最大累加和?(时间复杂度O(N)) class Solution{public:int SubArrayMaxSum(int *a, size_t n){if ((a == NULL) || (n == 0))return 0;int max = a[0];int cur =

  5. 最大子矩阵

    给定一个正整数、负整数和 0 组成的 N × M矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子...

  6. 极大子矩阵问题

    1悬线法 取自https://www.luogu.com.cn/blog/149815/xuan-xian-fa 1.1用途 悬线法是一种求解给定矩阵中的极大矩阵的算法。 所谓“给定矩阵中的极大矩阵”是指一个矩形中有一些障碍点,求内部不包含任何障碍点且边界与坐标轴平行的子矩形...

  7. 矩阵论 - 9 - 线性无关、基、维数

    线性无关、基、维数 线性无关 Independence 假定有 \(m\times n\) 的矩阵 \(A\) ,以列向量形式表示:\(\begin{bmatrix}v_1 v_2 \cdots v_n\end{bmatrix}\)。 如果 \(Ac=0\) 只有零解 \(c=0\)(即 \(A\) 零空间中有且仅有 \(0\) 向量),则各向量线性无关。

  8. 算法题_计算最大子矩阵

    算法题_计算最大子矩阵 思路:计算矩阵中乘积最大的连续子序列问题,我们可以用动态规划求单个子问题,在映射到矩阵级别。 接下来我们用C++进行编程: #include bits/stdc++.husing namespace std;#define LL long longint main(){ int M, N; cin M; c...

  9. 【线性代数的本质】行列式、逆矩阵、列空间、秩、零空间

    线性代数的本质,源视频 https://www.bilibili.com/video/BV1ys411472E 目录 行列式 逆矩阵 秩 列空间与零空间 非方阵 行列式 我们已经知道了矩阵的线性变换的意义,我们这节来学习行列式。 我们现在想象一些线性变换,有一些将空间向...

  10. 面试题 17.24. 最大子矩阵

    面试题 17.24. 最大子矩阵 给定一个正整数、负整数和 0 组成的 N M 矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。...

  11. 矩阵空间理解

    矩阵空间理解 最近学习了矩阵的空间,以及各个空间的关系,为了以后查阅方便,便做个笔记,有错误的地方请大家指正一下。 数学符号 符号 意义 R n n维实空间 R m n mxn的实矩阵集合 T 转置 d e t ( A ) 行列式 C ( A ) 列空间 N ( A ) ...

  12. 最大子矩阵问题--悬线法dp

    最大子矩阵问题--悬线法dp problem:搜索全为1的最大子矩阵 #includebits/stdc++.husing namespace std;const int N = 2010;const int inf = 1000000007;void in(int x){ x=0;char c=getchar(); int y=1; while(c'0'||c'9'){if(c=='-')y=-1;c=getchar();} wh

  13. 矩阵论笔记方阵幂级数

    【矩阵论笔记】方阵幂级数 定义 这是一种特殊的矩阵级数,之前矩阵级数中,计算的是下面这种 A k A_k A k ? ,而在方阵幂级数中,计算的是 A k A^k A k 对比之前学到的幂级数, Z k Z^k Z k 和 A k A^k A k 有什么关系呢? 假设 证明 解...

  14. 空间坐标转换旋转矩阵的推导

    空间坐标转换旋转矩阵的推导 首先我们要明确坐标系是左手坐标系还是右手坐标系。 坐标系判断方法: 右手大拇指指向X轴正方向; 右手食指指向Y轴正方向; 若此时右手中指指向Z轴正方向,则该坐标系为右手坐标系,否则为...

  15. 进程的四个基本特征

    进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基

  16. 最大子矩阵和 (LeetCode面试题17.24)

    最大子矩阵和 (LeetCode面试题17.24) 题目描述: 给定一个正整数、负整数和 0 组成的 N M矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表...

  17. 矩阵论笔记方阵函数计算(一) Jordan标准型法

    【矩阵论笔记】方阵函数计算(一) Jordan标准型法 方阵函数计算 1、Jordan标准型法 2、最小多项式法 和算方阵多项式的办法一样 Jordan标准型法 例子 求特征向量要反过来减。 它的秩是2,基础解系是一个,特征向量有一个。 λ 1 ...

  18. 1277. 统计全为 1 的正方形子矩阵

    1277. 统计全为 1 的正方形子矩阵 解法1:比较好理解的方式 dp[i][j][k]: 以 (i, j) 为右下角,长度为k的正方形是否满足全都为1,满足则为1,不满足则为0 我们要做的就是对每个点判断一下它可能长度的正方形是不是以下几个条件: ...

  19. 布尔(控制)网络的不变子空间方法

    逻辑函数可用于描述布尔网络状态 (BN) 的属性,它被视为状态的聚合。为了说明一组逻辑函数的动态,这些函数是 BN 相关属性的特征,我们提出了包含一组逻辑函数的不变子空间,并对其属性进行调查。然后,还提出了布尔...

  20. AcWing 796. 子矩阵的和

    AcWing 796. 子矩阵的和 #include bits/stdc++.husing namespace std;const int N=1e3+10;int a[N][N],S[N][N];int main(){ int n,m,q; scanf(%d%d%d,n,m,q); for(int i=1;i=n;i++) for(int j=1;j=m;j++) scanf(%d,a[i][j]); for(int i=1;i=n;i++) for(int j

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2021, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词