« 1 2 3 4 5 6 7 8 9 10 11 »

从不同的角度看矩阵的行秩与列秩——兼论如何学好线性代数

线性代数中,有那么几个神秘又神奇的东西,总是让初学它的人琢磨不透,无法理解,其中就有矩阵的行向量和列向量的关系,为什么一个矩阵的行向量里有多少个线性无关的向量,列向量里就一定也有多少个线性无关的向量呢?或者考虑稍微简单一点的问题,一个方阵,为什么行向量线性无关或线性相关列向量就一定也线性无关或相关呢?行秩为何等于列秩?
这本来应该是一个基本又简单的事实。但是,请回忆一下你当初初学线性代数时的内容编排顺序,是怎么引入这个问题的,当时又是怎样解决这个问题的?
传统的教材编写思路是从线性方程组开始整个线性代数话题的引入,这个过程中定义行列式和矩阵,用n元数组引入向量,线性相关和无关等概念,讨论解存在的条件,解的结构,等等。总之,一切以方程组为核心,给人的感觉就是线性代数就是方程组的理论,一切讨论的目的都是为了解决小小的方程组问题。
在这个过程中,有一个矩阵行秩等于列秩的命题,此时学生只了解方程组理论和行列式,因此这时对这个问题的解释当然也无法离开方程组或行列式。下面简述两个典型的教材中的证明方法:

第一个证明来自陈志杰《高等代数与解析几何》。
证明:首先,矩阵的初等行变换不改变矩阵的行秩,初等列变换不改变矩阵的列秩。这是由向量组的初等变换不改变向量组的线性相关或无关性保证的,即将某个向量乘以非零的倍数、将某个向量加到另一个向量上,都不改变向量组的线性相关或无关性。
接着证明矩阵的初等行变换不改变矩阵的列秩。
设A是m*n阶矩阵,任意从A的n个列向量中选取k个列向量a1,a2,...,ak,它们线性无关的充要条件是线性方程组a1x1+a2x2+...+akxk=0只有零解。而对矩阵A进行初等行变换不改变此方程组的解,因此不改变这k个列向量的线性相关或无关性。这说明A的列向量的秩在矩阵的初等行变换中不变。同理矩阵的初等列变换不改变矩阵的行秩。
接下来,可以把A经过初等行变换和初等列变为只有对角线上有1或0,其它位置都为0的矩阵,在这个过程中行秩和列秩都不改变,从这个矩阵中看出行秩等于列秩,因此原来的矩阵行秩也等于列秩。

第二个证明来自北大数学系几何与代数教研室前代数小组编《高等代数》
证明:考虑线性方程组AX=0,首先证明如果未知数的个数超过A的行秩,那么它有非零解。设m*n阶矩阵A的行秩为r,考虑方程组AX=0,它由m个方程n个未知数组成。从A的行向量中选取r个线性无关的行向量,重新组合成矩阵B,那么方程组AX=0和BX=0同解。这时,如果B的列数大于行数,那么方程组BX=0必有非零解,从而AX=0也有非零解。
接着证明行秩等于列秩。设m*n阶矩阵A的行秩为r,列秩为s。考虑A的任意r+1个列向量组成的矩阵C,因为C的行秩不大于r(因为C的行向量都是A的行向量的一部分分量组成的),所以CX=0有非零解,这说明这r+1个列向量线性相关。所以A的列秩最大为r,即s<=r。同理可证r<=s,因此s=r。

有了行秩等于列秩的性质,完全可以用行秩或列秩定义矩阵的秩了。编写教材的人和老师们都认为,只要能够顺利定义出矩阵的秩,这个证明就足以满足初学时的需要了,既没有必要又没有条件再将它深入地挖掘下去。

但是它仍然让我困惑,即使把书上的这个证明看得明明白白,也不理解为什么行秩等于列秩。因为向量是个几何的概念,现在这个证明中看不出一点几何上向量的影子,这两个例子都依赖于线性方程组理论,都离不开高斯消元法,都是代数上的推导。虽然从代数上推导出了这个结果,但是在几何上我依然无法接受这个结果。矩阵的行向量和列向量“从图形上”到底是什么关系?可不可以让我一下子就能看出来它们的秩是相等的?尽管经过了行列变换之后行列秩相等是显然的,但这个过程中却把原来的行列向量给变得面目全非了。

更有甚者,有些教材上竟然用矩阵的子式和行列式理论推导行秩等于列秩,由于这种证明过于复杂,这里就不列出了。

直到最近的一次偶然机会,又让我想起了这个问题。一开始,发现它和对偶空间与对偶映射有关系。
记得当初学习线性代数时,直到最后才接触了一些有关对偶空间和对偶映射的知识,教材还写得十分抽象,以至于我们都囫囵吞枣地过来了,根本没有什么印象。后来的泛函,因为高等代数理解不深人,对泛函也没有留下什么印象。最近有同事让我讲线性代数,有很多次问我关于矩阵转置的意义的问题。他曾经学习线性代数时对很多问题不理解,其中就有矩阵转置到底对应几何上的什么东西,为什么要转置?其实我也没考虑过这个问题,只知道这是代数的特殊需要,当需要把行向量变成列向量的时候就需要考虑转置,它完全是代数上的处理方式。至于在几何上代表什么意义,我也曾困惑过,但一直没考虑清楚。然而现在比大一那个时候多了一个学习的更加有效的途径,那就是网络。在wiki百科中,我查到了一个观点:

在标准正交基底下,如果一个线性映射对应于矩阵A,那么A的转置恰好对应这个线性映射的转置映射,A的共轭转置恰好对应这个线性映射的对偶映射。

