矩阵

作为一名非数学专业的初次学习线性代数仅得了68分的大三学生,最近看了一下别人很精辟的文章,对线性代数这个东西又有了新的理解。在这里我把对线性的一些体会写下来。写这些体会的目的,是希望能够对像我一样的比较愚钝的学生能有所帮助,希望能够让这些教材中抽象的概念能够在他们的脑海中产生直观的生动的印象,帮助和我一样的学弱更好的理解数学概念,体会数学之美。

        在此声明,这里面的东西大多不是我自己原创的想法,很多都是我看了别人的文章,写的好的,我就直接抄了过来(因此,下面正文中很多的“我”并不是我这个大三学生本身,而是相应部分的原作者, 但我和“我”的立场是一致的),我仅仅是将这些分散的文章整合一下,并适时的加上一丁点我自己的体会。红色字体的部分是我的并不确定正确的一些理解,希望读者注意。其他字体的理解也并不代表一定正确。希望读者们能及时纠正我的错误,避免我在邪路上越走越远,最终走火入魔,酿成悲剧。

       由于本篇日志过长,连我本人都没有耐心慢慢读完,给出阅读提示:这篇日志的内容主要分4部分,各部分之间相对比较独立,各有侧重,可以分部分阅读,只需下拉到对应红标题即可。但建议顺序阅读。

      简要说明一下这篇文章的主要内容:

      1、理解矩阵

      2、图解矩阵

      3、线性分解  

      4一些概念的几何意义

    

                                                                第一部分   理解矩阵

       一切都要从线性代数说起。在全国一般工科院系教学中应用最广泛的同济线性代数教材,一上来就介绍逆序数这个古怪概念,然后用逆序数给出行列式的一个极不直观的定义,接着是一些简直犯傻的行列式性质和习题——把这行乘一个系数加到另一行上,再把那一列减过来,折腾得那叫一个热闹,可就是压根看不出这个东西有嘛用。

      我本人对抽象的东西理解能力并不强,如果一个概念不能非常直观的出现在脑海里,想记住它都是非常困难的,更别说用它来解题考试或是实际应用了。 大多数像我一样资质平庸的学生从一开始就有点犯晕:逆序数到底是个什么东西?连这是个什么东西都模模糊糊的,就开始钻火圈表演了,这未免太无厘头了吧!于是开始有人逃课,更多的人开始抄作业。这下就中招了,因为其后的发展可以用一句峰回路转来形容,紧跟着这个无厘头的行列式的,是一个同样无厘头但是伟大的无以复加的家伙的出场——矩阵来了!多年之后,我才明白,当老师犯傻似地用中括号把一堆傻了吧叽的数括起来,并且不紧不慢地说:“这个东西叫做矩阵”的时候,我的数学生涯掀开了何等悲壮辛酸、惨绝人寰的一幕!自那以后,在几乎所有跟“学问”二字稍微沾点边的东西里,矩阵这个家伙从不缺席。对于我这个没能一次搞定线性代数的笨蛋来说,矩阵老大的不请自来每每搞得我灰头土脸,头破血流。长期以来,我在阅读中一见矩阵,就如同阿Q见到了假洋鬼子,揉揉额角就绕道走。

       事实上,我并不是特例。一般工科学生初学线性代数,通常都会感到困难。这种情形在国内外皆然。瑞典数学家Lars Garding在其名著Encounter with Mathematics中说:“如果不熟悉线性代数的概念,要去学习自然科学,现在看来就和文盲差不多。然而“按照现行的国际标准,线性代数是通过公理化来表述的,它是第二代数学模型,这就带来了教学上的困难。”事实上,当我们开始学习线性代数的时候,不知不觉就进入了“第二代数学模型”的范畴当中,这意味着数学的表述方式和抽象性有了一次全面的进化,对于从小一直在“第一代数学模型”,即以实用为导向的、具体的数学模型中学习的我们来说,在没有并明确告知的情况下进行如此剧烈的paradigm shift,不感到困难才是奇怪的。

       大部分工科学生,往往是在学习了一些后继课程,如数值分析、数学规划、矩阵论之后,才逐渐能够理解和熟练运用线性代数。即便如此,不少人即使能够很熟练地以线性代数为工具进行科研和应用工作,但对于很多这门课程的初学者提出的、看上去是很基础的问题却并不清楚。比如说:

1、矩阵究竟是什么东西?

2、向量可以被认为是具有n个相互独立的性质(维度)的对象的表示,矩阵又是什么呢?

3、我们如果认为矩阵是一组列(行)向量组成的新的复合向量的展开式,那么为什么这种展开式具有如此广泛的应用?特别是,为什么偏偏二维的展开式如此有用?

4、如果矩阵中每一个元素又是一个向量,那么我们再展开一次,变成三维的立方阵,是不是更有用?

5、矩阵的乘法规则究竟为什么这样规定?为什么这样一种怪异的乘法规则却能够在实践中发挥如此巨大的功效?很多看上去似乎是完全不相关的问题,最后竟然都归结到矩阵的乘法,这难道不是很奇妙的事情?难道在矩阵乘法那看上去莫名其妙的规则下面,包含着世界的某些本质规律?如果是的话,这些本质规律是什么?

6、行列式究竟是一个什么东西?为什么会有如此怪异的计算规则?行列式与其对应方阵本质上是什么关系?为什么只有方阵才有对应的行列式,而一般矩阵就没有(不要觉得这个问题很蠢,如果必要,针对mxn矩阵定义行列式不是做不到的,之所以不做,是因为没有这个必要,但是为什么没有这个必要)?而且,行列式的计算规则,看上去跟矩阵的任何计算规则都没有直观的联系,为什么又在很多方面决定了矩阵的性质?难道这一切仅是巧合?

7、矩阵为什么可以分块计算?分块计算这件事情看上去是那么随意,为什么竟是可行的?

8、对于矩阵转置运算AT,有(AB)T=BTAT,对于矩阵求逆运算A-1,有(AB)-1=B-1A-1。两个看上去完全没有什么关系的运算,为什么有着类似的性质?这仅仅是巧合吗?

9、为什么说P-1AP得到的矩阵与A矩阵“相似”?这里的“相似”是什么意思?

10、特征值和特征向量的本质是什么?它们定义就让人很惊讶,因为Ax=λx,一个诺大的矩阵的效应,竟然不过相当于一个小小的数λ,确实有点奇妙。但何至于用“特征”甚至“本征”来界定?它们刻划的究竟是什么?

     这样的一类问题,经常让使用线性代数已经很多年的人都感到为难。就好像大人面对小孩子的刨根问底,最后总会迫不得已地说“就这样吧,到此为止”一样,面对这样的问题,很多老手们最后也只能用:“就是这么规定的,你接受并且记住就好”来搪塞。

      然而,这样的问题如果不能获得回答,线性代数对于我们来说就是一个粗暴的、不讲道理的、莫名其妙的规则集合,我们会感到,自己并不是在学习一门学问,而是被不由分说地“抛到”一个强制的世界中,只是在考试的皮鞭挥舞之下被迫赶路,全然无法领略其中的美妙、和谐与统一。即便我们已经发觉这门学问如此的有用,却仍然会非常迷惑:怎么这么凑巧?我认为这是我们的线性代数教学中直觉性丧失的后果。上述这些涉及到“如何能”、“怎么会”的问题,仅仅通过纯粹的数学证明来回答,是不能令提问者满意的。比如,如果你通过一般的证明方法论证了矩阵分块运算确实可行,那么这并不能够让提问者的疑惑得到解决。他们真正的困惑是:矩阵分块运算为什么竟然是可行的?究竟只是凑巧,还是说这是由矩阵这种对象的某种本质所必然决定的?如果是后者,那么矩阵的这些本质是什么?只要对上述那些问题稍加考虑,我们就会发现,所有这些问题都不是单纯依靠数学证明所能够解决的。像我们的教科书那样,凡事用数学证明,最后培养出来的学生,只能熟练地使用工具,却欠缺真正意义上的理解。

       自从1930年代法国布尔巴基学派兴起以来,数学的公理化、系统性描述已经获得巨大的成功,这使得我们接受的数学教育在严谨性上大大提高。然而数学公理化的一个备受争议的副作用,就是一般数学教育中直觉性的丧失。数学家们似乎认为直觉性与抽象性是矛盾的,因此毫不犹豫地牺牲掉前者。我不认为直觉性与抽象性一定相互矛盾,特别是在数学教育中和数学教材中,帮助学生建立直觉,有助于它们理解那些抽象的概念,进而理解数学的本质。反之,如果一味注重形式上的严格性,学生就好像被迫进行钻火圈表演的小白鼠一样,变成枯燥的规则的奴隶。

 

