矩阵的零空间和零度

2023-11-04

摘要

这篇短文中将介绍矩阵零空间与矩阵零度的概念,以及矩阵秩-零度定理。

矩阵的零空间 (nullspace)

给定矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n,那么矩阵的零空间定义为:

如果 X ∈ R n × 1 X \in \mathbb{R}^{n \times 1} XRn×1,且有 A X = 0 AX = \mathbf{0} AX=0,那么所有这样的 X X X 组成的线性空间就是矩阵 A A A 的零空间。

首先我们须要验证所有满足 A X = 0 AX = \mathbf{0} AX=0 X X X 组成一个线性空间。

为了方便,我们记 n u l l s p a c e ( A ) = { X : A X = 0 } nullspace(A) = \{X: AX = \mathbf{0} \} nullspace(A)={X:AX=0}

  1. 首先, A 0 = 0 A \mathbf{0} = \mathbf{0} A0=0,所以零向量属于这个空间。于是 n u l l s p a c e ( A ) ≠ ∅ nullspace(A) \neq \emptyset nullspace(A)=
  2. 另外,如果 X ∈ n u l l s p a c e ( A ) X \in nullspace(A) Xnullspace(A), 则 A ( λ X ) = λ A X = 0 A (\lambda X) = \lambda AX = \mathbf{0} A(λX)=λAX=0,所以 λ X ∈ n u l l s p a c e ( A ) \lambda X \in nullspace(A) λXnullspace(A)
  3. 还有,如果 X ∈ n u l l s p a c e ( A ) X \in nullspace(A) Xnullspace(A), Y ∈ n u l l s p a c e ( A ) Y \in nullspace(A) Ynullspace(A),那么 A ( X + Y ) = A X + A Y = 0 + 0 = 0 A(X + Y) = AX + AY = \mathbf{0} + \mathbf{0} = \mathbf{0} A(X+Y)=AX+AY=0+0=0。所以 X + Y ∈ n u l l s p a c e ( A ) X + Y \in nullspace(A) X+Ynullspace(A)

于是我们就证明了 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 是一个线性空间。值得指出的是,虽然 n u l l s p a c e ( A ) = { X : A X = 0 } nullspace(A) = \{X: AX = \mathbf{0} \} nullspace(A)={X:AX=0} 构成一个线性空间,但是集合 Ω = { X : A X ≠ 0 } \Omega = \{X: AX \neq \mathbf{0} \} Ω={X:AX=0} 却不是一个线性空间。

矩阵的零度 (nullity)

矩阵零空间的维度 (dimension) 称为矩阵的零度 (nullity)。对于线性空间的维度,我们回忆起其定义为线性空间中向量个数最多的线性无关组所包含的向量的个数。我们记矩阵 A A A 的零度为 n u l l i t y ( A ) nullity(A) nullity(A)

秩-零度定理 (The Rank-Nullity Theorem)

给定矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n,我们有
r a n k ( A ) + n u l l i t y ( A ) = n rank(A) + nullity(A) = n rank(A)+nullity(A)=n
这成为秩-零度定理 (The Rank-Nullity Theorem)。

我们知道可以通过对矩阵进行初等行变换,得到行阶梯形矩阵 (row-echelon form)。那么对于得到的行阶梯形矩阵的,所有某一行的第一个非零的元素 (有的线性代数书中称为 number of leading variables) 对应的列所构成的集合的元素个数就是这个矩阵的秩。

这看起来有些复杂,我们来举一个例子。
A = ( 1 1 2 3 3 4 − 1 2 − 1 − 2 5 4 ) A = \begin{pmatrix} 1 & 1 & 2 & 3 \\ 3 & 4 & -1 & 2 \\ -1 & -2 & 5 & 4 \\ \end{pmatrix} A= 131142215324

A A A 进行初等行变换之后,我们得到
A ∼ ( 1 1 2 3 0 1 − 7 − 7 0 − 1 7 7 ) ∼ ( 1 1 2 3 0 1 − 7 − 7 0 0 0 0 ) A \sim \begin{pmatrix} 1 & 1 & 2 & 3 \\ 0 & 1 & -7 & -7 \\ 0 & -1 & 7 & 7 \\ \end{pmatrix} \sim \begin{pmatrix} 1 & 1 & 2 & 3 \\ 0 & 1 & -7 & -7 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} A 100111277377 100110270370