在有限维空间中对偶映射还有一个更直观的定义:
 T 是从  U V 的线性映射,则  T 的对偶映射  T^* 是从  V U 的满足  \langle Tu,v\rangle=\langle u,T^*v\rangle 的线性映射。
这是很好理解的,即使不知道什么是对偶空间及对偶映射,单单从矩阵乘法的性质中也很容易看出A和A的共轭转置之间的这种关系。

这样就把A的共轭转置和A之间的关系赋予了几何的意义,因为内积正好包含向量的角度信息,并且当一组非零向量两两内积为0时,它们线性无关。
A和A的共轭转置的列向量的秩分别对应于 T 和 T* 的值域的维度,能不能就此证明它们相等?从而至少可以证明实数矩阵行秩等于列秩。这就是下面的:

定理1:线性映射  T 的值域和其对偶映射  T^* 的值域有相同的维数。
证明:设 T 是从 U 到 V 的线性映射,则 T 的对偶映射 T* 是从 V 到 U 的线性映射。设 T 与 T* 的值域的维数分别为r,s,假设s<r,则在 T* 值域中可以找一组基底:
 T^*v_1,T^*v_2,\dots,T^*v_s,考虑  TT^*v_1,TT^*v_2,\dots,TT^*v_s,这个向量组的秩≤s<r,因此可以在  T 的值域中(维数为r)找到  v_{s+1}=Tu_{s+1}\not=0 使得  \langle v_{s+1},TT^*v_i\rangle=\langle T^*v_{s+1},T^*v_i\rangle=0, i=1,2,\dots,s。又因为  \langle u_{s+1},T^*Tu_{s+1}\rangle=\langle Tu_{s+1},Tu_{s+1}\rangle\not=0 T^*Tu_{s+1}\not=0 T^*v_{s+1}\not=0。这样我们在  T^* 的值域中找到了与向量  T^*v_1,T^*v_2,\dots,T^*v_s 都垂直的非零向量,与这个向量组是  T^* 值域的基底矛盾。因此s≥r。
同理可证s≤r。故s=r。证毕。

这样,A 与 A 的共轭转置的列秩相等,从而实数矩阵的行秩等于列秩。
为了把它应用于证明复数矩阵行秩与列秩相等,还需要下面的命题:

命题1:若复数值向量a1,a2,...,an线性无关,那么他们的共轭向量也线性无关。
证明:以 a1,a2,...,an 为系数矩阵的方程组 k1a1+k2a2+...+knan=0 两边取共轭即得到一个以a1,a2,...,an 的共轭为系数的线性方程组,这两个方程组同时有或没有非零解。证毕。

这样就彻底完全地证明出了矩阵的行秩与列秩相等。这个证明的思路中就明显地带有几何的启示,因此我觉得它更能让我看到矩阵行向量和列向量的本质。然而虽然这个证明带有很强的几何色彩,但终究还是觉得有些抽象,还是没有道出行列向量之间的关系来。

经过对这个问题持续的思考,和对方程组 AX=0 从不同的角度去解释,发现如果我们竖着看 AX,我们看到一个线性映射,它列向量的秩是它值域的维数;然而如果我们横着看 AX=0,又可得到 A 的每个行向量与 X 的内积是0(这里以实数矩阵为例,至于复数矩阵则可以利用上面的“命题1”),也就是说,A的每个行向量和 AX=0 的解都垂直,用映射的观点说,就是 A 的每个行向量都在线性映射的零空间的正交补空间中。又 AX=0 的所有解的集合(零空间)是垂直于 A 的每个行向量的向量构成的集合,那么零空间和行空间应该互为正交补空间,它们的维数之和是定义域的维数。那么事情就清楚了,根据秩-零度定理,dim rangeT+dim nullT是 T 定义域的维数,而行空间维数又与零空间维数互补,因此行空间维数等于值域维数,即行秩等于列秩。

应该说,这才是行向量和列向量真正的本质关系,可惜的是,直到毕业的三年多之后我才自己发现了这个关系。

其实,如果考虑对偶映射,也可以轻而易举地得出结论:T* 的值域恰是 T 的零空间的正交补。根据秩-零度定理也立即可以得出 T* 和 T 值域维数相等。前面在证明“定理1”时没有用到它们值域和零空间的关系还有秩-零度定理,这里用了这两个定理之后,分析过程其实和上段分析 AX=0 方程组的过程本质上是一样的。

那时在网络上还查找到了一个利用了矩阵乘积的现代观点证明行秩等于列秩的文章,是在台湾博客“线代启示录”中看到的,抄录如下(注意在台湾,把竖着的叫行,把横着的叫列,与我们恰好相反):

假設  m\times n 階矩陣  A 的行秩為  c,列秩為  r。可知  A 包含  c m---維線性獨立的行向量,它們足以擴張  A 的行空間。將這些行向量收集起來組成一個  m\times c 階矩陣  B,那麼  A 的任何一個行  \mathbf{a}_j (j=1,2,\ldots,n) 都可以唯一表示為  B 的行向量  \mathbf{b}_1,\mathbf{b}_2,\ldots,\mathbf{b}_c 之線性組合,如下:

 \mathbf{a}_j=d_{1j}\mathbf{b}_1+d_{2j}\mathbf{b}_2+\cdots+d_{cj}\mathbf{b}_c

 =\begin{bmatrix}\mathbf{b}_1&\mathbf{b}_2&\cdots&\mathbf{b}_c\end{bmatrix}\begin{bmatrix}d_{1j}\\d_{2j}\\\vdots\\d_{cj}\end{bmatrix}=B\mathbf{d}_j