今天先谈谈对线形空间和矩阵的几个核心概念的理解。这些东西大部分是凭着自己的理解写出来的,基本上不抄书,可能有错误的地方,希望能够被指出。但我希望做到直觉,也就是说能把数学背后说的实质问题说出来。

首先说说空间(space),这个概念是现代数学的命根子之一,从拓扑空间开始,一步步往上加定义,可以形成很多空间。线形空间其实还是比较初级的,如果在里面定义了范数,就成了赋范线性空间。赋范线性空间满足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间,内积空间再满足完备性,就得到希尔伯特空间。总之,空间有很多种。你要是去看某种空间的数学定义,大致都是:存在一个集合,在这个集合上定义某某概念,然后满足某些性质,就可以被称为空间。这未免有点奇怪,为什么要用“空间”来称呼一些这样的集合呢?大家将会看到,其实这是很有道理的。我们一般人最熟悉的空间,毫无疑问就是我们生活在其中的(按照牛顿的绝对时空观)的三维空间,从数学上说,这是一个三维的欧几里德空间,我们先不管那么多,先看看我们熟悉的这样一个空间有些什么最基本的特点。仔细想想我们就会知道,这个三维的空间:

1.由很多(实际上是无穷多个)位置点组成;

2.这些点之间存在相对的关系;

3.可以在空间中定义长度、角度;

4.这个空间可以容纳运动,这里我们所说的运动是从一个点到另一个点的移动(变换),而不是微积分意义上的“连续”性的运动。

 

上面的这些性质中,最最关键的是第4条。第1、2条只能说是空间的基础,不算是空间特有的性质,凡是讨论数学问题,都得有一个集合,大多数还得在这个集合上定义一些结构(关系),并不是说有了这些就算是空间。而第3条太特殊,其他的空间不需要具备,更不是关键的性质。只有第4条是空间的本质,也就是说,容纳运动是空间的本质特征。认识到了这些,我们就可以把我们关于三维空间的认识扩展到其他的空间。事实上,不管是什么空间,都必须容纳和支持在其中发生的符合规则的运动(变换)。你会发现,在某种空间中往往会存在一种相对应的变换,比如拓扑空间中有拓扑变换,线性空间中有线性变换,仿射空间中有仿射变换,其实这些变换都只不过是对应空间中允许的运动形式而已。因此只要知道,“空间”是容纳运动的一个对象集合,而变换则规定了对应空间的运动。下面我们来看看线性空间。线性空间的定义任何一本书上都有,但是既然我们承认线性空间是个空间,那么有两个最基本的问题必须首先得到解决,那就是:

1.空间是一个对象集合,线性空间也是空间,所以也是一个对象集合。那么线性空间是什么样的对象的集合?或者说,线性空间中的对象有什么共同点吗?

2.线性空间中的运动如何表述的?也就是,线性变换是如何表示的?

我们先来回答第一个问题,回答这个问题的时候其实是不用拐弯抹角的,可以直截了当的给出答案:线性空间中的任何一个对象,通过选取基和坐标的办法,都可以表达为向量的形式。通常的向量空间我就不说了,举两个不、那么平凡的例子:

1、L1是最高次项不大于n次的多项式的全体构成一个线性空间,也就是说,这个线性空间中的每一个对象是一个多式。如果我们以x0,x1,...,xn为基,那么任何一个这样的多项式都可以表达为一组n+1维向量,其中的每一个分量ai其实就是多项式中x(i-1)项的系数。值得说明的是,基的选取有多种办法,只要所选取的那一组基线性无关就可以。这要用到后面提到的概念了,所以这里先不说,提一下而已。

L2是闭区间[a, b]上的n阶连续可微函数的全体,构成一个线性空间。也就是说,这个线性空间的每一个对象是一个连续函数。对于其中任何一个连续函数,根据魏尔斯特拉斯定理,一定可以找到最高次项不大于n的多项式函数,使之与该连续函数的差为0,也就是说,完全相等。这样就把问题归结为L1了。后面就不用再重复了。

所以说,向量是很厉害的,只要你找到合适的基,用向量可以表示线性空间里任何一个对象。这里头大有文章,因为向量表面上只是一列数,但是其实由于它的有序性,所以除了这些数本身携带的信息之外,还可以在每个数的对应位置上携带信息。为什么在程序设计中数组最简单,却又威力无穷呢?根本原因就在于此。这是另一个问题了,这里就不说了。

下面来回答第二个问题,这个问题的回答会涉及到线性代数的一个最根本的问题。线性空间中的运动,被称为线性变换。也就是说,你从线性空间中的一个点运动到任意的另外一个点,都可以通过一个线性变化来完成。那么,线性变换如何表示呢?很有意思,在线性空间中,当你选定一组基之后,不仅可以用一个向量来描述空间中的任何一个对象,而且可以用矩阵来描述该空间中的任何一个运动(变换)。而使某个对象发生对应运动的方法,就是用代表那个运动的矩阵,乘以代表那个对象的向量。简而言之,在线性空间中选定基之后,向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘法施加运动。是的,矩阵的本质是运动的描述。如果以后有人问你矩阵是什么,那么你就可以响亮地告诉他,矩阵的本质是运动的描述。

可是多么有意思啊,向量本身不是也可以看成是n x 1矩阵吗?这实在是很奇妙,一个空间中的对象和运动竟然可以用相类同的方式表示。能说这是巧合吗?如果是巧合的话,那可真是幸运的巧合!可以说,线性代数中大多数奇妙的性质,均与这个巧合有直接的关系。

 

接着理解矩阵,上面说“矩阵是运动的描述”,到现在为止,好像大家都还没什么意见。但是我相信早晚会有数学系出身的网友来拍板转。因为运动这个概念,在数学和物理里是跟微积分联系在一起的。我们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学。大家口口相传,差不多人人都知道这句话。但是真知道这句话说的是什么意思的人,好像也不多。简而言之,在我们人类的经验里,运动是一个连续过程,从A点到B点,就算走得最快的光,也是需要一个时间来逐点地经过AB之间的路径,这就带来了连续性的概念。而连续这个事情,如果不定义极限的概念,根本就解释不了。古希腊人的数学非常强,但就是缺乏极限观念,所以解释不了运动,被芝诺的那些著名悖论(飞箭不动、飞毛腿阿喀琉斯跑不过乌龟等四个悖论)搞得死去活来。

 

因为这篇文章不是讲微积分的,所以我就不多说了。有兴趣的读者可以去看看齐民友教授写的《重温微积分》。我就是读了这本书开头的部分,才明白“高等数学是研究运动的数学”这句话的道理。不过在我篇文章里,“运动”的概念不是微积分中的连续性的运动,而是瞬间发生的变化。比如这个时刻在A点,经过一个“运动”,一下子就“跃迁”到了B点,其中不需要经过A点与B点之间的任何一个点。这样的“运动”,或者说“跃迁”,是违反我们日常的经验的。不过了解一点量子物理常识的人,就会立刻指出,量子(例如电子)在不同的能量级轨道上跳跃,就是瞬间发生的,具有这样一种跃迁行为。所以说,自然界中并不是没有这种运动现象,只不过宏观上我们观察不到。但是不管怎么说,“运动”这个词用在这里,还是容易产生歧义的,说得更确切些,应该是“跃迁”。因此这句话可以改成:“矩阵是线性空间里跃迁的描述”。可是这样说又太物理,也就是说太具体,而不够数学,也就是说不够抽象。因此我们最后换用一个正牌的数学术语——变换,来描述这个事情。这样一说,大家就应该明白了,所谓变换,其实就是空间里从一个点(元素/对象)到另一个点(元素/对象)的跃迁。比如说,拓扑变换,就是在拓扑空间里从一个点到另一个点的跃迁。再比如说,仿射变换,就是在仿射空间里从一个点到另一个点的跃迁。

 

