zoukankan      html  css  js  c++  java
  • MIT线性代数课程 总结与理解-第一部分

    MIT线性代数课程 总结与理解-第一部分

    概述

    个人认为线性代数从三个角度,或者说三个工具来阐述了线性关系,分别是:

    • 向量
    • 矩阵
    • 空间

    这三个工具有各自的一套方法,而彼此之间又存在这密切的联系,通过这些抽象出来的工具可以用来干一些实际的活,最为直接的就是解方程组,进一步衍生出来最小二乘法等等。
    这一部分主要讲了三个工具的各自的一些基本方法,以及用其解方程组的一套理论。另外,由于是总结,就不按照课程的顺序,而且各点之间都有穿插。

    向量(Vector)

    对于向量而言,大部分与中学一致,基本的就不说了,关注重点。

    线性相关性

    线性相关性用于描述向量之间的关系。
    之前理解有点偏差,定义的意思大概是,对于(Ax=0)(x)若有非零解则(A)的列向量组线性相关,否则线性无关。
    也就是说线性相关性是针对向量组的:

    • 从代数上讲,如果向量组中任一个向量都无法被其他向量的线性组合表示,则向量组线性无关,否则线性相关。
    • 从几何上讲,若某向量组线性相关,则至少存在一个向量在其余向量的线性组合所构成的空间内。

    特别地,若某向量组存在零向量,则该向量组必然线性相关。

    其实向量组的线性相关性是受某几个向量影响的,比如(a,b)线性无关,而(a,c)线性相关,那么(a,b,c)线性相关,而(c)是不能由(a,b)的线性表示的(因为(c)前系数为0),所以线性相关,并不意味着,向量组内任一向量都能被其他向量线性组合表示,这是之前理解上的误区。

    范数,模,内积

    范数是针对赋范空间,内积针对内积空间,模是指向量长度。
    一般而言向量的模(|a|=sqrt{a_1^2+a_2^2+...+a_n^2})等于二范数,而向量内积定义为(a·b=|a|*|b|*cos<a,b>),这里注意一点,若取b为e,则(a·b=|a|*cos<a,b>),此时ab内积成为了a在b上投影长度
    这些空间的定义在泛函里面介绍比较清楚,个人认为,在这一部分中,只要知道向量的范数,内积,模是如何定义的就行了。

    对于向量而言,本部分也就这么多,这也是最为基本的,特别是线性相关性,这是后面的基础。

    矩阵(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^{-1}A = AA^{-1} = I),显然矩阵应该是方阵。

    矩阵的秩

    矩阵的秩是一个核心概念,秩分为行秩列秩,分别是指线性无关行、列向量的极大数目。并且行秩等于列秩,对于这个概念问题又有很多了...
    首先来看,求解秩的方法:
    一般是通过初等行变换,消元得到阶梯矩阵,然后主列数便等于列(行)秩。
    来看问题:

    1. 为什么主列数等于列秩?
    2. 阶梯矩阵的空间与原矩阵的空间是否一样?
    3. 为什么行列秩相等?

    先看问题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的解;
    • (Ax_1=0,Ax_2=0),则(A(x1+x2)=0),故((x_1+x_2))(Ax=0)的解;

    故解在数乘,加法上闭合,所以解形成空间。零空间中的向量其本质上,是A矩阵的列向量线性相关的系数所构成的向量。
    关于求解零空间的基,先说求解方法,就是选取一自由列,置其余自由列系数为0,然后让主列与之线性相关,求得系数,得到一个解向量,依次进行,便得到一组零空间的解向量。可以发现,这种方式所得到的基在各个系数所在的维度上是不同的,其实就是每个向量仅有它在某维上有分量,类似于阶梯性质,所以很容易知道,各个向量是线性无关的。
    那么又有一个问题,这组向量能否生成整个解空间呢?或者问,如何证明这组向量就是解空间的基呢?这是一个很有意思的问题,思索了许久呀...
    我们设向量p为任意解向量,且p在自由列的系数不全为零(若全为零,由于主列线性无关,则p就只能为零向量),设用之前得到的解向量组按照p对自由列的系数合成一个向量q,那么需要证明p=q。
    假设(p eq q),但由于都是方程组的解,二者的差(线性组合)必然也是方程组的解,设p-q=v,则v对自由列的系数为零,而主列的系数不全为零(两个向量不等),这样主列的线性组合等于了零,这与主列线性无关不符,故v=0,p=q,也即是p向量能被之前的线性无关解向量组所表示,所以之前的线性无关解向量组能够表示解空间内任意向量,即该组向量为解空间的基(线性无关早就满足了)
    所以零空间的维数等于自由列数(n-r)

    行空间(Row Space)

    行空间与列空间对应,就是所有行向量的线性组合所得到的空间。观察消元过程所得到的阶梯矩阵,显然所留下来的行是线性无关的,而且相关的行已被消为全零行。
    所以行空间的一组基为阶梯矩阵的不为全零的行向量组维数等于主元数

    左零空间(Left Null Space)

    (A^Tx=0) -> ((A^Tx)^T)=0 -> (x^TA)=0,所以称为左零空间,其实可以按照(A^T)的零空间来看,用的不多,知道其与列空间互为正交补维数为m-r,就差不多了....

    (Ax=b)

    三个工具的基本方法讲完了,看看一个运用,就是解非齐次线性方程组。
    求解方法:增广矩阵化成阶梯矩阵,找到特解(Special Solution),然后加上零空间,就构成了全部解。
    两个问题:

    • 为什么这种方式求得的向量是解向量?
    • 这个向量的集合包含了所有解向量吗?

    首先,(Ax_0=b,Ax=0),二者相加(A(x_0+x)=b),回答了问题一。
    再看,设p为方程的解,则(Ap=b),又(Ax_0=b),二者相减有(A(p-x_0)=0,p-x_0)在零空间内,故p可表示为(x+x_0),所以这个向量的集合就是所有解向量的集合。

    后记

    总算把第一部分课上讲的大概总结完了,肯定还有不少遗漏,以后再补充吧,不过应该还是把精华的部分都总结到了吧....
    2016.12.8


    关于向量线性相关的理解之前有些偏差,现在已经纠正过来了
    2016.12.11


    增加了用LaTex公式标注,另外也修正了关于向量部分的范数,内积,模的一些理解。
    2017.1.22


  • 相关阅读:
    【css】怎么让Chrome支持小于12px 的文字
    java操作linux,调用shell命令
    20个非常有用的Java程序片段
    Java集合详解
    SVN使用指南
    利用SQL语句查询数据库中所有表
    HttpClient-03Http状态管理
    HttpClient-02连接管理
    HttpClient-01基本概念
    IDEA安装插件
  • 原文地址:https://www.cnblogs.com/Rainlee007/p/6128388.html
Copyright © 2011-2022 走看看