將這  n 個式子的線性組合權重合併為一個  c\times n 階矩陣  D=[d_{ij}] ,並利用以行為計算單元的矩陣乘法規則,就有

 A=\begin{bmatrix}\mathbf{a}_1&\mathbf{a}_2&\cdots&\mathbf{a}_n\end{bmatrix}=B\begin{bmatrix}\mathbf{d}_1&\mathbf{d}_2&\cdots&\mathbf{d}_n\end{bmatrix}=BD

接著再考慮矩陣 A 的第  i 列,以  \mathrm{row}_i(A) 表示,利用以列為計算單元的矩陣乘法規則,於是有

 \mathrm{row}_{i}(A)=\mathrm{row}_{i}(BD)=b_{i1}\mathrm{row}_1(D)+b_{i2}\mathrm{row}_2(D)+\cdots+b_{ic}\mathrm{row}_{c}(D)

矩陣  A 的每一列都可以寫為 D 的列向量之線性組合,因此  A 的列空間維度不大於 D 的列向量總數,即  r\le c,也就是說  A 的列空間維度不大於  A 的行空間維度。

運用同樣的推論方式於  A^T,可推知  A^T 的列空間維度不大於  A^T 的行空間維度,但  A^T 的列空間即為 A 的行空間而  A^T 的行空間就是  A 的列空間,得知  c\le r。綜合以上結果,證得  r=c,矩陣的行秩等於列秩。這個證明方法表面看似平凡無奇,但它只利用矩陣乘法運算便將幾個重要的線性代數概念——線性組合、基底和擴張連結在一起,非常值得初學者細細品味。

这个证明虽然也是代数上的分析,但其巧妙的让人称奇的地方,就是把一个矩阵分解成了两个矩阵的乘积,其中左边的因子是列慢秩的,然后利用对两个矩阵乘积的不同的解释,把左面的列秩(也就是A的列秩)和右面的行秩联系起来了。

本来,有关矩阵列秩与行秩关系的问题讨论到这里也可以算是比较圆满了。但是,在写这篇文章的时候,又无意间提出下面的一个问题:

为什么如果矩阵A只有两行,哪怕它有100列,它的列向量的秩也最多是2?

现在来看,这是个非常简单的问题,因为它的100个列向量都是二维的向量,这些二维向量再多,也至多可以找出两个线性无关的向量。这是由向量空间的维数定理保证的:“有限维向量空间中任何极大线性无关组包含向量个数相同。”因此,一个矩阵,它的列秩不超过行数,行秩不超过列数。
那么,为了完成“列秩等于行秩”的证明,只需把列秩和行秩的大小范围估计得更精确一些,从“列秩小于等于行数”、“行秩小于等于列数”精确到“列秩小于等于行秩”、“行秩小于等于列秩”。我们设想,如果一个 m*n 阶矩阵,它的行秩为 r,那么它的列向量虽然表面上看每个都是 m 维的,但实际上这些 m 维向量被限制在了一个 r 维的子空间中,实际属于 r 维向量。为了看清楚这一点,我们可以有两条思路:
第一条,既然 A 的行空间维数为 r,那么可以找到 r 个线性无关的行向量为基底,矩阵的 m 个行向量都可以用这 r 个向量线性表示,用矩阵的语言就是

 A_{m\times n}=B_{m\times r}D_{r\times n}

其中 D 就是从 A 的行向量中选取的线性无关行向量,B 的每一行是 A 的行向量按D中行向量线性表示的系数(坐标)。那么,接下来还是两条路:第一,按维数定理,D 的列秩不超过其行数 r,且 A 的值域维数不大于 D 的值域维数(因为 A 的维数就是把 D 的值域再用 B 映射到 m 维空间,值域的维数是递减的),因此 A 的列秩不大于 r,这实质上是北大《线性代数》中的证明;第二,B 的列秩不超过 B 的列数 r,这样就变成了“线代启示录”的证明,因此“线代启示录”上的证明思路也就是如此。
第二条,我们可以实际地找出  A 列空间的基底。因为  A 行秩为  r,即可以选取  r 个行向量  a_1,a_2,\dots,a_r,使得其它行向量都可以用这  r 个行向量线性表示,不妨记为  a_{r+i}=f_i(a_1,a_2,\dots,a_r),那么就代表  A 的列向量的坐标都具有如下形式:

 \begin{bmatrix}x_1\\x_2\\\vdots\\x_r\\f_1(x_1,x_2,\dots,x_r)\\\vdots\\f_{m-r}(x_1,x_2,\dots,x_r)\end{bmatrix}

显然只有前 r 个坐标是可以自由变化的,这样的向量的全体构成一个子空间,它的基底是清楚的。因此,这是个 r 维子空间。根据维数定理,这样的向量不管多少个,秩不大于r。

可见,一个简单的事实,可以从多种角度进行的解释,但有些看似动机不同的解释往往实质上又相同,它们之间也有着千丝万缕的联系。因为线性代数的这个特点,使得不同的线性代数的教材的写法有很大的不同。同样一个事实,既可以从线性映射的角度去解释,又可以从矩阵分析的角度解释,还可以从线性方程组,或行列式角度去证明。线性代数教材的编写其实很随意,既可以像北大版那样把线性方程组作为基础,其它诸如线性变换、维数定理等等内容都通过方程组理论来证明,也可以像《Linear Algebra Done Right》那样完全地从抽象的向量空间和线性映射的角度分析。它们动机虽然不同但是要认识的对象是同构的。