附带说一下,这个仿射空间跟向量空间是亲兄弟。做计算机图形学的朋友都知道,尽管描述一个三维对象只需要三维向量,但所有的计算机图形学变换矩阵都是4x4的。说其原因,很多书上都写着“为了使用中方便”,这在我看来简直就是企图蒙混过关。真正的原因,是因为在计算机图形学里应用的图形变换,实际上是在仿射空间而不是向量空间中进行的。想想看,在向量空间里相一个向量平行移动以后仍是相同的那个向量,而现实世界等长的两个平行线段当然不能被认为同一个东西,所以计算机图形学的生存空间实际上是仿射空间。而仿射变换的矩阵表示根本就是4x4的。有兴趣的读者可以去看《计算机图形学——几何工具算法详解》。

 

一旦我们理解了“变换”这个概念,矩阵的定义就变成:矩阵是线性空间里的变换的描述。到这里为止,我们终于得到了一个看上去比较数学的定义。不过还要多说几句。教材上一般是这么说的,在一个线性空间V里的一个线性变换T,当选定一组基之后,就可以表示为矩阵。因此我们还要说清楚到底什么是线性变换,什么是基,什么叫选定一组基。线性变换的定义是很简单的,设有一种变换T,使得对于线性空间V中间任何两个不相同的对象x和y,以及任意实数a和b,有:T(ax+by)=aT(x)+bT(y),那么就称T为线性变换。定义都是这么写的,但是光看定义还得不到直觉的理解。线性变换究竟是一种什么样的变换?我们刚才说了,变换是从空间的一个点跃迁到另一个点,而线性变换,就是从一个线性空间V的某一个点跃迁到另一个线性空间W的另一个点的运动。这句话里蕴含着一层意思,就是说一个点不仅可以变换到同一个线性空间中的另一个点,而且可以变换到另一个线性空间中的另一个点去。不管你怎么变,只要变换前后都是线性空间中的对象,这个变换就一定是线性变换,也就一定可以用一个非奇异矩阵来描述。而你用一个非奇异矩阵去描述的一个变换,一定是一个线性变换。

 

有的人可能要问,这里为什么要强调非奇异矩阵?所谓非奇异,只对方阵有意义,那么非方阵的情况怎么样?这个说起来就会比较冗长了,最后要把线性变换作为一种映射,并且讨论其映射性质,以及线性变换的核与像等概念才能彻底讲清楚。

 

以下我们只探讨最常用、最有用的一种变换,就是在同一个线性空间之内的线性变换。也就是说,下面所说的矩阵,不作说明的话,就是方阵,而且是非奇异方阵。学习一门学问,最重要的是把握主干内容,迅速建立对于这门学问的整体概念,不必一开始就考虑所有的细枝末节和特殊情况,自乱阵脚。

 

什么是基呢?这个问题在后面还要大讲一番,这里只要把基看成是线性空间里的坐标系就可以了。注意是坐标系,不是坐标值,这两者可是一个“对立矛盾统一体”。这样一来,“选定一组基”就是说在线性空间里选定一个坐标系。好,最后我们把矩阵的定义完善如下:“矩阵是线性空间中的线性变换的一个描述。在一个线性空间中,只要我们选定一组基,那么对于任何一个线性变换,都能够用一个确定的矩阵来加以描述。”理解这句话的关键,在于把“线性变换”与“线性变换的一个描述”区别开。一个是那个对象,一个是对那个对象的表述。就好像我们熟悉的面向对象编程中,一个对象可以有多个引用,每个引用可以叫不同的名字,但都是指的同一个对象。如果还不形象,那就干脆来个很俗的类比。比如有一头猪,你打算给它拍照片,只要你给照相机选定了一个镜头位置,那么就可以给这头猪拍一张照片。这个照片可以看成是这头猪的一个描述,但只是一个片面的的描述,因为换一个镜头位置给这头猪拍照,能得到一张不同的照片,也是这头猪的另一个片面的描述。所有这样照出来的照片都是这同一头猪的描述,但是又都不是这头猪本身。同样的,对于一个线性变换,只要你选定一组基,那么就可以找到一个矩阵来描述这个线性变换。换一组基,就得到一个不同的矩阵。所有这些矩阵都是这同一个线性变换的描述,但又都不是线性变换本身。

 

但是这样的话,问题就来了如果你给我两张猪的照片,我怎么知道这两张照片上的是同一头猪呢?同样的,你给我两个矩阵,我怎么知道这两个矩阵是描述的同一个线性变换呢?如果是同一个线性变换的不同的矩阵描述,那就是本家兄弟了,见面不认识,岂不成了笑话。好在,我们可以找到同一个线性变换的矩阵兄弟们的一个性质,那就是:若矩阵A与B是同一个线性变换的两个不同的描述(之所以会不同,是因为选定了不同的基,也就是选定了不同的坐标系),则一定能找到一个非奇异矩阵P,使得A、B之间满足这样的关系:A=P-1BP。线性代数稍微熟一点的读者一下就看出来,这就是相似矩阵的定义。没错,所谓相似矩阵,就是同一个线性变换的不同的描述矩阵。按照这个定义,同一头猪的不同角度的照片也可以成为相似照片。俗了一点,不过能让人明白。而在上面式子里那个矩阵P,其实就是A矩阵所基于的基与B矩阵所基于的基这两组基之间的一个变换关系。

这个发现太重要了。原来一族相似矩阵都是同一个线性变换的描述啊!难怪这么重要!工科研究生课程中有矩阵论、矩阵分析等课程,其中讲了各种各样的相似变换,比如什么相似标准型,对角化之类的内容,都要求变换以后得到的那个矩阵与先前的那个矩阵式相似的,为什么这么要求?因为只有这样要求,才能保证变换前后的两个矩阵是描述同一个线性变换的。

 

当然,同一个线性变换的不同矩阵描述,从实际运算性质来看并不是不分好环的。有些描述矩阵就比其他的矩阵性质好得多。这很容易理解,同一头猪的照片也有美丑之分嘛。所以矩阵的相似变换可以把一个比较丑的矩阵变成一个比较美的矩阵,而保证这两个矩阵都是描述了同一个线性变换。这样一来,矩阵作为线性变换描述的一面,基本上说清楚了。但是,事情没有那么简单,或者说,线性代数还有比这更奇妙的性质,那就是,矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述。而作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去,而且也能够把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且,变换点与变换坐标系,具有异曲同工的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里很多定理和规则会变得更加清晰、直觉。

 

首先来总结一下前面部分的一些主要结论:

1.首先有空间,空间可以容纳对象运动的。一种空间对应一类对象。

2.有一种空间叫线性空间,线性空间是容纳向量对象运动的。

3.运动是瞬时的,因此也被称为变换。

4.矩阵是线性空间中运动(变换)的描述。

5.矩阵与向量相乘,就是实施运动(变换)的过程。

6.同一个变换,在不同的坐标系下表现为不同的矩阵,但是它们的本质是一样的,所以本征值相同。

下面让我们把视力集中到一点以改变我们以往看待矩阵的方式。

我们知道,线性空间里的基本对象是向量。

向量是这么表示的:[a1,a2,a3,...,an]。

矩阵是这么表示的:a11,a12,a13,...,a1n,a21,a22,a23,...,a2n,...,an1,an2,an3,...,ann

 

不用太聪明,我们就能看出来,矩阵是一组向量组成的。特别的,n维线性空间里的方阵是由n个n维向量组成的。我们在这里只讨论这个n阶的、非奇异的方阵,因为理解它就是理解矩阵的关键,它才是一般情况,而其他矩阵都是意外,都是不得不对付的讨厌状况,大可以放在一边。这里多一句嘴,学习东西要抓住主流,不要纠缠于旁支末节。很可惜我们的教材课本大多数都是把主线埋没在细节中的,搞得大家还没明白怎么回事就先被灌晕了。比如数学分析,明明最要紧的观念是说,一个对象可以表达为无穷多个合理选择的对象的线性和,这个概念是贯穿始终的,也是数学分析的精华。但是课本里自始至终不讲这句话,反正就是让你做吉米多维奇,掌握一大堆解偏题的技巧,记住各种特殊情况,两类间断点,怪异的可微和可积条件(谁还记得柯西条件、迪里赫莱条件...?),最后考试一过,一切忘光光。要我说,还不如反复强调这一个事情,把它深深刻在脑子里,别的东西忘了就忘了,真碰到问题了,再查数学手册嘛,何必因小失大呢?

 