对于行阶梯形矩阵 ( 1 1 2 3 0 1 − 7 − 7 0 0 0 0 ) \begin{pmatrix} 1 & 1 & 2 & 3 \\ 0 & 1 & -7 & -7 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} 100110270370 ,它的行的第一个非零元素所在的列是第一列和第二列,一共有两列。从而 A A A 的秩为 2。

而 Rank-Nullity 定理是说, r a n k ( A ) + n u l l i t y ( A ) = 4 rank(A) + nullity(A) = 4 rank(A)+nullity(A)=4。即 A A A 的零空间的维度是 2。

如何证明 Rank-Nullity 定理呢?我们考虑方程 A X = 0 AX = \mathbf{0} AX=0。因为对于矩阵进行初等行变换,并不影响方程 A X = 0 AX = \mathbf{0} AX=0 的解。我们可以对 A A A 进行初等行变换。如果 r a n k ( A ) = n rank(A) = n rank(A)=n ,那么 A A A 经过初等行变换得到的矩阵每一列都会有一个某一行中第一个非零的元素。于是可以想见,这时 A X = 0 AX = \mathbf{0} AX=0 的解只有 X = 0 X = \mathbf{0} X=0。从而, n u l l i t y ( A ) = 0 nullity(A) = 0 nullity(A)=0。Rank-Nullity 定理成立。

如果 r a n k ( A ) = r < n rank(A) = r < n rank(A)=r<n,那么有 n − r n - r nr 列,其中的元素都不是某一行的第一个非零元素 (称为 free variables,自由变量)。那么如果确定了这 n − r n - r nr 个 free variables,我们就能够确定 A X = 0 AX = \mathbf{0} AX=0 的解。

还是上面的例子,对于行阶梯形矩阵 ( 1 1 2 3 0 1 − 7 − 7 0 0 0 0 ) \begin{pmatrix} 1 & 1 & 2 & 3 \\ 0 & 1 & -7 & -7 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} 100110270370 ,它的 free variables 在第三列和第四列。因为第一列中第一个元素 ( A 11 A_{11} A11) 是第一行的第一个非零元素,第二列中第二个元素 ( A 22 A_{22} A22) 是第二行的第一个非零元素,所以第一列和第二列中不存在 free variables。我们记第三列中的非零元素为 x 1 x_1 x1,第四列中的非零元素为 x 2 x_2 x2。那么如果确定了 t 1 t_1 t1 t 2 t_2 t2,每一个 A X = 0 AX = \mathbf{0} AX=0 的解 ( x 1 x 2 x 3 x 4 ) \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{pmatrix} x1x2x3x4 都可以写成
x 1 = − 9 t 1 − 10 t 2 x 2 = 7 t 1 + 7 t 2 x 3 = t 1 x 4 = t 2 (*) \begin{aligned} x_1 &= -9 t_1 - 10 t_2 \\ x_2 &= 7t_1 + 7 t_2 \\ x_3 &= t_1 \\ x_4 &= t_2 \\ \end{aligned} \tag{*} x1x2x3x4=9t110t2=7t1+7t2=t1=t2(*)

对于 n − r n - r nr 个 free variables,我们依次将其中一个取为 1,剩余的取 0,那么可以得到 n − r n - r nr 个向量。那么这 n − r n - r nr 个向量就构成了 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 的一组基。于是 n u l l i t y ( A ) = d i m ( n u l l s p a c e ( A ) ) = n − r nullity(A) = dim(nullspace(A)) = n - r nullity(A)=dim(nullspace(A))=nr

为什么这 n − r n - r nr 个向量就构成了 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 的一组基呢?

首先这 n − r n - r nr 个向量是线性无关的。因为每一个向量都有那么一个位置,这个向量在这个位置上的元素为1,而其余的向量对应位置上为 0。还是上面的例子,我们分别取 t 1 = 1 ,   t 2 = 0 t_1 = 1, \, t_2 = 0 t1=1,t2=0 t 1 = 0 ,   t 2 = 1 t_1 = 0, \, t_2 = 1 t1=0,t2=1,得到的两个向量是
( − 9 7 1 0 ) a n d ( − 10 7 0 1 ) \begin{pmatrix} -9 \\ 7 \\ 1 \\ 0 \\ \end{pmatrix} and \begin{pmatrix} -10 \\ 7 \\ 0 \\ 1 \\ \end{pmatrix} 9710 and 10701
这两个向量线性无关。