但是,如果当初满足于这个定理的书本上的证明,我是不可能对它挖掘得这么深,也不可能认识到这些东西的。这里我还是要对以北大版《高等代数》为代表的教材提一些意见。

可能大部分人都认为,线性方程组是线性代数中最易懂最易理解的部分,学生又有中学解多元一次方程组的基础知识,线性方程组又可以引申出线性代数的诸多内容,因此是最适合用于大学一年级学生入线代之门的内容。但是这样做有两个问题:

一个是如果只提方程组,学生无法想象它的几何形象,学生学习时头脑中形成的往往只是变动的符号,不利于深入理解线性代数,更不利于发挥想象力去主动发现知识。如果说当学生学到线性空间、线性变换的时候自然会学习到这些几何观念,那么在线性方程组之后,线性空间和线性变换之前,还要学习矩阵理论,同样是没有几何直观,并且比方程组更难理解,到了线性空间的时候学生已经云里雾里了,哪里还有信心去学习接下来的东西?李炯生版《线性代数》的前言部分说,“研究线性空间以及线性空间关于线性变换的分解即构成了线性代数的几何理论,而研究短阵在各种关系下的分类问题则是线性代数的代数理论。”那么到底是先代数后几何,还是先几何后代数,还是二者同时进行?如果先代数后几何,就像在没有学习平面几何的时候学习解析几何,并且要预先学习曲线方程的性质,不见曲线只见方程,等把方程的性质在代数上讨论清楚了,再带你认识它们实质上的几何形象,再用这些方程的性质简单推导出几何的性质。但这是一个非常糟糕的学习方式。更糟糕的是一些理工科专业线性代数学得更浅,甚至只学到矩阵部分,只记住了矩阵的运算等莫名奇妙的符号在头脑中搬来搬去,至于为什么那么计算,学过之后考高分的学生也不知道。这里有孟岩的三篇csdn博文为证,尤其是博文开头几段话,道出了一般理工科学生的疑问。
《理解矩阵(一)》
《理解矩阵(二)》
《理解矩阵(三)》
另一个问题是,这样的组织缺少发展理论框架的动机,为什么要引入线性相关,线性无关,为什么要讨论矩阵?为什么有了消元法还要讨论行列式和 Cramer 法则?如果都是以解方程为目的,这些内容统统没有动机,只要一个消元法,最后能够写出通解形式,就够了。似乎矩阵、向量空间等内容都是方程组问题生发出来的,研究它们又有什么用途?这些问题开始不讲清楚,学生厌学,到后续课程真正用到这些知识的时候后悔莫及。

因此,我主张不论是编写教材,还是老师讲授,学生学习,都应该起点底,观点高,让学生可以从各个不同方向去“围攻”一个问题,从各种不同的角度去看待一个知识,即使只是为了讲代数,几何方面的直观思想和动机也要讲清楚,甚至这些更为重要。不妨在讲解线性方程组的时候就开始讲讲方程组中蕴含的向量空间、线性变换等高级内容的道理,即不光讲高斯消元法等方程的传统内容,还要用线性变换那样的几何观点解释方程组解的结构等等问题,并用三维的几何图形(不妨用电脑中的数学软件或flash动画,至少是图片)来展示线性代数中那些概念背后的几何形象,使学生一开始就有丰富的几何代数经验,一开始就发现这部分数学的魅力。

子空间和的维数定理与容斥原理

两个有限维子空间的和的维数定理:
dim(U1+U2)=dimU1+dimU2-dim(U1 ∩ U2)
两个有限集合元素个数的容斥原理:
card(U1∪U2)=cardU1+cardU2-card(U1 ∩ U2)

子空间的和类比于集合的并,那么维数定理和容斥原理形式上及其相似。为什么会有如此的巧合?
可以看到子空间的基底构成的集合在维数定理中扮演一个很重要的转换作用:选择U1 ∩ U2的基底并分别扩充到U1和U2的基底之后,设U1和U2的基底构成的集合分别为A1和A2,那么U1+U2, U1 ∩ U2的基底就分别对应A1∪A2和A1∩ A2。因此两个公式相似也就不足为奇。

那么是否可以把维数定理推广到多个子空间的情形呢?考虑三个子空间的情形,类比于三个集合的容斥原理
card(U1∪U2∪U3)=cardU1+cardU2+cardU3-card(U1 ∩ U2)-card(U2 ∩ U3)-card(U1 ∩ U3)+card(U1 ∩ U2∩ U3)
是否也有类似的三个子空间和的维数定理
dim(U1+U2+U3)=dimU1+dimU2+dimU3-dim(U1 ∩ U2)-dim(U2 ∩ U3)-dim(U1 ∩ U3)+dim(U1 ∩ U2∩ U3)
成立呢?

循着它们之间的类比关系,我们可以先选取U1 ∩ U2∩ U3的基底,然后分别扩充到U1 ∩ U2、U2 ∩ U3和U1 ∩ U3的基底,再接着分别在U1、U2、U3中扩充成U1、U2、U3各自的基底,这种类比关系似乎可以轻松延续。
沿着另一条路似乎也可以到达目的地:即通过将U1+U2+U3写成(U1+U2)+U3,并应用两个子空间的维数定理一步一步地证明三个子空间的情形。现在先看看这条路:
dim(U1+U2+U3)=dim(U1+U2)+dimU3-dim((U1+U2)∩ U3)=dimU1+dimU2+dimU3-dim(U1 ∩ U2)-dim((U1+U2)∩ U3)
如果类比容斥原理的式子能够成立,应该有
dim((U1+U2)∩ U3)=dim(U1 ∩ U3)+dim(U2 ∩ U3)-dim(U1 ∩ U2∩ U3)
会有这样的式子成立吗?考虑平面上两条坐标轴,和一条过原点但不与坐标轴重合的直线,这三个一维子空间任意两个的直和是整个二维空间,则
dim((U1+U2)∩ U3)=1,dim(U1 ∩ U3)+dim(U2 ∩ U3)-dim(U1 ∩ U2∩ U3)=0,
显然上面提出的三个子空间的维数猜想不成立。