言归正传,如果一组向量是彼此线性无关的话,那么它们就可以成为度量这个线性空间的一组基,从而事实上成为一个坐标系体系,其中每一个向量都躺在一根坐标轴上,并且成为那根坐标轴上的基本度量单位(长度1)。现在到了关键的一步。看上去矩阵就是由一组向量组成的,而且如果矩阵非奇异的话(我说了,只考虑这种情况),那么组成这个矩阵的那一组向量也就是线性无关的了,也就可以成为度量线性空间的一个坐标系。结论:矩阵描述了一个坐标系。“慢着!”,你嚷嚷起来了,“你这个骗子!你不是说过,矩阵就是运动吗?怎么这会矩阵又是坐标系了?”嗯,所以我说到了关键的一步。我并没有骗人,之所以矩阵又是运动,又是坐标系,那是因为——“运动等价于坐标系变换”。对不起,这话其实不准确,我只是想让你印象深刻。准确的说法是:“对象的变换等价于坐标系的变换”。或者:“固定坐标系下一个对象的变换等价于固定对象所处的坐标系变换。”说白了就是:“运动是相对的。”

 

让我们想想,达成同一个变换的结果,比如把点(1,1)变到点(2,3)去,你可以有两种做法。第一,坐标系不动,点动,把(1,1)点挪到(2,3)去。第二,点不动,变坐标系,让x轴的度量(单位向量)变成原来的1/2,让y轴的度量(单位向量)变成原先的1/3,这样点还是那个点,可是点的坐标就变成(2,3)了。方式不同,结果一样。从第一个方式来看,那就是把矩阵看成是运动描述,矩阵与向量相乘就是使向量(点)运动的过程。在这个方式下,Ma=b的意思是:“向量a经过矩阵M所描述的变换,变成了向量b。”而从第二个方式来看,矩阵M描述了一个坐标系,姑且也称之为M。那么:Ma=b的意思是:“有一个向量,它在坐标系M的度量下得到的度量结果向量为a,那么它在坐标系I的度量下,这个向量的度量结果是b。”这里的I是指单位矩阵,就是主对角线是1,其他为零的矩阵。而这两个方式本质上是等价的。我希望你务必理解这一点,因为这是本篇的关键。正因为是关键,所以我得再解释一下。在M为坐标系的意义下,如果把M放在一个向量a的前面,形成Ma的样式,我们可以认为这是对向量a的一个环境声明。它相当于是说:“注意了!这里有一个向量,它在坐标系M中度量,得到的度量结果可以表达为a。可是它在别的坐标系里度量的话,就会得到不同的结果。为了明确,我把M放在前面,让你明白,这是该向量在坐标系M中度量的结果。”

 

那么我们再看孤零零的向量b:b多看几遍,你没看出来吗?它其实不是b,它是:Ib也就是说:“在单位坐标系,也就是我们通常说的直角坐标系I中,有一个向量,度量的结果是b。”而Ma=Ib的意思就是说:“在M坐标系里量出来的向量a,跟在I坐标系里量出来的向量b,其实根本就是一个向量啊!”这哪里是什么乘法计算,根本就是身份识别嘛。从这个意义上我们重新理解一下向量。向量这个东西客观存在,但是要把它表示出来,就要把它放在一个坐标系中去度量它,然后把度量的结果(向量在各个坐标轴上的投影值)按一定顺序列在一起,就成了我们平时所见的向量表示形式。你选择的坐标系(基)不同,得出来的向量的表示就不同。向量还是那个向量,选择的坐标系不同,其表示方式就不同。因此,按道理来说,每写出一个向量的表示,都应该声明一下这个表示是在哪个坐标系中度量出来的。表示的方式,就是Ma,也就是说,有一个向量,在M矩阵表示的坐标系中度量出来的结果为a。

 

我们平时说一个向量是[2 3 5 7]T,隐含着是说,这个向量在 I 坐标系中的度量结果是[2 3 5 7]T,因此,这个形式反而是一种简化了的特殊情况。注意到,M矩阵表示出来的那个坐标系,由一组基组成,而那组基也是由向量组成的,同样存在这组向量是在哪个坐标系下度量而成的问题。也就是说,表述一个矩阵的一般方法,也应该要指明其所处的基准坐标系。所谓M,其实是IM,也就是说,M中那组基的度量是在I坐标系中得出的。从这个视角来看,M×N也不是什么矩阵乘法了,而是声明了一个在M坐标系中量出的另一个坐标系N,其中M本身是在I坐标系中度量出来的。

 

回过头来说变换的问题,我刚才说,“固定坐标系下一个对象的变换等价于固定对象所处的坐标系变换”,那个“固定对象”我们找到了,就是那个向量。但是坐标系的变换呢?我怎么没看见?请看:Ma=Ib我现在要变M为I,怎么变?对了,再前面乘以个M-1,也就是M的逆矩阵。换句话说,你不是有一个坐标系M吗,现在我让它乘以个M-1,变成I,这样一来的话,原来M坐标系中的a在I中一量,就得到b了。我建议你此时此刻拿起纸笔,画画图,求得对这件事情的理解。比如,你画一个坐标系,x轴上的衡量单位是2,y轴上的衡量单位是3,在这样一个坐标系里,坐标为(1,1)的那一点,实际上就是笛卡尔坐标系里的点(2,3)。而让它原形毕露的办法,就是把原来那个坐标系:2 0 0 3 的x方向度量缩小为原来的1/2,而y方向度量缩小为原来的1/3,这样一来坐标系就变成单位坐标系I了。保持点不变,那个向量现在就变成了(2, 3)了。 怎么能够让“x方向度量缩小为原来的1/2,而y方向度量缩小为原来的1/3”呢?就是让原坐标系:2 0 0 3 被矩阵:1/2 0 0 1/3 左乘。而这个矩阵就是原矩阵的逆矩阵。

 

下面我们得出一个重要的结论:“对坐标系施加变换的方法,就是让表示那个坐标系的矩阵与表示那个变化的矩阵相乘。”再一次的,矩阵的乘法变成了运动的施加。只不过,被施加运动的不再是向量,而是另一个坐标系。如果你觉得你还搞得清楚,请再想一下刚才已经提到的结论,矩阵MxN,一方面表明坐标系N在运动M下的变换结果,另一方面,把M当成N的前缀,当成N的环境描述,那么就是说,在M坐标系度量下,有另一个坐标系N。这个坐标系N如果放在I坐标系中度量,其结果为坐标系MxN。

 

在这里,我实际上已经回答了一般人在学习线性代数是最困惑的一个问题,那就是为什么矩阵的乘法要规定成这样。简单地说,是因为:

1.从变换的观点看,对坐标系N施加M变换,就是把组成坐标系N的每一个向量施加M变换。

2.从坐标系的观点看,在M坐标系中表现为N的另一个坐标系,这也归结为,对N坐标系基的每一个向量,把它在I坐标系中的坐标找出来,然后汇成一个新的矩阵。

3.至于矩阵乘以向量为什么要那样规定,那是因为一个在M中度量为a的向量,如果想要恢复在I中的真像,就必须分别与M中的每一个向量进行內积运算。

 

我把这个结论的推导留给感兴趣的朋友吧。应该说,其实到了这一步,已经很容易了。综合以上,矩阵的乘法就得那么规定,一切有根有据,绝不是哪个神经病胡思乱想出来的。我已经无法说得更多了。矩阵又是坐标系,又是变换。到底是坐标系,还是变换,已经说不清楚了,运动与实体在这里统一了,物质与意识的界限已经消失了,一切归于无法言说,无法定义了。到了这个时候,我们不得不承认,我们伟大的线性代数课本上说的矩阵定义,是无比正确的:“矩阵就是由m行n列数放在一起组成的数学对象。”

 

 

 

                                                                    第二部分 图解矩阵

     通过上面的文字,我们已经明确了一个概念,矩阵是变换。这个结论要比书上的一堆定义描述直观的多了,可是还是不够直观,这个变换到底是怎么“变”的?也就是说,矩阵这个变换,包含了现实世界中的哪些运动?我的想法是:伸缩、旋转、投影。(个人想法,尚待求证)

由于人人网日志不具备公式编辑器功能,很难写出矩阵,也没法写出诸如转置、求逆等上下标符号,所以这里我采用Matlab中的一些记法来表示矩阵及其相关操作:

A=[1,2;3,4](或[1 2;3 4])表示矩阵的第一行为向量[1,2],第二行为向量[3,4],中间的“;”为换行符。