另外,每一个 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 的元素均可由这 n − r n - r nr 个向量线性表示。对于上面的例子,我们可以将 (*) 式写成
( x 1 x 2 x 3 x 4 ) = ( − 9 t 1 − 10 t 2 7 t 1 + 7 t 2 t 1 t 2 ) = t 1 ( − 9 7 1 0 ) + t 2 ( − 10 7 0 1 ) \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{pmatrix} = \begin{pmatrix} -9 t_1 - 10 t_2 \\ 7t_1 + 7 t_2 \\ t_1 \\ t_2 \\ \end{pmatrix} = t_1 \begin{pmatrix} -9 \\ 7 \\ 1 \\ 0 \\ \end{pmatrix} + t_2 \begin{pmatrix} -10 \\ 7 \\ 0 \\ 1 \\ \end{pmatrix} x1x2x3x4 = 9t110t27t1+7t2t1t2 =t1 9710 +t2 10701

综上,我们就证明了 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 的维度是 n − r n - r nr,从而证明了 rank-nullity theorem。

numpy 与 scipy 中求矩阵的秩与零空间

我们可以通过 python 中的 numpy.linalg.matrix_rankscipy.null_space 来求一个矩阵的秩和零空间。

还是上面的例子,

import numpy as np
from numpy import linalg
from scipy.linalg import null_space

A = np.array([[1, 1, 2, 3], [3, 4, -1, 2], [-1, -2, 5, 4]])
A

array([[ 1, 1, 2, 3],
[ 3, 4, -1, 2],
[-1, -2, 5, 4]])

linalg.matrix_rank(A)

2

null_space(A)

array([[-0.82823574, 0.11451508],
[ 0.41571976, -0.52343633],
[-0.23435036, -0.6332511 ],
[ 0.2937389 , 0.55847448]])

这里 null_space(A) 返回值的类型是 numpy.ndarray。如果 A.shape = (m, n),那么 null_space(A) 返回值的 shape 是 n × ( n − r ) n \times (n - r) n×(nr)。即 null_space(A) 的每一个列向量是一个归一化的 n u l l s p a c e ( A ) nullspace(A) nullspace(A) 的一个基。

我们可以验证,np.matmul(A, null_space(A)[:,0])np.matmul(A, null_space(A)[:,1]) 是零向量。

np.matmul(A, null_space(A))

array([[-5.55111512e-16, -4.44089210e-16],
[-2.66453526e-15, -4.44089210e-16],
[ 1.77635684e-15, -4.44089210e-16]])

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

矩阵的零空间和零度 的相关文章

