CategoryLinear Algebra

线性代数导论 – #12 向量空间的衍生:矩阵空间、微分方程的解、图

  • 凡是可以进行加法和数乘运算的对象,我们都可以将其视为向量。
  • 凡是对加法和数乘封闭的集合,我们都可以将其视为空间。
  • 分析空间时,我们着眼于其维度和基。

矩阵空间:把矩阵视为向量

矩阵空间的维度与基

一般地,空间内(即符合某些数量关系)的某个矩阵中独立的元素的个数等于该矩阵空间的维度。

找独立元素时可将所有元素都设为元,利用数量关系进行消元至元数最少。

e.g.

  • dim (All 3*3 Matrices) = 9
  • dim (All 3*3 Symmetric Matrices) = 6
  • dim (All 3*3 Upper Matrices) = 6
  • dim (All A that A is a 2*3 matrix, v= and

线性代数导论 – #11 基于矩阵A生成的空间:列空间、行空间、零空间、左零空间

本节课介绍和进一步总结了如何求出基于一个m*n矩阵A生成的四种常见空间的维数和基:

  • 列空间C(A),dim C(A) = r,基 = { U中主元列对应的原列向量 };
  • 行空间C(AT), dim C(AT) = r,基 = { U中的主元行 }:

1.为什么行空间不表示为R(A)而表示为C(AT)?

因为转置是矩阵的行与列之间的桥梁。

既然我们已经研究过列空间,通过转置,我们可以将行空间视为转置矩阵的列空间。

2.行空间与列空间之间有什么联系?

因为主元在转置过程中数目不会发生变化,所以行空间和列空间的维数是相同的。

请思考:如何证明下图中Prof. Strang右侧的三个向量线性相关?

3.为什么行空间的基可以直接取消元结果U中的主元行?

消元的过程中所进行的“行变换”,实质上是对各行的多次线性组合。

#10中我们已经学到,同一空间的两个不同的基A、B联系就是:B(或A)可以视为A(或B)的线性组合。

相反地,列空间会随着消元发生变化,列空间的基不能够直接取主元列。

  • 零空间N(A),dim N(A) = n-r,基 =

线性代数导论 – #10 线性相关性、向量空间的基和维数

这节课中,我们先讲了前面的课程中一直提及的线性相关性的具体定义,并以此为基础建立了向量空间的“基”和“维数”的定义,最后归纳为一种已知若干向量求其生成的空间的基和维数的系统方法。

首先是线性相关性的定义。

已知一个由n个向量构成的向量组【V1,V2,…,Vn】,如果存在n个系数【C1,C2,Cn】,使得各CiVi(i=1,2,3,…,n)的和为0,则称这组向量线性相关。反之,如不存在,则称其线性无关。

当然,这里要排除Ci均为0的情况。

对于这个定义,有两点注意之处:

1.线性相关性是整组向量的性质,不是某一个或几个向量与另一个向量之间的性质(以此表述为准,#1~#9中的表述可能有误);

2.系数中可以出现0。

诚然,线性相关的向量组内,存在一个向量能表示为其它若干向量的线性组合的情况,但是这并不意味着该情况是普遍情况。事实上,只有系数非0的向量,才可以通过移项,被表示为其它所有向量的线性组合。如果把线性相关表述为注意1中的“狭隘”形式,很可能带有一种先入为主的观念,干扰后续对于找向量组内的“基”(即剔除一些向量使得余下的向量线性无关)的正确认识。

 

线性相关性的定义可以用矩阵语言表述为:

对于一个由n个向量构成的向量组,将每个向量均视为列向量后构成的m*n矩阵A的零空间中,若含有非零向量,则线性相关,反之线性无关。

零空间生成的基础是Ax=0,系数的组合所构成的向量生成零空间。矩阵语言下的说法实质上也就是判定Ax=0是否存在非零解。

运用矩阵的一些性质,我们可以把线性相关性进一步抽象为:

若r<n,则线性相关;若r=n,则线性无关。

根据#9中的知识,自由变量/自由列的个数为n-r,如果存在自由变量,我们可以通过将其置为非零值获得非零解。而一个列向量之所以能在消元的过程中变为自由列,就是因为该列向量可以表示为主元列的线性组合。

运用这些结论,请思考:为什么由三(n+1)个及以上二(n)元向量组成的向量组一定线性相关呢?

 

其次是基和维数的定义。

对于一个给定的向量空间(下简称为空间),如果存在一组向量同时满足:…

线性代数导论 – #9 Ax=b的解:存在性、解法、解的结构、解的数量

终于,我们在b为参数的一般情况下,开始分析Ax=b的解,包括标题中的四个方面。

首先是解的存在性。

从几何上说,当且仅当向量b位于列空间C(A)内时,Ax=b有解;

从代数上说,不能出现类似于“非0数=0”的矛盾方程:

1.这为我们判定是否有解提供了一个简便的途径:

根据Gauss消元法中对A和b进行行变换的同步性,行的相同线性组合的值一定相同。

所以假如A中各行可以通过简单的线性组合得到零行,而b进行相同线性组合的结果非0,则该方程组一定无解。

2.这为我们面对b为参数的一般情况进行的分类讨论提供了依据:

当我们使用Gauss消元法得到A中的零行时,回代前应该针对零行所对应的新b值是否为0进行分类讨论。

 

其次是解法、解的结构和解的数量,这里要求我们运用之前解Ax=0时的知识。

解法和解Ax=0大致相同。使用Guass消元法,确定主元,进一步确定主元变量和自由变量。

1.求出特解Xp

置全部自由变量为0(简化运算),回代解出主元变量,得到Ax=b的一个解;

2.解出Ax=0的全部解XN

也即基向量的全部线性组合,含有1或2个常数c;

3.通解X=Xp+XN

因为A(Xp+XN)=AXp+AXN=b+0=b,这也就是所谓“解的结构”,通解由一个特解和零空间内的全部向量组成。

从几何上说,解空间由零空间平移得到。

 

但是,这种方法存在缺陷,不通用。问题就出在第一步。

如果没有自由变量怎么办?那后续的方法如何进行?解的结构还是那两个部分吗?

还有,如果根本就没有解,怎么办?
为了确定解的存在性;为了确定自由变量的个数,发掘其与解的数量及与之相对应的结构的关系,我们需要研究秩的概念。

之前已经提及,秩r=主元数。

如何利用r判定一个由m*n矩阵A构成的方程Ax=b的解的数量呢?…

线性代数导论 – #8 求解Ax=0/构造零空间

本节课的主线十分清晰,就是讨论求解Ax=0的消元算法,中间穿插一些新定义。根据#7中构造向量空间的第二种思路,求解Ax=0的过程也就是构造零空间的过程。

以下是这个算法的基本步骤:

1.利用类Gauss消元法把矩阵A变换成行阶梯形矩阵U:

与Gauss消元法的相同之处在于逐列逐行选取主元,通过行变换使主元下方元素变为0,直至最后一列;

差异在于即使中间过程中出现了没有非零元素可供选为主元的现象,也继续下去,跳过这一列。

行阶梯形意即主元下方全是0的矩阵,由于中间列可能出现没有主元的现象,故不是严格的上三角矩阵,只是相似。

某一列没有主元,也就反映出这一列与左侧的列线性相关。

2.分出主变量和自由变量:

主变量即主元列对应的变量,自由变量即剩下的行对应的变量。

这里引入了“秩”(rank,直译为等级)的概念,在这个消元算法中,秩体现为主元的数量,也即主元列的数量,也即在线性方程组中对方程的求解实际起作用的方程数目。

根据秩的定义,我们不难推出主变量的个数为r,而一个m*n的系数矩阵对应的方程组中,自由变量的个数为n-r。

3.对自由变量取方便回代计算的特殊值,回代解出主变量,求得方程的一个特解:

这个特解,也即一个向量,满足Ax=0,故位于A的零空间内。

由于我们依靠其构筑零空间,故将其命名为基向量。

显然这个基向量的任意数乘结果也位于零空间中,为了体现这个性质,我们给它乘上一个常系数c。

4.如果自由变量的个数为1,那么求解/构造过程已经结束。如果自由变量的个数大于等于2,重复步骤3:

注意,自由变量取的第二个特值不能是第一个特值的任意实数倍。

5.Ax=0的解即为步骤3和步骤4求出的两个基向量的线性组合,零空间也由这两个向量的线性组合所构成。

 

对于上述算法步骤3中的“回代”过程,我们除了用传统代数方法进行运算,也可以将这个过程用矩阵语言表示。

进一步简化U的过程如下:

1.向上消元,把主元上方的元素也变为0;

2.通过行变换使主元化为1;

此时的矩阵,我们将其称为简化行阶梯形矩阵R。

由于我们的化简操作,此时的R呈现出一些特殊的形式,忽略0,可以将R切割成rr的单位矩阵I和(n-r)(n-r)的自由矩阵F。

 

在下节课中,我们将借助Ax=0,研究Ax=b。…

线性代数导论 – #7 向量空间的两种构成方式:列空间与零空间

在#6中,我们介绍了向量空间的概念,提及了列空间的定义。本节课中,我们将通过对两种特殊向量空间——列空间与零空间的介绍,理解向量空间的两种构成方式。

首先是列空间C(A)。

C(A)指的是由矩阵A中的列向量的线性组合构成的空间。

C(A)是向量空间吗?显然是,因为这个空间构筑的方式就是向量的线性组合,它“天生”就符合向量空间的定义。

这个向量空间C(A)是Rn的子空间,其中n是维数也即每一个列向量的元素数目也即矩阵A的行数。

C(A)有什么用处呢?C(A)与向量b之间的关系可以说明Ax=b的解的存在性。

在#1我们就已经提及,列空间是我们从几何视角研究“Ax=b”的解x的一个基础性概念。所有的解x,也即对A进行线性组合的系数集合,应该能使组合的结果为预设的b。

换言之,对于特定的A,不是任意的b都能使Ax=b有解。只有当向量b包含于C(A)时,Ax=b才有解。

我自己原有的想法中有一个谬误:对于一个含有m个方程n个未知数的线性方程组,只要m<=n,方程组就一定有解?

显然不一定,各个方程之间不能够“相互冲突”。

翻译为线性代数的语言,A中的每一列必须“线性无关”。

线性相关的定义在高数(上)中已经提到了,不再赘述。从列空间的角度来看,如果去掉某一列之后,列空间不发生变化,也即这一列在构筑列空间的过程中没有“贡献”,那么这一列与其它列中的某一列(可能直接成倍数关系)或某两列(可能为两列的和或其它线性组合)线性相关。

矩阵A中的n列线性相关时,C(A)会比相同列数、线性无关的矩阵的列空间更小(也就是列空间无法充满Rn),换言之,使方程有解的b的数量也就更少(Rn中的b不一定位于子空间C(A)中)。故这种情况下对于任意的b方程组不一定有解。

 

其次是零空间N(A)。

N(A)是所有满足“Ax=0”的向量构成的空间。

N(A)是向量空间吗?我们使用封闭性检验来检查。

从N(A)中任取两个元素向量v和向量w,已知Av=Aw=0。

对于数乘结果kv,Akv=kAV=0,故kv仍在N(A)中;

对于加法结果v+w,A(v+w)=Av+Aw=0,故v+w仍在N(A)中。

综上,N(A)是向量空间。

N(A)使用消元算法求得,具体步骤将在之后的学习中介绍。

 

列空间和零空间都是向量空间。但是,这两种向量空间是从相反的方向生成的:

1.列空间:已有向量的线性衍生,这也是上一课#6中我们的思路;

2.零空间:求解出所有符合线性关系式的向量再进行合并,这将是我们进一步讨论Ax=b的思路之一。

它们又是统一的。所谓的向量空间,可以抽象为通过线性关系联系的集合。符合关系与否,等价于在空间内与否。

事实上,抛开向量空间的限定,所有由向量构成的空间,都具有这两种构成思路。

比如,我们讨论所有满足Ax=b的向量x构成的空间。

它是向量空间吗?如果b不是零向量,那显然不是。

那它是什么空间呢?这个问题也将在之后的学习中介绍。

 

线性代数的学习逐渐进入深水区,附上Prof. Strang的金句供君一笑:…

线性代数导论 – #6 向量空间、列空间、R^n与子空间

让我们回想一下#1的内容,当我们在用向量的新视角看待线性方程组时,曾经提到以“向量的图像”作为代数学与几何学桥梁的想法。

而现在,让我们沿着这个想法深入探索下去,将其作为开启线性代数核心学习的钥匙。

引入新概念:向量空间。

什么是向量空间?我们把向量构成的空间叫做向量空间。

为了简化问题,我们先假定研究的对象是某个元素数为2或3的非零向量。

回归到向量的几何定义,一条有向的线段。这条线段会覆盖从起点到终点的区域。显然,这个区域不足以以“空间”命名。因为空间应具有如下两个特性:

1.包含很多元素;

2.封闭,即其中的元素无法突破空间的边界。

所以我们就从这两个方面开始下手,想办法让这个“区域”里的元素多起来,且成为一个封闭的系统。

从一个向量“衍生”出许多向量的方法是通过某种运算去“生成”。我们会想到运算结果仍然是向量的向量加法和数乘。

通过与任意实数数乘得到的向量,作出图来,都位于初始向量对应的线段所在的直线上。(包括零向量,这条直线通过零点)

任意取这些向量中的两个进行相加,结果也位于这条直线上。

所以我们得到了一个包含元素多又封闭的空间——一条经过原点的直线。这就是我们所说的一种“向量空间”。

 

现在我们将情况一般化。假定构成向量空间的向量为:

1.零向量?

容易想到这个空间就是原点。原点是否符合向量空间的要求呢?我们检验其封闭性。在这个空间内任意取两个元素,显然都是零向量。它们相加或乘以任意倍数的结果都还是零向量,仍包含在原点这个空间内。所以零向量构成的向量空间是原点。

这个检验方法对于原点好像有些无厘头,但是却可以有效地检验更大的疑似向量空间。

2.两个向量?

两个向量任意数乘和相加?换言之,这些运算的结果就是这两个向量的线性组合。假定这两个向量为二元或三元向量,根据数乘向量和向量加法的作图方法,我们可以想见,这所有的线性组合的图像,覆盖的空间是一个平面,且该平面一定经过原点(0乘任何数结果为0)。

反向思考,检验一个空间是否是向量空间的时候,可以尝试以下两种思路证伪:

(1)这个空间不包含原点:不能通过变换系数使得线性组合的元素全为0;

(2)这个空间不对线性运算封闭:写出一个(两个)空间内的向量,通过简单的数乘或加法得到的新向量不在空间内。

比如,请尝试怎样最简洁地说明下图的(2)和(3)中的空间不是向量空间?

3.多个向量?

多个向量和两个向量的情况没有本质的区别。只是我们可以用矩阵的形式去表示这多个向量。在矩阵中,每一列都是一个列向量。列向量的所有线性组合构成的空间,就是一个向量空间。我们给它起了一个别名——列空间。

4.元素数相同的所有向量?

之前的讨论中所使用的向量,都限定为二元或三元,这只是为了方便生活在三维世界中的我们想象和作图表示。可以想见,所有元素数为n的向量,构成的空间应该是整个的n维空间。我们用“Rn”这个记号去表示这个特殊的向量空间。其中R表示这些向量的元素都为实数,n代表向量所包含的元素数量也即空间的维数。

这个看起来很大的空间显然不是满足向量空间要求的最小空间,换言之,在向量空间这个层面上,它也是可分的。类比集合中子集的定义,我们把在这个空间内的与之等大或更小的向量空间称为子空间。举个例子:对于R3,从大到小,它所有可能的子空间有:

(1)自身:定义使然,没有为什么;

(2)过原点的平面:比如两个非零向量的线性组合构成的空间;

(3)过原点的直线:一个非零向量构成的空间;

(4)原点:零向量构成的空间。

当n>3时,我们可以确定的是原点和Rn自身一定是其最小和最大的子空间。至于中间大小的子空间,可能我们就不能用“平面”“直线”这样熟悉的模型去简单地描述了。…

线性代数导论 – #5 矩阵变换之置换与转置

在之前的基础课程中,我们以用于解线性方程组的Gauss消元法为主线,介绍了矩阵语言这一表示法如Ax=b,介绍了一些特殊的矩阵如单位矩阵I、初等矩阵E、上三角矩阵U、下三角矩阵L,学习了矩阵乘法这一矩阵的基本运算,学习了矩阵变换中的逆变换,并运用它们进行了矩阵的LU分解。在真正进入线性代数的大门之前,我们还需要配齐两种实现矩阵变换的工具,就是之前已经提及的置换与转置。

首先是置换。

置换操作,也即行交换,通过左乘置换矩阵P来实现,可以应对解Ax=b过程中主元位为0的情况。

在形式上,P一定是方阵。

在内容上,P为单位矩阵I进行置换后的结果。实际上,I就是一种最基本的置换矩阵(虽然没有实际作用)。

由于行交换的次数不定,交换的对象也不定,对于一个较大的矩阵A,显然有很多可能的置换矩阵。结论是,n阶置换矩阵的总数为n!。

本着一种对“性质优良的特殊矩阵”(Prof. Strang语)的热忱,我们来探究一下置换矩阵P的性质。

出于与I的亲缘关系,在实践中发现P有如下性质:

1.置换矩阵皆可逆;

2.置换矩阵的逆矩阵与转置矩阵相同:

置换矩阵可以通过左乘其转置矩阵变回I,即PTP=I;

3.置换矩阵取逆/转置的结果还是同阶的置换矩阵,同阶的置换矩阵相乘的结果还是同阶的置换矩阵;

 

其次是转置。

转置操作,也即对mn矩阵A进行行列互换,其结果是产生一个nm转置矩阵AT,有两种基本的实现方案:

1.元素交换:(AT)mn=(A)nm;

2.行列交换:AT中第k行为A中第k列。

处于与刚才相同的热忱,我们研究一种AT=A的矩阵,即对称矩阵。

根据转置中的具体操作,显然A为方阵,且关于左上-右下对角线对称的元素相等。

换一个角度,我们也可以把转置当成检验方阵对称性的一种方法。

这种特殊的矩阵比较常见,比如任意矩阵R右乘其转置矩阵RT得到A的就是对称矩阵。…

线性代数导论 – #4 矩阵分解之LU分解的意义、步骤和成立条件

目前我们用于解线性方程组的方法依然是Gauss消元法。在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作,这就默认了对A与b的操作数是相等的且每换一个b就要重复一遍对A的操作。

然而,在实际情况中,右侧向量b经常发生变化。而且,研究发现,Gauss消元法中,对n阶矩阵A的消元操作数正比于n3,而对右侧向量b的回代操作(包括行变换和恢复成代数方程的形式)数仅仅正比于n2。(操作次数上的相对大小可以根据A与b元素数量的差距进行猜想)

在b不变时,两种算法上的复杂度差距不明显,选择同步操作更为方便直观。但是,当b变化时,如果我们将对A和对b的操作进行分隔的话,只需对A完成一次完整的消元操作,再对b进行回代操作。这样可以大大减少操作的次数。

所以,在b变化时,我们先对A单独进行分解操作。其中的一种分解方法是LU分解。这种方法的优势在于分解结果中L(上三角矩阵)和U(下三角矩阵)都是三角形矩阵,后续运算比较简便。而且二者恰好相配,使用计算机进行运算时可以存储在一个数组中,节约存储空间。

利用A的LU分解解线性方程组的过程为将Ax=b等价变形成(LU)x=b,根据结合律有L(Ux)=b,再解Ly=b中的y,最后解Ux=y得到线性方程组的解。

 

LU分解的步骤如下:

1.求U留E:沿用Gauss消元法,将A化为U,不同的是,变换过程中左边乘上的每一个E都要记录下来;

2.逆E为L:将用到的E各自求逆(取含变换操作的元素的相反数)再逆序相乘(将消元乘数按照原来的位置写到一起,再补齐左上-右下对角线上的1和对角线上方的0),乘积即为L:

E求逆的简便方法和乘积求逆的运算法则在#3中已经提到。

逆序相乘等价于归置消元乘数于下三角矩阵中是一个常用结论,记忆使用可以简化运算。

乘积为L的依据是:假设E为所有E的乘积,EA=U可变形为E-1EA=E-1U=IA=A=LU,其中L=E-1

 

什么样的矩阵才能进行LU分解?

具体判定方法没有给出。不过根据分解的过程,我们可以推定消元过程中不进行行交换的矩阵才能进行LU分解,即默认主元位(k行k列)上的元素均非0。

 

如果必须进行行交换怎么办?

Prof. Strang引入了置换的概念,针对n阶矩阵,其置换矩阵群含有n!个置换矩阵P也即可能的置换操作。这个矩阵群具有许多特殊的性质,比如P-1=PT,P之间的乘积仍属于该矩阵群。

置换将在#5中进行详细介绍。…

线性代数导论 – #3 矩阵乘法、矩阵变换之逆

在#3中,对#2里涉及的高斯消元法的矩阵语言描述中的矩阵乘法和逆作了深入的介绍,介绍的基本思路都是介绍了成立的前提条件和求法。

首先是矩阵乘法。

能够相乘的矩阵不一定是方阵,只要“相互匹配”即可。

匹配条件可以从运算的方法倒推,结论是能够和mn矩阵A相乘的矩阵B,其行数一定要等于A的列数n,即B为np矩阵。而运算的结果是m*p矩阵C。

矩阵乘法有这几种方法,根据待求对象选择恰当的方法以减少运算量:

1.元素法(指定行向量*指定列向量):矩阵C中m行n列的元素等于矩阵A中行向量m点乘矩阵B中列向量n;

2.列方法(矩阵*列向量):把B看成p个列向量的集合,用每一个列向量去乘矩阵A,得到的线性组合从左到右排列在矩阵C中;

(所以每个列向量的元素数也即矩阵b行数一定要与矩阵A列数相同,而与p个列向量相乘得到的矩阵C就有p列)

3.行方法(行向量*矩阵):把A看成m个行向量的集合,用每一个行向量去乘矩阵B,得到的线性组合从上到下排列的矩阵C中;

(所以待组合的行向量个数也即矩阵b行数一定要与矩阵A列数相同,而与m个行向量相乘得到的矩阵C就有m行)

4.矩阵法(行向量对应列向量):矩阵C等于A的行向量k乘B的列向量k所得mp矩阵Ci的和;

5.分块法(指定矩阵块行*指定矩阵块列):A和B均为方阵时,分成相同数量的方矩阵块,C中m行n列的矩阵块等于A中矩阵块行向量m“点乘”B中矩阵块列向量B。

这些方法的核心思想都是线性组合。换言之,任何一个线性的关系式,也即线性的方程,我们都可以和#1中改写线性方程组一样,将关系式改写为矩阵乘积即“Ax=b”的形式,用A表示系数,用x表示元,用b表示组合的结果。

请牢记这个线性代数中的基本思路:矩阵是一种语言,一种在表示线性关系时更加高效的语言。任何线性关系都可以并且应该想到用矩阵的形式表达。

通过该思路,我们可以套用某些已知的矩阵性质解决建立在线性关系式上的问题。

比如,请思考怎样最简洁地说明下图中的(1)是一个子空间?

 

按照研究运算的一般套路,为了使运算更加灵活,我们需要研究矩阵乘法满足的运算律。

1.交换律?

不满足。依据矩阵乘法成立的特殊条件显然有不满足的情况。

2.结合律?

满足。可以变换括号的位置。

3.交换律?

满足。可以拆括号,由大化小。

 

其次是逆。

什么是逆?它是我们介绍的第一种矩阵变换。从数量关系上来说,可以类比为矩阵的倒数。

根据矩阵乘法的成立条件,矩阵的逆可能有左逆和右逆之分,左逆与右逆形状不同。为了简化讨论,我们研究左逆和右逆相同的方阵。

如何判定一个方阵A是否可逆?应从定义即方阵A与它的逆进行矩阵乘法得到单位矩阵I的关系出发。

有这几种思路,依据待判定方阵的特征选择:

1.系统方法:

(1)特征值:“行列式”,将在以后的课程中讲到;

(2)直接求逆:通过G-J消元法直接求逆,讨论求逆过程及逆的表达式的成立性;

2.特殊方法:

(1)代数:借助矩阵乘法中的列方法,我们可以把单位矩阵理解为方阵A中每一列的线性组合的有序集合。如果A的每一列加权后无法得到单位矩阵中的列,比如A中每一列成倍数关系,则A不可逆;…