A'表示矩阵A的转置

inv(A)(或A^(-1))表示A的逆

 

 

 

 

第一个问题:特征值与特征向量

 

 

当初学线性代数的时候,由于愚钝和懒惰,我完全没有思考为什么给满足线性方程Ax=λx的λ和x冠以“特征”的称号——这个古怪方程的解怎么会是A的“特征”?后来经过看了很多别人的文章,我才开始意识到特征值和特征向量果然反映了A的实质。

 

观察方程Ax=λx的左右两边。可以看到,方程左边是向量x经过线性变换A后得到的结果,而方程右边则是x在原方向上伸展λ倍——所以,由这个方程解出的x是在线性变换后方向保持不变的向量,解出的λ是对应向量长度变化的倍数(代数的,可为负)。因此,线性变化A就被表示为输入向量在每个特征向量的方向上分别被拉伸了对应的λ倍。比如对A=[2,-1;0,3],其特征值为2和3,对应的特征向量分别为(可取为)[1,0]'和[-1,1]',则A对应的线性变换的意义就是把输入向量在[-1,1]'的方向上放大3倍,在[1,0]'的方向上放大2倍。如下图所示,我们将一个正方形所代表的向量集合(正方形上的每个点代表一个向量的终点)进行线性变换,最终得到了右边那个扭曲了的四边形:

 

 矩阵_第1张图片

(需要解释的是,由于直接使用matlab函数eig,画出的特征向量都是归一化了的——只要方向相同或相反,其长度是没有影响的。)

 

当存在负的特征值时,输入的图形在对应的特征向量方向上被翻转了,如当A=[0.5,1.5;0,-1]时,特征向量的方向与前一例相同,但对应的特征值分别为0.5和-1,结果如下图所示(注意四边形各边颜色的对应关系):

 矩阵_第2张图片

聪慧的读者一定已经清楚地认识到,将矩阵A(先仅考虑特征值互不相同的)写为对角阵Λ与特征向量矩阵P的函数的形式,能让我们更容易设计出想要的线性变换。具体来说,由我们熟知的Λ=inv(P)*A*P,易得A=P*Λ*inv(P)——先前的两个例子中的A,就是在选定了特征向量和对应伸缩倍数,从而确定了P和Λ之后求得的。由于Λ和P的几何意义是显而易见的,所以后面有时会不再给出A,而直接给出Λ和P。

 

等式A=P*Λ*inv(P)不仅可以帮助我们设计想要的线性变换,而且可以更详细和严谨地说明“输入向量在每个特征向量的方向上分别被拉伸”具体是怎么回事。将等式两边右乘向量x,则A对x进行的变换(等式左边)被分解为三个步骤(等式右边):

 

1、换基操作。x是向量在自然基下的坐标,左乘一个inv(P),则变为以特征向量为基的坐标。或者说是将x投射到了各特征向量的方向上。

2、沿新的坐标轴方向伸缩。新的坐标左乘对角阵Λ,显然是沿新的坐标轴的方向伸缩了对应的特征值倍。

3、换回原来的基。第2步得到的结果是以特征向量为基的,左乘一个P,就变回了原来的自然基。

 

第一个例子A=[2,-1;0,3]按上述步骤分解,结果如下图所示:

 矩阵_第3张图片

 

(顺便一提,由于线性变换的特点,不难得到关于满秩的线性变换在图形表示下的一些结论:一条线段经满秩线性变换后仍是一条线段;平行线变换后仍平行;相交线变换后仍相交;闭集变换后仍为闭集,且其边界点仍为边界点。所以,输入一个矩形(正方形),输出的一定是一个封闭的四边形,且一定是个平行四边形)

 

 

第二个问题:矩阵的逆、行列式与幂

 

将矩阵A视为在特征向量的方向上伸缩特征值倍的操作后,就容易理解矩阵的逆了。inv(A)所代表的线性变换是矩阵A所代表的线性变换的逆变换,则根据前面对A的理解,不难知道inv(A)是在A的特征向量方向上伸缩A的特征值的倒数倍。因此,易知inv(A)的特征向量与A的(可取为)相同,特征值与A的互为倒数。从代数上也不难推出此结论:因为A=P*Λ*inv(P),故inv(A)=P*inv(Λ)*inv(P),则inv(A)的特征向量与A的相同,特征值为A的特征值的倒数。

 

第一个例子中A的逆为inv(A)=[1/2,1/6;0,1/3],其图形如下所示。与第一张图对比可以看到,inv(A)特征向量与A相同,但伸缩情况与A相反:

 矩阵_第4张图片

 

矩阵(方阵)的行列式等于矩阵所有特征值的乘积。那么显然地,对于上述二阶矩阵的情形,行列式代表了输入图形面积变化的倍数——这个数值可能为负,所以这里姑且称之为“代数面积”的倍数;而对于三阶矩阵,行列式代表了输入图形“代数体积”变化的倍数;而对于更高阶的矩阵,代表了“广义体积”变化的倍数。(括号里的词都是我捏造的,我也不知道该叫啥,但是,你懂的!)

 

将行列式理解为线性变换后“广义体积”变化的倍数,等式|AB|=|A|*|B|的意义就一目了然了——先经B变换再经A变换后“广义体积”变化的倍数,等于两种变换各自对“广义体积”放大倍数的积。从特征值乘积的角度看,尽管矩阵AB的特征值不能仅由A和B的特征值求出,但却可以保证AB的所有特征值的乘积等于A和B所有特征值的乘积。

 

前面讲到矩阵求逆特征向量不变,特征值变为倒数。与之相类似的是矩阵的幂:矩阵A的k次幂既然可视为在A的特征向量方向上伸缩特征值倍k次,那么,A^k的特征向量显然与A(可取为)相同,特征值则分别为A的诸特征值的k次幂。比如第一个例子A=[2,-1;0,3],不必计算就可以知道,其3次幂A^3对应的特征向量矩阵P3与A的特征向量矩阵P相同,其对角标准型Λ3=Λ^3=[8,0;0,27]。

 

值得注意的是,随着指数的增加,特征值之间的差异会越来越大,所以输入向量会越来越靠近最大特征值所对应的特征向量。下图是对输入正方形连续进行3次线性变换A=[2,-1;0,3]后的结果:

矩阵_第5张图片

 

 

(注意:由于A的3次幂的最大特征值达27,亦即图形的大小变化很大,所以上图的坐标轴的单位长度是不固定的。)

 

可以很清楚地看到,随着阶次的增加,输入的正方形越来越偏向特征值较大的ε2了。

 

       聪慧的读者一定注意到,上面所讨论的方阵局限于满秩且特征值均不相同的情形,而这显然是非常不全面的。 这些情形下,我们的变换导致的结果是:伸缩、旋转。当特征值相同的时候,变换就只是简单的伸缩了,不会导致旋转;当特征值不同的时候,旋转便随之产生。就好像我在流体力学,材料力学,结构力学里面学到的那样,物体产生应变的时候,我们考虑了正应变(拉伸)和切(剪)应变(旋转)(个人理解)。如果是对于非满秩矩阵的情况呢?我的想法是:在伸缩、旋转的基础上还会产生另一种运动:投影。投影就像是我们画工程制图(或是机械制图)的时候三视图一样,一个三维的物体,经过投影变成了二维的一个平面。这个过程会导致信息的丢失(制图里也能知道,仅有一个或是两个投影面的话是不能一一对应的还原来的三维物体的),因此,这个过程是不可逆的,这个非满秩矩阵是不可逆的。对于一个维数为n,秩为n-r的矩阵,作用在一个物体上后,我们得到的是这个物体的一个n-r维的投影。)

      下面接着特征向量与特征值的问题接着向下谈。

 

                                                          第三部分 线性分解

      对一个变换,特征值反映了特征向量在变换时的伸缩倍数,特征向量指明方向。

      不小心了解到了一个叫谱定理的东西。Spectral theorem的核心内容如下:一个线性变换(用矩阵乘法表示)可表示为它的所有的特征向量的一个线性组合,其中的线性系数就是每一个向量对应的特征值,写成公式就是:

  

 

从这里我们可以看出,一个变换(矩阵)可由它的所有特征向量完全表示,而每一个向量所对应的特征值,就代表了矩阵在这一向量上的贡献率——说的数学一点它叫做(泰勒级数,傅里叶级数等的)系数,通俗一点就是能量,物质一点可以叫密度,概率一点叫概率密度(这些或离散或连续的东西都可以看做是线性无关的哟)。至此,特征值翻身做主人,彻底掌握了对特征向量的主动:你所能够代表这个矩阵的能量高低掌握在我手中,你还吊什么吊?