为什么这时这种类比就不成功?我们先前的想法,先选取U1 ∩ U2∩ U3的基底,然后分别扩充到U1 ∩ U2、U2 ∩ U3和U1 ∩ U3的基底,再接着分别在U1、U2、U3中扩充成U1、U2、U3各自的基底,为什么这时得到的这些向量就不是U1+U2+U3的基底了?

参见《Linear Algebra Done Right第一章注记和部分习题》注记中提到的问题,V1,V2,...,Vn两两相交于{0},即基底的集合两两相交为空集并不能保证它们的和是直和,这个只有n=2时是个特例,因此只有两个子空间的维数定理,且可以与集合基数的容斥原理作类比,三个以上子空间的情况就变得更复杂。

但是,我们依然可以证明三个子空间和的维数不等式:

\begin{aligned}\textrm{dim}(U_1+U_2+U_3)\leq&\textrm{dim}U_1+\textrm{dim}U_2+\textrm{dim}U_3-\textrm{dim}(U_1\cap U_2)-\textrm{dim}(U_2\cap U_3)\\&-\textrm{dim}(U_1\cap U_3)+\textrm{dim}(U_1\cap U_2\cap U_3)\end{aligned}

可以从上面讨论过的两个方向达到证明,但这里只列举一个证明。

证明:首先证明 U1∩U3+U2∩U3 是 (U1+U2)∩ U3 的子空间,从而 dim((U1+U2)∩ U3) ≥ dim(U1∩U3+U2∩U3)
设 v∈U1∩U3+U2∩U3,则存在 U1∩U3 中的元素 u 和 U2∩U3 中的元素 w 使得 v=u+w
而u+w∈U1+U2且u+w∈U3,因此 v=u+w∈(U1+U2)∩ U3
接下来就可以证明结论:
dim(U1+U2+U3)
= dimU1+dimU2+dimU3-dim(U1 ∩ U2)-dim((U1+U2)∩ U3)
≤ dimU1+dimU2+dimU3-dim(U1 ∩ U2)-dim(U1∩U3+U2∩U3)
= dimU1+dimU2+dimU3-dim(U1 ∩ U2)-dim(U1∩U3)-dim(U2∩U3)+dim(U1∩U2∩U3)
证毕。

容斥原理不仅可以用交集计算并集中元素的个数,还可以通过并集反过来计算交集的元素个数。例如:
card(U1 ∩ U2∩ U3) =cardU1+cardU2+cardU3-card(U1∪U2)-card(U2∪U3)-card(U1∪U3)+card(U1∪U2∪U3)
此公式和并集的容斥原理之间可以用余集的德-摩根定律进行转换。

那么有了三个子空间和的维数不等式,我们是否也可以转换出关于三个子空间交集维数的某个不等式呢?我们需要有可以与集合的余集相类比的子空间的关系。
如果你了解内积空间中子空间的正交补空间的概念,那么用正交补与有限集合的余集做类比应该是一个自然的想法。

一个子空间  U 的正交补空间  U^\perp 是垂直于U中所有向量的向量构成的子空间。容易证明,正交补满足如下性质:

1) {U^\perp}^\perp=U
2)  (U+V)^\perp =U^\perp \cap V^\perp
3)  (U\cap V)^\perp =U^\perp + V^\perp
4)  \textrm{dim}U^\perp=n-\textrm{dim}U

证明:现只证明2)和3):对于2),因  (U+V)\supset U,故  (U+V)^\perp\subset U^\perp。同理有  (U+V)^\perp\subset V^\perp。因此  (U+V)^\perp\subset U^\perp\cap V^\perp
另一方向, \forall w\in U^\perp \cap V^\perp, \forall u+v\in U+V, w\perp u, w\perp v,因此  w\perp (u+v),即  w\in (U+V)^\perp,因此  (U+V)^\perp\supset U^\perp\cap V^\perp。故2)成立。
对于3),只需在2)中分别用U和V的正交补代替U和V,两边取正交补,再利用1)式即得证。

那么利用正交补(注意有限维向量空间都同构于某个内积空间)的性质,我们可以把上面的三个子空间的维数不等式翻转,得到它的对偶不等式:

\begin{aligned}\textrm{dim}(U_1\cap U_2\cap U_3)\geq&\textrm{dim}U_1+\textrm{dim}U_2+\textrm{dim}U_3-\textrm{dim}(U_1+U_2)-\textrm{dim}(U_2+U_3)\\&-\textrm{dim}(U_1+U_3)+\textrm{dim}(U_1+U_2+U_3)\end{aligned}


证明:

\begin{aligned}\textrm{dim}(U_1\cap U_2\cap U_3)=&n-\textrm{dim}(U_1\cap U_2\cap U_3)^\perp\\=&n-\textrm{dim}(U_1^\perp+U_1^\perp+U_3^\perp)\\\geq&n-\textrm{dim}U_1^\perp-\textrm{dim}U_2^\perp-\textrm{dim}U_3^\perp\\&+\textrm{dim}U_1^\perp\cap U_2^\perp+\textrm{dim}U_2^\perp\cap U_3^\perp\\ &+\textrm{dim}U_1^\perp\cap U_3^\perp-\textrm{dim}U_1^\perp\cap U_2^\perp\cap U_3^\perp\\=&\textrm{dim}U_1+\textrm{dim}U_2+\textrm{dim}U_3-\textrm{dim}(U_1+U_2)\\&-\textrm{dim}(U_2+U_3)-\textrm{dim}(U_1+U_3)+\textrm{dim}(U_1+U_2+U_3) \end{aligned}

可惜的是,即使是这样的不等式,也不具备一般性,当子空间个数增加到四个之后,这样的不等式也不一定成立了。
设想三维空间的三个坐标平面,外加一个过原点但不过任何坐标轴的平面,这四个平面两两相交于一条直线,但任意三个平面只相交于原点。因此,有:
dim(U1+U2+U3+U4)=3
dimU1+dimU2+dimU3+dimU4-dim(U1 ∩ U2)-dim(U2 ∩ U3)-dim(U1 ∩ U3)-dim(U1 ∩ U4)-dim(U2 ∩ U4)-dim(U3 ∩ U4)+dim(U1 ∩ U2∩ U3)+...=2
所以关于维数的容斥原理或"容斥不等式"不适用于多于三个的子空间。

Linear Algebra Done Right第二章注记和部分习题

注记部分:

1 线性无关和子空间直和的联系

线性无关概念和子空间直和的概念有着很密切的联系,如下:

1)二者的概念同源,都是要将一个大的空间的向量唯一地分解成若干小的子空间中向量的和。
2)v1,v2,...,vn线性无关的充要条件是v1,v2,...,vn都不等于0且span(v1),span(v2),...,span(vn)的和是直和。
3)设有若干组向量:向量组u1,u2,...,ur,向量组v1,v2,...,vs,和向量组w1,w2,...,wt,每一组向量都线性无关,把它们放在一起还是线性无关吗?这显然是不一定的。但是怎样才能保证把它们放在一起也线性无关呢?有以下两个结果:
a)向量组u1,u2,...,ur,向量组v1,v2,...,vs,和向量组w1,w2,...,wt,每一组向量都线性无关,则向量组u1,...,ur,v1,...,vs,w1,...,wt线性无关当且仅当span(u1,u2,...,ur)+span(v1,v2,...,vs)+span(w1,w2,...,wt)是直和。
b)若U1+U2+...+Un是直和,那么分别从U1,U2,...,Un每个子空间中任意选出一组线性无关的向量,它们整体还是线性无关的。
可以说a)就是直和空间的维数定理和逆定理。但利用零向量的唯一分解性质也可以很容易地证明上述两个命题。

2 33页定理2.18(dim(U1 + U2) = dimU1 + dimU2 − dim(U1 ∩ U2))的证明思路问题

此定理很自然的思路是寻找各个子空间基底所包含向量的个数关系。因此前半部分比较自然,寻找U1 ∩ U2的基底u1, . . . , um,添加向量v1, . . . , vj使u1, . . . , um,v1, . . . , vj成为U1的基底,再添加w1, . . . , wk使u1, . . . , um,w1, . . . , wk成为U2的基底。
但在证明(u1, . . . , um, v1, . . . , vj,w1, . . . , wk)线性无关的过程中,设
a1u1 + ··· + amum + b1v1 + ··· + bjvj + c1w1 +· · ·+ckwk = 0
之后,怎么能想到要把c1w1 +· · ·+ckwk 和其它向量分别放在等式两边呢?

有了上一条注记中的两个命题a)和b),这个思路就比较明朗,证明多组线性无关的向量放在一起也是线性无关的,无非就是证明span(w1,w2,...,wk)+span(u1,u2,...,um)+span(v1,v2,...,vj)是直和。因为已知w1,...,wk,u1,...,um线性无关,只需证明span(w1,w2,...,wk,u1,u2,...,um) ∩span(v1,v2,...,vj)={0}(见第一章注记)
这就是把c1w1 +· · ·+ckwk放在等式另一边的证明思路。

如果一个人不知道此定理,现在要着手证明这个定理,他会是怎样的思路呢?
首先,他会先考虑两个子空间交于{0}的简单情形,并证明直和的维数等于维数的和,证法见上条评注中的命题a)。接着,考虑两个子空间的交集维数大于等于1的情形,他会考虑把U1+U2分解成几个子空间的直和,很自然的想法就是考虑U1 ∩ U2、U1去掉U1 ∩ U2的那一部分,和U2去掉U1 ∩ U2的那一部分应该可以构成直和(即找两个子空间W,V使得W+U1 ∩ U2=U1, V+U1 ∩ U2=U2,那么应有W⊕U1 ∩ U2⊕V=U1+U2)。
这就是整个证明的思路。证明过后又发现没有必要事先单独证明直和的情形了,因此把直和的维数定理作为此定理的推论。

3 维数定理和有限集合基数定理(容斥原理)

这部分论述见文章《子空间和的维数定理与容斥原理》

部分习题解答:

(略)

Linear Algebra Done Right第一章注记和部分习题

注记部分:

有关子空间和与直和的讨论:

如果 V_1, V_2是向量空间U的两个线性子空间,那么下面两个命题等价(见17页命题1.9):
1) V_1+V_2是直和;
2) V_1 \cap V_2=\{0\}
这种关系是否可以推广到多个子空间的情况呢?也就是说是否有n个子空间两两相交于零点,就说明它们的和是直和呢?

