MIT线性代数课程 总结与理解-第一部分
概述
个人认为线性代数从三个角度,或者说三个工具来阐述了线性关系,分别是:
- 向量
- 矩阵
- 空间
这三个工具有各自的一套方法,而彼此之间又存在这密切的联系,通过这些抽象出来的工具可以用来干一些实际的活,最为直接的就是解方程组,进一步衍生出来最小二乘法等等。
这一部分主要讲了三个工具的各自的一些基本方法,以及用其解方程组的一套理论。另外,由于是总结,就不按照课程的顺序,而且各点之间都有穿插。
向量(Vector)
对于向量而言,大部分与中学一致,基本的就不说了,关注重点。
线性相关性
线性相关性用于描述向量之间的关系。
之前理解有点偏差,定义的意思大概是,对于Ax=0,x若有非零解则A的列向量组线性相关,否则线性无关。
也就是说线性相关性是针对向量组的:
- 从代数上讲,如果向量组中任一个向量都无法被其他向量的线性组合表示,则向量组线性无关,否则线性相关。
- 从几何上讲,若某向量组线性相关,则至少存在一个向量在其余向量的线性组合所构成的空间内。
特别地,若某向量组存在零向量,则该向量组必然线性相关。
其实向量组的线性相关性是受某几个向量影响的,比如a,b线性无关,而a,c线性相关,那么a,b,c线性相关,而c是不能由a,b的线性表示的(因为c前系数为0),所以线性相关,并不意味着,向量组内任一向量都能被其他向量线性组合表示,这是之前理解上的误区。
范数,模,内积
这三个概念上就不区分了,因为也区分不来,权且当做内积来看。
内积可以用矩阵方式来表示,ATA,这也表明其实向量也是矩阵,只不过是列数为1的矩阵。
注
对于向量而言,本部分也就这么多,这也是最为基本的,特别是线性相关性,这是后面的基础。
矩阵(Matrix)
个人认为,从某个角度上讲,向量可以看成是数的一个集合,而矩阵可以看成是向量的一个集合,以列向量为例,向量是纵向,元素是数,矩阵是横向,元素是向量。当然这只是一个角度而已,同时矩阵也可以是行向量为元素,或者就是其中的数为元素(这在课程中的应用部分有体现,比如基尔霍夫电流关系等,但个人觉得还是有点牵强,有点强行应用的意思....),无论如何,只是观察的角度不同而已,便于理解就行。
矩阵乘法
个人认为,矩阵乘法其实是一个十分巧妙的设计,将向量线性组合的方式应用在里面,然而以前只知道左行乘右列,还感觉难用.....
矩阵乘法一共有5种方式,个人认为一定一定要深刻理解的有以下两种:
对Ax,A为矩阵(m*n),x为列向量(n*1): Ax为A中各列向量的线性组合
对xA,A为矩阵(m*n),x为行向量(1*m): xA为A中各行向量的线性组合
这是对矩阵与向量的乘积而言,而矩阵和矩阵的乘积与之类似,比如AB,可看成B中的各列向量与A相乘,然后得到结果矩阵的每个列向量。
矩阵的初等变换
矩阵的初等变换分为初等列变换和初等行变换,有三种方式:
- 对调两行;
- 以数k≠0乘某一行的所有元素;
- 把某一行所有元素的k倍加到另一行对应的元素上去。
注意,以前以为最后一条涵盖了前两条,仔细看了下,还真不是,三种变换方式每一条都还是有用的....
其实思考一下,可以发现,以行变换为例,在几何上,变换其实就是行向量间的运算,初等变换并不会使向量组的空间发生变化(注意不能同时用行列变换,否则此时行列空间会发生变化)。
提到初等变换就有另一个概念了,初等矩阵:单位矩阵经过一次初等变换所形成的矩阵。
那么初等变换,初等矩阵有什么用呢?
个人认为,初等变换可以用来描述解方程组时的消元过程,其实,解方程组就是对增广矩阵进行多次初等行变换的过程,另外,初等矩阵可以用来描述初等变换的过程,因为初等矩阵左乘某矩阵,等效于对该矩阵进行同样的初等变换,这样以来就可以用矩阵乘法来描述消元过程了。
既然为了能够描述整个消元过程,我们是不是可以将所有的消元矩阵相乘,得到一个最终的矩阵,然后这个矩阵与原矩阵相乘便得到阶梯矩阵呢?对,但这存在一个问题,就是消元矩阵之间相乘,需要做多次乘法,而且所得到的矩阵与原先消元矩阵不容易观察出关系,但是,如果我们用消元矩阵的逆矩阵,便在运算上有很大的简便性,而且也便于观察消元过程,这既是矩阵的LU分解(下三角,上三角)。
其实吧,这个LU分解,个人觉得也就形式好看,由于真正计算用的并不多,但好歹也是一种分解方式,还是得知道。
另外初等行变换,可求得矩阵的逆,对于矩阵的逆,需要记住,A-1A = AA-1 = I,显然矩阵应该是方阵。
矩阵的秩
矩阵的秩是一个核心概念,秩分为行秩和列秩,分别是指线性无关行、列向量的极大数目。并且行秩等于列秩,对于这个概念问题又有很多了...
首先来看,求解秩的方法:
一般是通过初等行变换,消元得到阶梯矩阵,然后主列数便等于列(行)秩。
来看问题:
- 为什么主列数等于列秩?
- 阶梯矩阵的空间与原矩阵的空间是否一样?
- 为什么行列秩相等?
先看问题1,主列是通过行变换得到的,也就是说,
若原矩阵为[a b c],变换后的矩阵为[a' b' c'],根据初等行变换有,
若Aa'+Bb'+Cc'=0,则Aa+Bb+Cc=0(用行变换一试便知),二者互为充要条件。也就表明,若变换后的某列向量组线性相关,则原矩阵的对应列向量组也线性相关,无关同理可证(可反证)。
有了这个结论后,就可以发现,阶梯矩阵,很明显主列是线性无关的,而且主列肯定可以线性组合得到自由列(free column),所以主列数就是矩阵的列向量组中极大线性无关向量数,即列秩。再延伸一下,可以发现上面的结论中A、B、C未改变的,也就意味着,零空间是不变的,其实也很简单,方程消元过程是不会改变解空间的。
再看问题2,问题事实上是问行变换对各个空间的影响:
- 行空间:行变换在几何上是行向量之间的运算,所以是不会改变行空间的;
- 列空间:行变换改变了列向量,显然列空间是会变化的,比如,阶梯矩阵可能有大量的零行,而原矩阵在该行所在的维度是有值的,这样显然列空间变化了,再比如,行变换允许交换两行,这显然改变了列空间;
- 零空间:方程消元是不会改变解空间的,故不变化;
- 左零空间:简单来看,左零空间和列空间是正交补,所以左零空间也会变化;
再看问题3,其实仔细观察下阶梯矩阵的形状,可以发现,所留下来的行是线性无关的,而线性相关的行已然被消为全零行,故所留下来的行就是极大线性无关行向量组,所以行秩等于主元数,等于主列数,等于列秩。
向量空间(Vector Space)
书上说,线性空间与向量空间等价,个人认为其实不大好,应该说向量空间是元素为向量的线性空间,这样应该理解起来应该要容易一点。
线性空间有8条公理,其实个人认为最为关键的为以下两点:
- 若v ∈ V,w ∈ V, 则 v + w ∈ V,即元素加法闭合;
- 若v ∈ V,则 mv ∈ V,即元素数乘闭合;
此时的V就为线性空间。注意一点,线性空间显然应该包含0元素(因为0数乘向量,为0向量),这一点可用来否定一些集合是线性空间。
基(Basis),维数(Dimention)
只要给出了基,那么这个空间就唯一确定了,也就是说一组基生成了一个空间,基满足两个条件:
- 空间中所有的向量都可以被基向量的线性组合表示;
- 基中的向量是线性无关的;
基中的向量数便称为空间的维数。
注意几个问题:
一组基确定一个空间,而生成同一个空间却有无数组基。
四个基本子空间
列空间(Column Space)
列空间是矩阵所有列向量的线性组合所构成的空间,那么列空间的基是什么呢?
显然是主列是一组基,因为,自由列可被主列的线性组合表示,所以所有列向量的线性组合等价于主列的线性组合(带入式中,很明显可得)。
所以列空间的维数等于主列数,即列向量所构成矩阵的秩,r。
零空间(Null Space)
零空间是Ax=0中的解空间,这就有个问题了,为什么解构成了一个空间呢?
其实可以简单套入空间的定义,试验一下:
- mx(m为系数)是Ax=0的解;
- 若Ax1=0,Ax2=0,则A(x1+x2)=0,故(x1+x2)为Ax=0的解;
故解在数乘,加法上闭合,所以解形成空间。零空间中的向量其本质上,是A矩阵的列向量线性相关的系数所构成的向量。
关于求解零空间的基,先说求解方法,就是选取一自由列,置其余自由列系数为0,然后让主列与之线性相关,求得系数,得到一个解向量,依次进行,便得到一组零空间的解向量。可以发现,这种方式所得到的基在各个系数所在的维度上是不同的,其实就是每个向量仅有它在某维上有分量,类似于阶梯性质,所以很容易知道,各个向量是线性无关的。
那么又有一个问题,这组向量能否生成整个解空间呢?或者问,如何证明这组向量就是解空间的基呢?这是一个很有意思的问题,思索了许久呀...
我们设向量p为任意解向量,且p在自由列的系数不全为零(若全为零,由于主列线性无关,则p就只能为零向量),设用之前得到的解向量组按照p对自由列的系数合成一个向量q,那么需要证明p=p。
假设p!=q,但由于都是方程组的解,二者的差(线性组合)必然也是方程组的解,设p-q=v,则v对自由列的系数为零,而主列的系数不全为零(两个向量不等),这样主列的线性组合等于了零,这与主列线性无关不符,故v=0,p=q,也即是p向量能被之前的线性无关解向量组所表示,所以之前的线性无关解向量组能够表示解空间内任意向量,即该组向量为解空间的基(线性无关早就满足了)。
所以零空间的维数等于自由列数(n-r)。
行空间(Row Space)
行空间与列空间对应,就是所有行向量的线性组合所得到的空间。观察消元过程所得到的阶梯矩阵,显然所留下来的行是线性无关的,而且相关的行已被消为全零行。
所以行空间的一组基为阶梯矩阵的不为全零的行向量组,维数等于主元数。
左零空间(Left Null Space)
ATx=0 -> (ATx)T=0 -> xTA=0,所以称为左零空间,其实可以按照AT的零空间来看,用的不多,知道其与列空间互为正交补,维数为m-r,就差不多了....
Ax=b
三个工具的基本方法讲完了,看看一个运用,就是解非齐次线性方程组。
求解方法:增广矩阵化成阶梯矩阵,找到特解(Special Solution),然后加上零空间,就构成了全部解。
两个问题:
- 为什么这种方式求得的向量是解向量?
- 这个向量的集合包含了所有解向量吗?
首先,Ax0=b,Ax=0,二者相加A(x0+x)=b,回答了问题一。
再看,设p为方程的解,则Ap=b,又Ax0=b,二者相减有A(p-x0)=0,p-x0在零空间内,故p可表示为x+x0,所以这个向量的集合就是所有解向量的集合。
后记
总算把第一部分课上讲的大概总结完了,肯定还有不少遗漏,以后再补充吧,不过应该还是把精华的部分都总结到了吧....
2016.12.8
*********************
关于向量线性相关的理解之前有些偏差,现在已经纠正过来了
2016.12.11
MIT线性代数课程 总结与理解-第一部分的更多相关文章
- MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...
- 【SEO 决胜网络索引】 课程大纲及第一部分第一课:网络营销战略中的索引
内容简介 1.课程大纲 2.第一部分第一课: 网络营销战略中的索引 3.第一部分第二课预告: 索引是什么 课程大纲 现在是网络为王的时代,人们越来越离不开互联网: SEO(Search Engine ...
- MIT 三课程
mit三课程: Introduction to Computer Science and Programming artificial intelligence introduction to alg ...
- 面向对象编程课程(OOP)第一单元总结
漫长旅程中还算不错的开头 在本学期开始之前,我按照助教们所给的寒假作业指导书自学了Java语言的相关知识,了解了Java语言的基本语法,输出一句“Hello World!”,掌握了基本的一些输入输出方 ...
- MIT线性代数:22.对角化和A的幂
- MIT线性代数:21.特征值和特征向量
- MIT线性代数:20.克拉默法则,逆矩阵和体积
- MIT线性代数:19.行列式和代数余子式
- MIT线性代数:18.行列式及其特性
随机推荐
- memcached与.NET的融合使用2
memcached与.NET的融合使用(二) memcached部署完成之后,对当前缓存中数据的监控就显得比较迫切,这里看到网上开源的memadmin比较小巧好用,决定用它来查看监控memcached ...
- LaTex代码生成器
latex代码生成器 希腊字母 \alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa \lambda \mu \nu \ ...
- Dynamics CRM不发布JS调试
本博客已迁移至 http://www.krely.cn/ 上个项目做了一年多,大多是在做JS的开发,由于开发人数比较多,着实被坑的不轻.因为JS修改完成之后必须要发布,对于我们动辄几千行的JS的调 ...
- 【转】在iOS开发中使用FMDB
本文转载自:唐巧的博客 在iOS开发中使用FMDB APR 22ND, 2012 前言 SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iO ...
- SVN 服务端 和 客户端
网址大全 | EF CodeFirst | 电视 | MyNPOI | 开源 | 我的皮肤 | ASP.NET MVC4 | 前端提升 | LINQ | WCF ...
- PHP gbk转换成utf8
/** * GBK ASCII 转换成utf8 */ public function to_utf8($str){ $detect = array('ASCII', 'GBK', 'UTF-8'); ...
- Python 用IMAP接收邮件
一.简介IMAP(Internet Message Access Protocol),这个协议与POP一样,也是从邮件服务器上下载邮件到本机,不过IMAP比POP的功能要更加强大些,IMAP除支持PO ...
- div光标定位问题总结
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 测试Data ORM的性能
闲着无聊,测试了一下公司ORM的性能,和其它的ORM相比,该有的都有了,不该有的也勉强塞了进去,总体考虑是并发与扩展性问题,譬如读写分离,消息总线服务整合,缓存内置. 测试机是I7,16G内存,这里只 ...
- Clob类型转换成String类型
oracle中表结构如下: create table GRID_RESOURCE ( ID VARCHAR2(50), CNNAME VARCHAR2(50), TYPE VARCHAR2(50), ...