我们知道,一个变换可由一个矩阵乘法表示,一个空间坐标系也可视作一个矩阵,而这个坐标系就可由这个矩阵的所有特征向量表示,用图来表示的话,可以想象就是一个空间张开的各个坐标角度,这一组向量可以完全表示一个矩阵表示的空间的“特征”,而他们的特征值就表示了各个角度上的能量(可以想象成从各个角度上伸出的长短,越长的轴就越可以代表这个空间,它的“特征”就越强,或者说显性,而短轴自然就成了隐性特征),因此,通过特征向量/值可以完全描述某一几何空间这一特点,使得特征向量与特征值在几何(特别是空间几何)及其应用中得以发挥。

关于特征向量(特别是特征值)的应用实在是太多太多,近的比如PCA方法,选取特征值最高的k个特征向量来表示一个矩阵,从而达到降维分析+特征显示的方法;近的比如Google公司的成名作PageRank,也是通过计算一个用矩阵表示的图(这个图代表了整个Web各个网页“节点”之间的关联)的特征向量来对每一个节点打“特征值”分;再比如很多人脸识别,数据流模式挖掘分析等方面,都有应用,有兴趣的兄弟可以参考IBM的Spiros在VLDB‘ 05,SIGMOD ’06上的几篇文章。

      前面这些内容全是关于线性代数中矩阵的一些相关概念,可我却没有把日志命名为线性代数的理解或是矩阵的理解而是线性的理解,是因为我下面谈的内容,和矩阵关系不是很大了。由谱定理得到一点启发,我们可以把问题分解开来出来。下面谈:线性分解。

    

      深刻的思想往往蕴含在简单的数学形式之中。从小至今,对数学的学习一直不断,所学愈多,愈深感现代数学之博大,自己根基之薄弱。在自己所接触的数学之中,各种定理公式纷繁复杂,然细思之下,其核心思想却是非常简洁,但却广泛地以不同形式体现在各个分支之中。事实上,很多不同的数学分支在用自己本领域的语言阐述着一些共同的数学原理。

有三个基本的思想,在我所学到的数学中被普遍的运用:分解,逼近,变换。

分解(decomposition),是和合成(Integration)相互相承的。这里所说的分解思想,其实包括了三个阶段:首先,把一个一般对象,分解成简单对象的组合;然后,对每个简单对象分别加以分析和处理;最后把结果合成为对于原对象的结果。在不同的数学分支里面,分解的形式很不一样,后文中再详述。逼近(approximation),就是构造简单对象的序列趋近一般对象,并通过这些简单对象的处理和分析结果来逼近一般对象的结果。这种思想在分析(Analysis)主要以极限(limit)的形式存在,是整个分析的根本。在不同的context里面,这种策略的运用有着不同的具体条件和形式,很多时候需要某种形式的一致性(uniformity)来保障结果的正确。比如拓扑学(topology)里面的一致收敛定理(Uniform Convergence Theorem),测度理论中的单调收敛定理(Monotonic Convergence Theorem)和控制收敛定理(Dominated Convergence Theorem),概率论中大数定律(Laws of Large Numbers)和分布收敛方面的定理,都体现了这样的思想,而它们则对于各自领域中的函数和各种数学概念的构造起着关键作用。而我们所学的微分,积分,和各种积分变换(比如Fourier Transform)也都建基其上。变换(transformation),一般是指通过表达形式的变化,揭示出一个数学构造的本征形式,或者使它更适合于某种处理。在代数中的基变换是我们最常见的一种变换方式,它的涵盖很广,除了初等线性代数中讨论的有限维向量的变换,各种对函数的积分变换(Fourier Transform, Laplace Transform, Wavelet Transform)其实也是在一般的函数空间中的基变换。而这种思想还被运用到了概率论中,得到了一个强大的分布分析工具(Characteristic Function),这其实就是对分布函数的Fourier Transform。对变换的研究,离不开一个很重要的概念——变换不变性(Invariance),就是要看看在变换过程中什么是保持不变的,这对于刻画一个变换有着极为重要的意义。

------------------------------------------------------------------------------------------

线性分解和线性变换的联系

在这里只谈谈对分解(最简单的分解——线性分解)的一些理解。在最基本的线性代数中,我们可以把线性空间中的一个向量分解成某些基向量的合成:

x  = c1 e1 + c2 e2 + …

如果施加一个线性变换,那么这个变换的结果,可以通过对每个分量的变换结果组合得到

T(x) = c1 T(e1) + c2 T(e2) + …

这里,我们通过“分解——分别变换——然后合成”的思想来实施这个变换,这有两个需要考虑的要求:

正确性。我们首先需要保证等式左右两边是相等的,事实上这并不是一种必然,它要求T是线性的。从一般的数学意义上说,某种分解策略只适合于某种变换形式,从这个意义上说,分解和变换是相互对应的,在这里,线性分解对应于线性变换。有利性。等式左边只做一次变换,右边做n次。如果T(e1)和T(x)一样复杂,这纯粹是多此一举。因此,我们希望T(e1), T(e2)是一些更简单的操作,比如只完成一个数乘:T(e1) = a1 * e1。这其实就是特征值分解的一个动机所在。对于某个具体的变换,对应于一个具体的分解(一组具体的基),使得对于每个分量的变换具有简单的形式(在线性空间中就是指数乘了)。

在线性空间中,线性性保证了变换和分解的可交换性,而特征值分解则在正确性的基础上,寻求一种“最优”的分解形式,这种分解形式直接体现了这个变换的本质结构。