这是不一定的。设想三维空间中三条坐标轴,再加上另一条过原点但异于坐标轴的直线,三条坐标轴的直和就是整个三维空间,显然它们和第四条直线的和不可能是直和。但是可以对子空间的交集提出这样的要求:
对每个 k=2,3,4,\dots,n, (V_1+V_2+\dots+V_{k-1})\cap V_k=\{0\}
如果满足这个要求,那么它们的和就是直和。这个条件也是多个子空间的和是直和的充要条件。证明用数学归纳法很容易。
先把这样一个命题弄清楚了,后面的关于不同特征值的特征向量线性无关的证明思路就变得很容易。

还有一个看似更强的要求,但实际上与上面的那个要求是等价的:
 V_1,V_2,\dots,V_n中任意不重复地取出两组子空间来: V_{i1},V_{i2},\dots,V_{ir}  V_{j1},V_{j2},\dots,V_{js},其中 V_{ik}\not = V_{jl},都满足 (V_{i1}+V_{i2}+\dots+V_{ir})\cap (V_{j1}+V_{j2}+\dots+V_{js})=\{0\}
可以证明这个条件也是若干子空间的和是直和的充要条件。充分性可以利用上面的命题,必要性证明方法类似于命题1.9。

部分习题解答:

9 证明 V的两个子空间的并集也是 V的子空间当且仅当其中一个子空间包含于另一个子空间。
证明:必要性:设 U_1,U_2是要讨论的两个子空间,且 U_1\not \subset U_2,那么 \exists u_1 \in U_1, u_1 \not \in U_2 \forall u_2 \in U_2,因 U_1\cup U_2是子空间,故 u_1+u_2\in U_1\cup U_2。若 u_1+u_2\in U_2,则 u_1=u_1+u_2-u_2 \in U_2,矛盾。因此 u_1+u_2\in U_1,则 u_2=u_1+u_2-u_1 \in U_1。故 U_2 \subset U_1
充分性显然。

用向量的内积证明勾股定理——体会代数的威力

勾股定理是几何中一条非常重要的定理,如果少了它,几何中几乎所有关于长度的计算公式都将失效,我们再也无法通过两点的坐标计算它们之间的距离,无法计算一条曲线的长度,无法知道圆的方程是二次曲线,它还间接地影响三角函数和复数等众多领域,可以说如果没有勾股定理,数学中大部分的内容将不得不被砍掉。

勾股定理的证明有很多种,其中有一些证法很麻烦,有一些较简洁,我国的商高、赵爽和古希腊的欧几里德都是在直角三角形的三边上各画一个正方形,然后用割补法证明直角边的两个三角形面积之和等于斜边上的三角形面积。近现代出现了很多简化的证明,其中有很多以面积为工具,有些已相似形理论为工具,等等。近年来又出现了利用微积分方法的证明,但它们都没有逃脱几何的影子,在证明中都是直接地考察一个直角三角形的几何图形。

关于代数与几何的关系,初中生有时候在做零星的几何题时会有所体会,比如,用方程的方式求解一条线段的长度,或求解一个角,或证明两个值之间的关系,等等。这些代数的零散应用依然没有逃出几何的框架。

代数第一次大规模进军几何领域应该是笛卡尔的解析几何。有了平面或空间上的坐标系,每一个点都有了一个坐标,使用两个或三个数组成的数组就可以表示一个点,几何的问题就通过坐标转换成了代数中的方程或计算的问题。不管多么困难的几何问题,通过转换,原则上都是可以用代数方法解决的。
不过,勾股定理在这个过程中起到了一个更加基础的作用,坐标系中两点之间的距离公式就是由勾股定理得出的,因此无法在解析几何中用这个公式再证明勾股定理了。
可见,在高中的解析几何中,虽然代数方法已经可以在几何领域大显身手,但几何还是占据了十分重要的基础地位。

真正将几何代数化,我认为是在向量被引入数学之后。从此,代数思想占据了几何中更加基础的位置。从勾股定理的向量证法中可以很深地体会这一点。

记向量u和v的内积为<u,v>,表示u向v投影的长度与v长度的乘积,再根据投影后的u和v是同向还是异向取正号或负号。
显然u,v垂直时 <u,v>=<v,u>=0,
并且可以很容易地证明<u+v,w>=<u,w>+<v,w>,<u,v+w>=<u,v>+<u,w>,
还有,一个向量的长度的平方就是它和它自己的内积:||u||²=<u,u>。

有了这些简单得近乎显然的性质,就可以轻松地推出勾股定理:
设直角三角形两边对应向量分别为u,v,那么斜边的长度就等于||u+v||,那么
||u+v||²=<u+v,u+v>=<u,u+v>+<v,u+v>=<u,u>+<u,v>+<v,u>+<v,v>。
因为<u,u>=||u||²,<v,v>=||v||²,<u,v>=<v,u>=0,故得勾股定理:
当u,v两向量互相垂直时,||u+v||²=||u||²+||v||²。

我相信有一些人在第一次见到这个证明的时候,都和我一样地感到惊奇,没有画任何图形,甚至没有考虑图形上的任何细节和特征,轻描淡写地几步运算,竟然就这么容易地推出了几何中一条基本定理!它像魔法师的兔子一样跳到你面前,你即使知道了证明的过程,还是不理解它究竟是为什么可以这么证明。你期望看到魔术师帽子里的秘密,或者,也许你能发现下面隐藏着循环论证的错误也说不定呢,就像用解析几何证明勾股定理一样的错误。

也许,把它原原本本地还原为一个几何的证明会对我们的理解有帮助,看看在这奇迹的背后究竟发生了怎样的过程。