随机推荐

  • 【uni-app框架】Vue框架的生命周期之data属性、props属性、及其生命周期函数的执行顺序总结【兼容uni-app总结】

    第一 props参数是实时更新的 而created和data仅会执行一次 当每次重新跳转到当前页面的时候 这也是为什么叫做当前页面或当前组件声明周期 第二 在uni app框架中 APP端和H5端的一些区别 APP端不兼容的特性 H5是最权
  • echarts 重新渲染(重新绘制,重新加载数据)等

    转载于 https www cnblogs com Skrillex p 7904797 html
  • SVN版本控制与分支设置

    使用SVN Eclipse做软件版本控制 http cnshell blog sohu com 157502394 html
  • uvm_info信息定制

    1 uvm自带的打印信息国语繁重 不利于debug uvm info TESTCASE sformatf my case0 new UVM DEBUG UVM INFO home zl Desktop uvm study template
  • 算法分析与设计-分治算法

    在计算机科学中 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的合并 这个技巧是很多高效算法的
  • DSA数字签名算法及其实现

    一 实验目的 在掌握了ElGamal和Schorr数字签名算法的基础上 进一步地学习和掌握DSA签名算法 深入地理解该算法是如何降低了签名信息的长度 当其中一个重要参数选为512bit的素数时 ElGamal签名的长度为1024bit 而D
  • 【react】props的简写方式

    props的简写 用static 就可以把类的属性写在类的里面 div div div div
  • linux(centos)无中文输入,如何解决

    1 终端执行安装命令 yum install Chinese Support 2 如下图 多出Input method 3 点击进行配置 4 reboot重启系统 新建一个文本 试一下输入 问题出来 难道是当时新建虚拟机时没有选择增强型虚拟
  • 【Linux】僵尸进程的检测,清理和避免

    一 僵尸进程的产生 一个进程终止的方法很多 进程终止后有些信息对于父进程和内核还是很有用的 例如进程的ID号 进程的退出状态 进程运行的CPU时间等 因此进程在终止时 回收所有内核分配给它的内存 关闭它打开的所有文件等等 但是还会保留以上极
  • 九章算法

    两个排序的数组A和B分别含有m和n个数 找到两个排序数组的中位数 要求时间复杂度应为O log m n 在线评测地址 LintCode 领扣 说明 中位数的定义 这里的中位数等同于数学定义里的中位数 中位数是排序后数组的中间值 如果有数组中
  • docker容器为什么总会挂掉?

    最近使用docker启动nginx时总会自动退出 看了一些文章后解决了问题 也明白了一些道理 将这些知识总结一下 只使用命令 docker run nginx就会自动退出 需要增加个死循环while true do echo hello s
  • 手把手教你编写Python抢购脚本

    想买mate40 但总是抢不到 所以想试着能不能写个脚本代码 第一步 把想要抢购的商品加进购物车 注意 脚本是对购物车内全部商品进行下单操作 所以不够买的商品最好先从购物车内删除 第二步 写好Python脚本 在抢购之前运行 并设置好抢购时
  • python基础教程:包的创建及导入

    包是一种通过用 带点号的模块名 来构造 Python 模块命名空间的方法 例如 模块名 A B 表示 A 包中名为 B 的子模块 正如模块的使用使得不同模块的作者不必担心彼此的全局变量名称一样 使用加点的模块名可以使得 NumPy 或 Pi
  • 数据库索引中包含的数据结构有哪些

    1 索引介绍 MySQL官方对索引的定义为 索引 Index 是帮助MySQL高效获取数据的数据结构 提取句子主干 就可以得到索引的本质 索引是数据结构 我们知道 数据库查询是数据库的最主要功能之一 例如下面的SQL语句 SELECT FR
  • 设计模式_单例模式

    线程的单例模式 一 懒汉式线程单例模式 以下该实例是懒汉式的单例模式 线程不安全 public class Singleton private static Singleton singleton private Singleton 设置构
  • Pid文件和路径

    Pid文件和路径 var run通常是存放pid文件的位置 var run是tmpfs文件系统 每次重启的时候都会清空 其中 var run是 run的链接 由于每次都清空 所以 如果想在 var run下面的子目录创建pid文件的话 子目
  • 高精度车牌识别算法

    一 车牌识别概述 车牌识别属于OCR的一种 但它也有自己的特点 考虑到边缘设备部署 我们没有用lstm 仅用普通的卷积层便实现了高精度的车牌识别方案 车牌识别的应用场景也十分广泛 常见的停车场收费系统 车牌识别算法也是智能交通算法中的基础算
  • 杭州乐园一日游攻略

    交通路线 杭州乐园就在湘湖边上 在地铁一号线的湘湖站下车后还有几公里路程 可以选择打车或者公交 门票购买 微信公众号 淘宝 美团都有卖的 可以都看看 有的平台会有优惠 时间安排 1 早上越早去越好 排队的人少一点 2 去的时候先看看过上车排
  • pytorch 训练_基于文件存储UFS的Pytorch训练IO优化实践

    我们在协助某AI客户排查一个UFS文件存储的性能case时发现 其使用的Pytorch训练IO性能和硬件的IO能力有很大的差距 后面内容有具体性能对比数据 让我们感到困惑的是 UFS文件存储 我们使用fio自测可以达到单实例最低10Gbps
  • 矩阵的零空间和零度

    矩阵的零空间和零度 摘要 矩阵的零空间 nullspace 矩阵的零度 nullity 秩 零度定理 The Rank Nullity Theorem numpy 与 scipy 中求矩阵的秩与零空间 摘要 这篇短文中将介绍矩阵零空间与矩阵