这种原理拓展到函数空间,就得到了在工程中广为应用的傅立叶变换(Fourier Transform)。它把一个连续函数分解为实空间的正余弦函数或者复空间的((e^(jwx))的组合。以这些函数为基的原因,就是在线性系统对于这种形式的信号只能进行整体的放大缩小,而不能改变信号内部的结构。从数学的角度说,这些基函数是由线性系统所产生的变换的特征函数。一个复杂的信号处理过程,就因此变为对分量信号分别放大,然后叠加。从Fourier Transform出发,发展出来了一个很大的数学分支,叫做调和分析(Harmonic Analysis),对于函数空间的分解进行深入探讨。

线性分解和方程求解

线性分解和合成也是方程求解的重要工具。在初等线性代数中,有一种简单的方程:T x = 0。如果x1, x2, …, 都是它的解,那么它们的线性组合也是方程的解。因此,整个解集构成了一个向量空间——变换T的零空间,从而,我们可以通过分析这个空间的基来研究整个解空间的结构。

至于更一般的T x = b的形式,可以通过加一个特解的形式获得解集(其实就是解空间的平移)。因而,其对应的齐次方程Tx = 0仍旧是刻画解集结构的根本所在。

这种想法被沿用于微分方程的求解。因为微分其实是一种线性操作,所以,线性微分方程都可以写成 T x = f 的形式,和简单的线性方程不同的是,这里的 T 是由微分算子合成,而 x 和 f 则存在于函数空间之中。但是,解集结构仍旧是T 的零空间的平移。

一个线性变换的零空间,就是它的零特征值对应的空间。这里需要关注 T 的特征空间的结构,当T 是一个简单的微分算子 d / dt,它的特征函数 f 应该满足 df / dt = a * x,因此 f( t ) = exp(a * t)。换一句话说,所有如exp(a * t)的指数函数,构成了解空间的基。事实上,这个结论可以继续扩展,exp(a * t)还是高阶微分算子,以及它们的各种线性组合形成的算子的基。

那么我们把一个连续函数沿着这种基分解:f( t ) = c1 * exp(a1 * t) + c2  * exp(a2 * t) + …

解方程得任务,就变成了寻求所有 x(t) = exp(a * t) 使得 T x = 0。这代换到方程里面,就转化为代数方程。因此,对于常系数微分方程的求解,当我们得知exp(a * t)是各阶微分算子的特征函数的时候,把解函数沿着它分解,整个事情就变得一目了然了。这样的思路可以直接从上述的标量函数的微分方程推广到向量函数的微分方程——这也是线性系统理论和控制论的基础。

对于更为复杂的积分方程,算子方程,或者随机微分方程,线性分解依旧是方程求解和解空间刻画的核心工具。

概率分布的分解

概率论的基础是测度理论,而它的基础则是sigma-代数,这是一种关于集合的代数(它的运算就是求集合的并集,交集,补集)。测度是给集合一个数值来表达集合的大小,它的构造也体现了分解的三阶段思路:

分解:把集合分解成不相交的简单集合的并集;分别处理:计算每个简单集合的测度(这个通常相当容易计算);合成:把这些测度加起来构成总测度。

我们用 m(A) 表达集合A的测度,那么我们有

m(A1 U A2 U …) = m(A1) + m(A2) + …  (if A1, A2, … disjoint)

这个意思直观理解很朴素:一个东西的大小等于它分成小块后每块的大小之和。上面说到,线性分解对应于线性变换,而这里同样具有一种类似的对应关系:集合的(不相交)分解和测度计算。测度理论的基本公理,就是建立了集合分解和测度计算进行交换的法则。

在概率论里面,最重要的事情之一是求随机变量的期望。如果随机变量在线性空间里面,我们可以对它进行线性分解和合成。另一方面期望满足

E(c1 x1 + c2 x2) = c1 E(x1) + c2 E(x2)

这表明了期望是随机变量的线性算子,或者说期望和随机变量的线性分解是可以交换的。因此,上述的分解思想同样运用于期望的运算当中——事实上,对于一般随机函数的期望(勒贝格积分)的定义的构造,正是实施了分解成简单函数——分别计算期望——汇总合成的三阶段思路。最后,通过单调逼近的极限完成完备的构造过程。

期望是进行勒贝格积分的过程,这个过程需要两个概念的参与:随机变量和测度。integral (f du) 里面,f 是可测函数(随机变量),u 是测度(概率)。如果我们对u进行一些延伸,从非负测度拓展到带符号测度(可正可负),那么 u 也构成了线性空间(事实上,可以进一步严格证明它是巴拿赫空间 (Banach Space))。而所有的平方可积的随机函数,则构成另外一个线性空间(进一步,它是一个希尔伯特空间(Hilbert Space))。它们分别都可以进行线性分解。

在概率论中很重要的Lebesgue-Radon-Nikodym定理其实是对测度进行线性分解的一种形式。我们把全部局部有限的带符号测度构成的空间叫M的话,那么给定一个局部有限测度u,所有对于u绝对连续(Absolutely continuous)的测度自己构成了M的一个子空间,而它的一个补空间则是由相对于u的奇异测度所组成,Lebesgue-Radon-Nikodym分解,则是把一个测度v分解成在这两个子空间中的分量。 这种分解形式,对于连续和离散的混成概率有着重要价值。

在传统的概率应用中,我们有一个对象空间,然后在上面建立一个分布模型,然后我们有很多具体的方法去处理。但是,我们如果站在一个不同的角度看待这个问题:所有概率分布构成一个空间,空间中每一个点是一个分布。那么,我们看待一些问题的时候会有不同的高度。在统计学习里面有一个经典的参数估计方法叫最大似然估计(Maximum Likelihood Estimation),它其实做了一件什么事情呢?就是在上面说的分布的空间中,把由observation所建立的经验分布(empirical distribution)向由某类型分布所组成的流形的投影——这是信息几何(Information Geometry)的最基本的概念。

随机变量的分解

除了对概率进行分解之外,随机变量的分解也有广泛运用,而且通过这种分解建立了概率模型和线性系统的联系。很重要的一个应用就是Markov Process,当初始分布决定之后,概率分布随着时间的演变过程就确定了。如果,我们对初始分布沿着概率传递函数的特征基分解,我们可以获得对整个过程的一个宏观的观察。对应于特征值为1的那个分量一直保持到最后,成为稳态分布;其它分量,会随着时间衰减。其实,这整个过程在数学上所遵循的方程,就是一个线性差分方程(对于离散事件马尔可夫链)或者线性微分方程(对于连续时间马尔可夫过程),这和控制论中研究信号的方程如出一辙。如果我们把分布演变的过程视为信号的变化过程,那么两者的分析可以相互类比。当它们联系起来后,随机过程的学者和控制论的学者的交流可以启发新的思考角度。

在传统微积分里面,我们描述微分的时候,是把一个实数轴分解成很多微小的段。在数学里面,一个重要的学科叫Stochastic Calculus,研究的是随机过程的微分,这需要把随机过程分解成小段。我们希望每个小段的分布形式和整体是一致的,而具有这种特性的分布叫做infinitely divisible。这是研究随机微积分和随机微分方程的重要基础。而我们熟知的高斯分布和泊松分布都具有这样的形式。如果一个随机过程,它对时间的导数符合高斯分布,那么这个过程有一个我们熟悉的名字——布朗运动(Brownian Motion),这是最简单的随机微分方程——也是研究更复杂的随机方程的基础。Stochastic Calculus在金融学用的很多,而在Vision里面颇为少见——事实上,它对于不确定过程的强大表达能力,正好适合对于视觉里面许多充满不确定的过程进行建模。

------------------------------------------------------------------------------------------

分解是数学世界里面最重要的思想之一,而线性分解是其中最核心的分解方式。在不同的数学分支中,线性分解把线性空间的元素按照基来分解,在不同的数学分支中,基有着不同的形式,适用于不同的变换:

有限维线性代数——基:有限维向量——适用于有限维线性变换信号——基:exp(jwt) or sin(wt) | cos(wt)——适用于线性时不变系统常微分方程——基:exp(at)——适用于微分算子随机变量——基:基本的随机变量——适用于期望(勒贝格积分)随机过程——基:基本的随机过程——适用于随机微分方程(随机积分)

线性变换的特征值分析的一个重要意义则是为了找出一个能揭示其本征结构的分解形式。特别注意的是,特征值,特征向量,和子空间这些基础概念虽脱胎于有限维分析,但是确可以拓展到对于很多关注无限维空间的学科,成为那些学科进行分析的有力工具。

对于研究来说,分解也提供了非常重要的研究思路,当我们研究一个复杂模型的时候,可以着力于回答几个基本问题:

这个模型的简单形式是什么?是否可以把一个模型分解成简单模型的合成?深入分析每个简单模型和它的变化?

分离出核心的具有简单形式的基础问题,并致力于此。当我们把简单的模型做深做透之后,有许多数学工具能帮助我们把工作延伸的一般的情况。

      谈到这里,已经上升到了数学思想的层面上了,这里的分解用到的便是等价转化了。而线性用到的数学思想也不仅仅是分解而已,线性化过程中经常出现的假设:小变形假设,局部以直代曲等大概可以算是抓主要矛盾的思想吧。

 

                                                             第四部分 一些概念的几何意义

1 关于面积:一种映射

大家会说,面积,不就是长乘以宽么,其实不然。我们首先明确,这里所讨论的面积,是欧几里得空间几何面积的基本单位:平行四边形的面积。平行四边形面积的定义,几何上说是相邻两边边长乘以他们之间的夹角的正弦。

然而为了应对更一般情形和更高维度的数理问题,我们有必要把面积的定义推广开来。注意到以下事实:

面积是一个标量,它来自于(构成其相邻边)两个矢量。因此,我们可以将面积看成一个映射:

 

其中V就是一个矢量,V*V代表两个矢量的有序对;f就是面积的值。

下面我们将说明这个映射是一个线性映射。

从最简单的例子出发。如果第一个矢量是(1,0),第二个矢量是(0,1);也就是说,两个矢量分别是X和Y轴上的单位正向量,那么由这两个矢量张成的四边形就是一个正方形,其面积根据定义,就是长乘以宽=1*1=1。

 矩阵_第6张图片

因此有:

 

如果我们把第一个矢量”缩放“a倍,面积将会相应是原来的a倍;把第二个矢量“缩放”b倍,面积也会成为原来的b倍。如果同时缩放,很显然,面积将会变成原面积的ab倍。这表明,面积映射对于其两个操作数(矢量)的标量积是各自线性的,如下:

 

最后,我们要说明,面积映射对于其操作数(矢量)的矢量加法也是线性的。因为矢量加法操作的本身是线性的,那么其面积映射理应对此也是一个线性映射。这里我们打算从几个实际的例子出发,说明映射的加法线性性的后果。

显然(两个共线矢量所张成的平行四边形还是一条线,因此面积为0):

 矩阵_第7张图片

 

假定面积映射是一个关于矢量加法的线性映射,那么我们有: 

注意计算过程中用到了上面的结论。这说明:

 

也就是说,交换相互垂直操作数矢量的顺序,面积映射取负。孰正孰负取决于认为的定义。一般,我们把X轴单位矢量在前,Y轴单位矢量在后,从X轴到Y轴张成的一个平行四边形的面积,取做正号。

 

1.1 右手定则

由此我们引入右手定则。注意右手定则只在三维空间中有效。如果以X正方向为首,Y正方向为尾,右手定则告诉我们,纸面向外是面积的正方向;如果反过来,那么纸面向内就是该面积的正方向,与规定的正方向相反,取负号。那么面积正负号的几何意义就明显了。

由此,我们不难得到平面内任意两个矢量所张成的平行四边形的面积(*):

 

我们不难看到,所谓面积就是一个2X2矩阵的行列式:

 矩阵_第8张图片

如下图。

 矩阵_第9张图片

其中第一行就是我们的第一个行向量(a,b);第二行就是第二个行向量(c,d)。或者第一列是第一个列向量(a,b)^T, 第二列是第二个列向量(c,d)^T。这取决于我们把矢量写成行向量(前者)还是列向量(后者)的形式。

 

1.2 行列式的计算性质

由此我们很容易能发现,行列式的值与把矢量写成列向量横排还是行向量竖排的方式是无关的。这也就是为什么说,在计算行列式时,行和列的地位是对等的。并且注意到,由上述分析,交换矢量的顺序,面积的值取负号,这也就是为什么行列式中,交换列向量或者行向量一次,就要取一次负号的原因。另外,行列式的其他计算性质,都一一反映在面积映射的线性性之中。

由此我们可见,行列式就是关于“面积”的推广。他就是在给定一组基下,N个向量张成的一个N维广义四边形的体积。这就是行列式的本质含义。

 

2,行列式的推广

由上,我们可以轻松推广到三维体积的计算:

 

 

注意到,行列式的定义,是每一行各取一个不同列的元素的乘积并且符号和所谓的逆序性有关(PARITY)。所谓逆序性,其几何意义就是在规定了一个正方向之后(比如从1,2,3,4,5...N这个顺序定义为正号),交换任意一对数都取一次负号。这样的性质我们在上述的面积函数中已经有所看到,实际上体积,更高维度的广义体积,也有正方向之说,只不过已经难以用右手法则(以及叉乘)来形象说明罢了。右手定则的局限性也是将高维面积推广成行列式表达的一个动机之一。

对于这种交换任何一对指标(操作数)就改变符号的性质,我们叫做:反对称(ANTISYMMETRIC)性。之所以要取不同行不同列元素的乘积,是因为如果有任意两个元素是同行(列)的,那么交换他们的列指标,乘积不变但符号要相反,这乘积必须是0,也就是在行列式的值中不予体现。

行列式的定义之所以这么冗杂,就是来自于面积映射的反对称性。实际上面积映射是一个2-FORM,把2-FORM拓展到任意的R-FORM,我们能看到R-FORM的形式和一个R乘R矩阵的行列式是完全一致的。

由上我们已经可以看到,2-FORM代表的是平面内的面积;3-FORM自然而然就是3维空间内的体积;4-FORM是4维空间里的超体积。以此类推。而实际上,由上我们已经看到,将这些矢量在给定的基坐标下写成矩阵(必定是方阵),矩阵的行列式就是对应的面积(体积)。这个推广的证明各位应该能在任何一本线性代数的专门教材中看到(如果没有的话可以自证)。

 

3,线性无关的几何意义

记空间的维度为N,给定一组矢量,什么是他们线性无关性?我们下面将说明,一组矢量的线性相关性本质上,是描述他们所张成的广义平行四边形体积是否为NULL(零)。

我们仍然从最简单的2维空间出发。如果两个2维空间的向量是线性相关的,那么就是说,其中一个与另外一个共线,也就是说,他们所张成的四边形,面积是零。反之,如果线性无关,则不共线,则面积不为零。

同理,如果三个三维空间的向量是线性无关的,那么他们三者就不共面。因此他们所张成的平行六面体,体积不是零。

更进一步地,我们知道,二维空间如果给定三个向量,他们必定共面(二维空间内不可能存在一个“体积”),因此他们必定线性相关。推而广之,我们不难理解,为什么一个维度为N的空间内,任意一组M个向量(M>N)必定线性相关了:因为维度大于空间维度的超平形四边体不存在。

由此我们得到一个一一对应的关系:

                                        N个向量线性无关 == 他们所张成的N维体体积不为零

反之,如果N个向量线性相关,那么他们所张成N维体,体积为零。

例如,一对共线矢量张成的平行四边形,退化成一个线,其面积显然是0;一组共面的三个矢量张成的平行六面体,退化成一个面,其体积显然是0。

因为我们已经知道行列式与面积的关系,因此我们有结论:

线性无关矢量组成的矩阵的行列式不为零;线性相关矢量组成的矩阵的行列式必为零。

 

4,行列式与矩阵的逆

我们知道,行列式为0的矩阵,不可逆;行列式不为零的矩阵,可逆。我们不禁要问,代表面积的行列式,是如何和线性变换的可逆性联系在一起的呢?

当我们理解了线性变换的几何意义之后,就不难解答了。我们现陈述如下:

记线性变换的矩阵为A。

如果我们把空间中一组线性无关的矢量都写成列向量的形式,那么他们所张成的N维体体积不为零,根据上面的分析,其值由行列式给出。向量经过线性变换A变换之后,得到的新向量形式如下:

注意到A是一个N*N的矩阵,向量是列向量。

变换前,N维体的体积是:

 

变换之后,N维体的体积是(注意到,第二个等式实际上说明了几何意义是如何定义矩阵乘法的,也就是N*N矩阵A和另外一个N个列向量组成的N*N矩阵的乘法):

 

A的行列式如果不为零,则代表这个变换后,N维体的体积不是NULL。又结合线性无关与体积的性质,我们可以说:

如果A的行列式不为零,那么A可以把一组线性无关的矢量,映射成一组新的,线性无关的矢量;A是可逆的(一对一的映射,保真映射,KERNEL是{0})

如果A的行列式为零,那么A就会把一组线性无关的矢量,映射成一组线性相关的矢量;A就不是可逆的(非保真映射,KERNEL不是{0}。我们可以研究他的陪集)

如果A的行列式为负数,那么A将会改变原N维体体积的朝向。

从线性无关到线性相关,其中丢失了部分信息(例如坍缩成共线或者共面),因此这个变换显然就是不可逆的。线性是否无关和所张成N维体的体积有直接关系,这个体积值又与A的行列式有关。因此我们就建立了A的行列式与其是否可逆的几何关系。

举例说明,我们假设A是一个3维的矩阵。如果映射前,有一组三个线性无关的矢量,我们知道它们张成的体积不是0;经过映射后,他们对应的新矢量也能张成一个平行六面体,那么这个平行六面体的体积就是原体积乘以A的行列式。

显然,如果A的行列式是0,那么变换后的新“平行六面体"的体积将不可避免的也是0。根据上文的结论,我们有:变换后的这一组新矢量线性相关。

结论:

线性变换A的行列式是否为零,就代表了其映射的保真性,也即,能不能把一组线性无关的矢量变换成另一组保持无关性的矢量。

 

5,秩

有时候,虽然A并不能保持把空间一组最大数目矢量的线性无关性,但它能保证一组更少数目矢量的线性无关性。这个数目往往少于A的维度(或者说,线性空间的维度),这个数目就叫做线性变换A的秩。

例如,一个秩为2的三乘三矩阵A。因为秩小于3,那么任何一个3维六面体经过他的变换后,体积都为零(退化一个面);但存在一个面积不为零的面,在变换之后还可以是一个非零面积的面。

所谓一个线性变换的秩,无非就是变换后,还能保持非零体积的几何形状的最大维度。

理解了秩,行列式和可逆性的几何意义,我们就能随意构造一些线性变换A,使得他要么保全所有的几何体,要么将特定维度特定结构的几何体,压缩成更低维度的几何体。这不就是所谓的“降维打击”么。。所以说,三体中的终极必杀,其实也就是一个行列式为0,秩比维度少1的一个线性变换而已。

 


转:http://blog.renren.com/blog/339698400/899265130

你可能感兴趣的:(矩阵)