第一步,||u+v||²=<u+v,u+v>,这步没什么可说的。
第二步,<u+v,u+v>=<u,u+v>+<v,u+v>,
这步应用了内积的线性性质,是关键的一步。在图形上跟踪一下这个过程:
zrclip_001n8b37757.png
我们在一个直角三角形中画出斜边上的高,将u+v向自己的投影分解成u向u+v的投影和v到u+v的投影之和,在图中u和v向斜边(u+v)的投影分别是直角三角形斜边上的顶点到垂足和垂足到另一顶点的向量,即AD和DC。把这一步还原成几何的语言就是AC²=AC*(AD+CD)。
第三步,<u,u+v>=<u,u>+<u,v>=<u,u>=||u||²,和<v,u+v>=<v,u>+<v,v>=<v,v>=||v||²,
这一步中有意思的是这里,<u,u+v>既可以看成u向u+v投影之后再与u+v乘积,也可以看成u+v到u的投影与u的乘积,即u的长度平方,因此这步翻译成几何的语言就是AB²=AD*AC。同样地有<v,u+v>=||v||²等价于BC²=AC*DC。而这正是初中生都熟知的射影定理。
由AC²=AC*(AD+CD)和AB²=AD*AC、BC²=AC*DC立即可以得到勾股定理。

至此,它背后的秘密算是完全揭开了:内积的实质就是投影,内积是线性的,是因为投影映射是线性的,内积的交换律也是由投影下形成的相似三角形性质决定的,它的特例就是射影定理,因此,用内积证明勾股定理,其实质就是用射影定理证明勾股定理。

但是,我还是觉得很神奇,因为在用向量分析的时候,我们只是在计算,虽然它实质上是射影定理,但在用向量内积推导的过程中我丝毫没有觉察出它跟几何有什么联系,与绞尽脑汁的几何证明题相比,我似乎在不知不觉中就被带到了真理的地方。可见,用向量方法分析和直接用射影定理证明勾股定理,其思维方式上是有很大差别的。这就是代数思维和几何思维的不同之处。

为了使直线上的几何问题代数化,人们引入正数和负数,为了使平面和空间的几何问题代数化,人们引入坐标系,这些都内在蕴含了向量的思想,但是都没有明确地把向量的概念提出来。随着经典力学的发展,随着人们对力、加速度、速度和位移这些概念之间关系的深入研究,矢量这个概念逐渐被人们认识并加以抽象概括,形成了向量代数。用向量描述世界,比以前的数和几何对象有更高的概括性和统一性,现在,以向量空间和它们之间的变换为主要研究对象的线性代数已经在各个应用领域中发挥着无法替代的作用。

我们再看一下在物理的能量守恒观点下的勾股定理。设想你把一个石块从手中斜抛出去,石块初始速度为v0,v0可以分解为水平速度v1和竖直速度v2,按照向量的写法,有 v_0=v_1+v_2。石块的初始动能为 \frac{1}{2}mv_0^2,经过一段时间,石块竖直方向的速度变为零,只剩下水平速度v1,这时它的动能为 \frac{1}{2}mv_1^2,因此有 \frac{1}{2}m(v_0^2-v_1^2)的动能减少,而势能增加量恰好是 mgh=\frac{1}{2}mv_2^2,注意它们之间的关系,当且仅当 v_0^2=v_1^2+v_2^2时,总的机械能是守恒的。也许,上帝在创造世界的时候,为了能让他的能量守恒原则成立,不得不承认勾股定理,或者反过来,因为要创造一个满足勾股定理的世界而使这个世界上的能量守恒。
想一想在这个过程中是什么发挥了主要作用,其中主要的决定性因素就是水平与竖直方向上的运动互不干扰,可以说两个方向无关,真实物体的运动是两个无关方向上运动的线性叠加,这样重力做功才跟路径无关,机械能守恒。

可以说世界上有很多问题,看似很复杂,但实际上可以分解成一些彼此无关的因素的线性叠加。利用这个特性,当考虑整体比较麻烦时可以把它分解,分而治之,然后再回到整体;而当分析众多错综复杂的分量有困难时也可以先从整体入手。而向量恰好是整体与分量的对立统一,这就是向量代数的力量源泉。

4月27日有关余弦定理的补充:
评论中有人说这个证明中用到了一些内积的性质是依赖于余弦定理的,而余弦定理又是来源于勾股定理,因此还是循环论证了。
我的观点在下面评论答复中已经说过了,内积的那些性质(在文中列出的用来证明勾股定理的那些性质:实数欧几里得空间内积的交换律、双线性、垂直时内积是零)没有一条是必须依赖于余弦定理的。现在补充一点,即使不用那个"u,v垂直时<u,v>=0"逻辑上仍然讲得通。
利用双线性和交换性(这两条性质依赖于平行和相似),有余弦定理(因此,余弦定理本质上是内积的二次展开式,这也是为什么余弦定理和二次的牛顿二项展开式那么相似):
||u-v||²=<u-v,u-v>=<u,u>+<v,v>-<u,v>-<v,u>=||u||²+||v||²-2<u,v>
||u+v||²=<u+v,u+v>=<u,u>+<v,v>+<u,v>+<v,u>=||u||²+||v||²+2<u,v>
当u,v垂直时,利用矩形两对角线长度相等(此依赖于三角形全等),有||u+v||=||u-v||,则有
<u,v>=<v,u>=0,和勾股定理||u-v||²=||u+v||²=||u||²+||v||²
这倒是个一举多得的证法。