MIT18.06线性代数课程笔记10:column space、row space、null space、left null space

2023-12-15 23:18

本文主要是介绍MIT18.06线性代数课程笔记10:column space、row space、null space、left null space,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程简介

18.06是Gilbert Strang教授在MIT开的线性代数公开课,课程视频以及相关资料请见https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm。

课程笔记

此部分讨论了矩阵四个基本子空间的定义、性质以及求解方法。

1. 定义

关于column space和null space的定义请参考 MIT18.06线性代数课程笔记6:vector space,subspace,column space,null space,简单的说column space是矩阵 A 所有列向量的线性组合,即span;而null space是所有满足Ax=0 x 的集合。

由此推出row space和null space的定义也十分简单:row space就是C(AT),而left null space则为 N(AT) 。row space的实际意义即为所有行向量的线性组合;而left null space则为所有满足 xTA=0T x 的集合。

2. 性质

首先四个子空间都是大空间的subspace,第一个性质就是讨论各自所在的大空间,完全由集合内部元素的维度限制。设A n×m 的矩阵,则有 C(A)Rn,N(A)Rm,C(AT)Rm,N(AT)Rn 。可以发现column space 和left null space位于同一大空间内,而row space和null space 位于同一大空间内。通常对矩阵 A 的四大子空间作图时采用如下形式:

子空间图例

然后讨论四个空间的维度,由之前的内容可知Dim(C(A))=r(A), Dim(N(A))=mr(A) 。对于row space,结论是类似的 Dim(R(A))=Dim(C(AT))=r(AT)=r(A) , Dim(N(AT))=nr(A) 。容易发现,row space和null space(同在 Rm 的两个子空间)的维度加和为 m ;相似的,column space和left null space(同在Rn的两个子空间)的维度加和为 n

笔者注:笔者不记得Strang给出过Dim(C(A))=r(A)的严格证明,这里尝试说明一下。实际上仍然使用的是行变换矩阵 E P的可逆性,设对 A 做消元回代得到EA=R,其中 E 是多个行变换矩阵的乘积,仍然是方阵且可逆。那么在R为free column的 rf ,容易发现可以表示为所有的pivot column [rp1,rp2,,rpi] 的线性组合,即 c,[rp1,rp2,,rpi]c=rf 。因为 Eai=ri ,所以有 c,E[ap1,ap2,,api]c=Eaf ,因为 E 可逆,所以c,[ap1,ap2,,api]c=af。即free column可以表示所有pivot column的线性组合在 A 中仍然成立。至于Dim(N(A))=mr(A),则是受限于free column的数量,若另外存在某个向量 xN(A),Ax=0 ,这里的 N(A) 是所有 mr(A) xp 的span,(而 xp 的计算请参考 MIT18.06线性代数课程笔记7:使用消元法求解Null space)。若 xN(A) ,则有 {x}N(A) 的span包含有所有free column对应位置设为0,某个pivot column仍然不设为0的向量,从而推出pivot column之间线性相关。而 A 中的pivot column线性相关可以推出R中对应的pivot column线性相关,但是通过主元pivot的定义可知 R 中的pivot column线性无关。从而Dim(N(A))=mr(A)

3. 计算四个子空间的基向量

如上所述, C(A) 的基向量即为 A 的所有pivot column,证明很简单,因为所有free column可以表示为pivot column的线性组合。而N(A)的基向量为所有的 xp

至于row space和left null space,一个直观的想法是同样求解 AT ,但这样就需要做两次消元。Strang给出了只做一次消元的方法,主要基于消元矩阵的性质。

首先回顾消元法,使得notation更加明确,即对 A 做行变换等价于左乘一个可逆的方阵E,最终得到矩阵 R=EA 具有性质 Pc,RPc=[I,F0] ,其中 Pc 是置换列向量位置的矩阵(类似于permutation matrix的转置,详情参看 MIT18.06线性代数课程笔记4b:打乱矩阵集合及相关性质 ),并不增减或者修改元素, I 是单位阵,F是free column的表示, 0 表示全零的方阵。

那么第一个结论就是R的前 r 个行向量即为row space的基向量。证明非常简单,只需要证明这r个向量的span是row space即可。而我们已知 E1R=A ,即 AT=RT(ET)1 ,进而 x,ATx=RT((ET)1x) ,即 C(AT)=C(RT) 。从证明过程中,我们也发现对矩阵做行变换,并没有改变矩阵的row space;对比column space,则相反(随机生成一个矩阵,然后比较 C(A) C(R) 即可,应该绝大多数都不相等)。这个结论做个转置可以得到对矩阵做列变换不改变column space,但是改变row space。至于线性无关性可以从数量 r 或者存在单位阵I中容易看出。

对于left null space的基向量,需要一些小trick。首先观察left null space中包含哪些向量, xTA=0T ,即对 A 的行向量做行变换得到零向量的系数向量。观察消元结果EA=[R0],有 E 的后nr(A)个行向量均位于left null space中。至于线性无关性,则是基于 E <script type="math/tex" id="MathJax-Element-996">E</script>为可逆方阵得出。

这篇关于MIT18.06线性代数课程笔记10:column space、row space、null space、left null space的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/498258

相关文章

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组