矩阵论主要研究的是线性空间以及在线性空间中的一些操作,主要是线性变换。当然书中主要是针对有限维的情况来讨论的,这样的话就可以用向量和矩阵来表示线性空间和线性变换,同其他的数学形式一样,矩阵是一种表达形式(notation),而这一方面可以简洁地表达出我们平时遇到的如线性方程和协方差关系的协方差矩阵等,另一方面又给进一步的研究或者问题的简化提供了一个平台。如特征值分析、稳定性分析就对应着诸如统计分布和系统稳定性等实际问题。而一系列的分解则可以方便方程的数值计算。作为矩阵论的学习,我们需要了解具体的一些计算究竟是怎么算的,但更关键的是要知道各个概念和方法的实际意义,各个概念之间的关系。
到此,我们完成了空间中向量的表示和线性变换的矩阵表达。这里涉及了基、坐标、过渡矩阵、变换矩阵、相似矩阵这几个重要的概念。上面算是内涵上的认识,下面我们需要知道线性空间里究竟有些什么东西,它是如何组成的,各个组成成分之间的关系,也就是空间的结构性方面的东西。
首先认识子空间(空间的组成部分),当然既然也是空间,也就要满足空间的加法和数乘的封闭性,要满足那八条定律。后者可以由父空间保证,前面的就要子空间自身素质了。同时要看子空间之间的并、交、直和运算和相应的秩的关系。这里提到了维数,就要多说几句了,空间中的元素往往是连续过渡的,但是对于有限空间而言还有离散的性质,那就是维数,我称其为“不伸则已,一伸则增一”,从这也就说明了为什么可以用若干个子空间的直和可以等价于原线性空间。
为什么要这样划分?因为我们在平时的研究中,整个线性空间太大了,我们需要缩小研究范围,某一个或几个特征子空间就够了。或者是模式分类时,每一个样本点就属于某个子空间,我们首先需要知道有哪些类,类的特点是什么,这就是特征子空间。当然对于协方差矩阵而言,特征值还具有能量属性,在清楚各个特征子空间的位置后,我们可以通过某些变换改变这些子空间的空间分布。在系统研究中,还可以在清楚特征子空间分布后成功地实现系统或方程的解耦。呵呵,可能其用途很多很多,但关键的一点就是,我们必须认识空间的结构,在此基础上再结合对应的物理空间或几何空间的实际意义进行进一步的处理。
老是待在线性代数的视野范围内,终归有些不爽,下面就正式进入了分析的领域,既然是矩阵分析,首先就是什么是矩阵函数,该如何定义,当然书中是先从矩阵级数出发的,既然是级数,就会牵涉到部分和的收敛问题,收敛就是极限问题,如何定义矩阵的极限?
其实总结到此本来可以宣告结束,但是随着计算技术的发展,诸如线性方程组求解、矩阵求逆等问题都需要一些补充内容:
1、矩阵分解(简化方程求解)
2、广义逆(病态矩阵和一般矩阵的求逆问题)不过其最小二乘性质还真好使。
3、特征值估计(求高阶的多项式方程可是要命的事,大概知道特征值和特征空间的位置对于一定的应用场合就可以了)
这就是我暂时对矩阵论的理解,呵呵,相对于一年前对线性代数的理解要深刻得多了,在以后的研究实践中会进一步丰富的。
什么是范数矩阵论及矩阵计算
在介绍主题之前,先来谈一个非常重要的数学思维方法:几何方法。在大学之前,我们学习过一次函数、二次函数、三角函数、指数函数、对数函数等,方程则是求函数的零点;到了大学,我们学微积分、复变函数、实变函数、泛函等。我们一直都在学习和研究各种函数及其性质,函数是数学一条重要线索,另一条重要线索——几何,在函数的研究中发挥着不可替代的作用,几何是函数形象表达,函数是几何抽象描述,几何研究“形”,函数研究“数”,它们交织在一起推动数学向更深更抽象的方向发展。
函数图象联系了函数和几何,表达两个数之间的变化关系,映射推广了函数的概念,使得自变量不再仅仅局限于一个数,也不再局限于一维,任何事物都可以拿来作映射,维数可以是任意维,传统的函数图象已无法直观地表达高维对象之间的映射关系,这就要求我们在观念中,把三维的几何空间推广到抽象的n维空间。
由于映射的对象可以是任何事物,为了便于研究映射的性质以及数学表达,我们首先需要对映射的对象进行“量化”,取定一组“基”,确定事物在这组基下的坐标,事物同构于我们所熟悉的抽象几何空间中的点,事物的映射可以理解为从一个空间中的点到另一个空间的点的映射,而映射本身也是事物,自然也可以抽象为映射空间中的一个点,这就是泛函中需要研究的对象——函数。
从一个线性空间到另一个线性空间的线性映射,可以用一个矩阵来表达,矩阵被看作线性映射,线性映射的性质可以通过研究矩阵的性质来获得,比如矩阵的秩反映了线性映射值域空间的维数,可逆矩阵反映了线性映射的可逆,而矩阵的范数又反映了线性映射的哪些方面的性质呢?矩阵范数反映了线性映射把一个向量映射为另一个向量,向量的“长度”缩放的比例。
范数是把一个事物映射到非负实数,且满足非负性、齐次性、三角不等式,符合以上定义的都可以称之为范数,所以,范数的具体形式有很多种(由内积定义可以导出范数,范数还也可以有其他定义,或其他方式导出),要理解矩阵的算子范数,首先要理解向量范数的内涵。矩阵的算子范数,是由向量范数导出的,由形式可以知:
由矩阵算子范数的定义形式可知,矩阵A把向量x映射成向量Ax,取其在向量x范数为1所构成的闭集下的向量Ax范数最大值作为矩阵A的范数,即矩阵对向量缩放的比例的上界,矩阵的算子范数是相容的。由几何意义可知,矩阵的算子范数必然大于等于矩阵谱半径(最大特征值的绝对值),矩阵算子范数对应一个取到向量Ax范数最大时的向量x方向,谱半径对应最大特征值下的特征向量的方向。而矩阵的奇异值分解SVD,分解成左右各一个酉阵,和拟对角矩阵,可以理解为对向量先作旋转、再缩放、最后再旋转,奇异值,就是缩放的比例,最大奇异值就是谱半径的推广,所以,矩阵算子范数大于等于矩阵的最大奇异值,酉阵在此算子范数的意义下,范数大于等于1。此外,不同的矩阵范数是等价的。
范数理论是矩阵分析的基础,度量向量之间的距离、求极限等都会用到范数,范数还在机器学习、模式识别领域有着广泛的应用。
首先说说空间(space),这个概念是现代数学的命根子之一,从拓扑空间开始,一步步往上加定义,可以形成很多空间。线形空间其实还是比较初级的,如果在里面定义了范数,就成了赋范线性空间。赋范线性空间满足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间,内积空间再满足完备性,就得到希尔伯特空间。
总之,空间有很多种。你要是去看某种空间的数学定义,大致都是“存在一个集合,在这个集合上定义某某概念,然后满足某些性质”,就可以被称为空间。这未免有点奇怪,为什么要用“空间”来称呼一些这样的集合呢?大家将会看到,其实这是很有道理的。
我们一般人最熟悉的空间,毫无疑问就是我们生活在其中的(按照牛顿的绝对时空观)的三维空间,从数学上说,这是一个三维的欧几里德空间,我们先不管那么多,先看看我们熟悉的这样一个空间有些什么最基本的特点。仔细想想我们就会知道,这个三维的空间:1.由很多(实际上是无穷多个)位置点组成;2. 这些点之间存在相对的关系;3. 可以在空间中定义长度、角度;4.这个空间可以容纳运动,这里我们所说的运动是从一个点到另一个点的移动(变换),而不是微积分意义上的“连续”性的运动,
上面的这些性质中,最最关键的是第4条。第1、2条只能说是空间的基础,不算是空间特有的性质,凡是讨论数学问题,都得有一个集合,大多数还得在这个集合上定义一些结构(关系),并不是说有了这些就算是空间。而第3条太特殊,其他的空间不需要具备,更不是关键的性质。只有第4条是空间的本质,也就是说,容纳运动是空间的本质特征。
认识到了这些,我们就可以把我们关于三维空间的认识扩展到其他的空间。事实上,不管是什么空间,都必须容纳和支持在其中发生的符合规则的运动(变换)。你会发现,在某种空间中往往会存在一种相对应的变换,比如拓扑空间中有拓扑变换,线性空间中有线性变换,仿射空间中有仿射变换,其实这些变换都只不过是对应空间中允许的运动形式而已。
因此只要知道,“空间”是容纳运动的一个对象集合,而变换则规定了对应空间的运动。
下面我们来看看线性空间。线性空间的定义任何一本书上都有,但是既然我们承认线性空间是个空间,那么有两个最基本的问题必须首先得到解决,那就是:
1.空间是一个对象集合,线性空间也是空间,所以也是一个对象集合。那么线性空间是什么样的对象的集合?或者说,线性空间中的对象有什么共同点吗?
2.线性空间中的运动如何表述的?也就是,线性变换是如何表示的?
我们先来回答第一个问题,回答这个问题的时候其实是不用拐弯抹角的,可以直截了当的给出答案。线性空间中的任何一个对象,通过选取基和坐标的办法,都可以表达为向量的形式。通常的向量空间我就不说了,举两个不那么平凡的例子:
L1.最高次项不大于n次的多项式的全体构成一个线性空间,也就是说,这个线性空间中的每一个对象是一个多项式。如果我们以x0,x1, ...,xn为基,那么任何一个这样的多项式都可以表达为一组n+1维向量,其中的每一个分量ai其实就是多项式中x(i-1)项的系数。值得说明的是,基的选取有多种办法,只要所选取的那一组基线性无关就可以。这要用到后面提到的概念了,所以这里先不说,提一下而已。
L2. 闭区间[a,b]上的n阶连续可微函数的全体,构成一个线性空间。也就是说,这个线性空间的每一个对象是一个连续函数。对于其中任何一个连续函数,根据魏尔斯特拉斯定理,一定可以找到最高次项不大于n的多项式函数,使之与该连续函数的差为0,也就是说,完全相等。这样就把问题归结为L1了。后面就不用再重复了。
所以说,向量是很厉害的,只要你找到合适的基,用向量可以表示线性空间里任何一个对象。这里头大有文章,因为向量表面上只是一列数,但是其实由于它的有序性,所以除了这些数本身携带的信息之外,还可以在每个数的对应位置上携带信息。为什么在程序设计中数组最简单,却又威力无穷呢?根本原因就在于此。这是另一个问题了,这里就不说了。
下面来回答第二个问题,这个问题的回答会涉及到线性代数的一个最根本的问题。
线性空间中的运动,被称为线性变换。也就是说,你从线性空间中的一个点运动到任意的另外一个点,都可以通过一个线性变化来完成。那么,线性变换如何表示呢?很有意思,在线性空间中,当你选定一组基之后,不仅可以用一个向量来描述空间中的任何一个对象,而且可以用矩阵来描述该空间中的任何一个运动(变换)。而使某个对象发生对应运动的方法,就是用代表那个运动的矩阵,乘以代表那个对象的向量。
简而言之,在线性空间中选定基之后,向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘法施加运动。
是的,矩阵的本质是运动的描述。如果以后有人问你矩阵是什么,那么你就可以响亮地告诉他,矩阵的本质是运动的描述。(chensh,说你呢!)
可是多么有意思啊,向量本身不是也可以看成是n x1矩阵吗?这实在是很奇妙,一个空间中的对象和运动竟然可以用相类同的方式表示。能说这是巧合吗?如果是巧合的话,那可真是幸运的巧合!可以说,线性代数中大多数奇妙的性质,均与这个巧合有直接的关系。
“矩阵是线性空间里跃迁的描述”。
可是这样说又太物理,也就是说太具体,而不够数学,也就是说不够抽象。因此我们最后换用一个正牌的数学术语——变换,来描述这个事情。这样一说,大家就应该明白了,所谓变换,其实就是空间里从一个点(元素/对象)到另一个点(元素/对象)的跃迁。比如说,拓扑变换,就是在拓扑空间里从一个点到另一个点的跃迁。再比如说,仿射变换,就是在仿射空间里从一个点到另一个点的跃迁。附带说一下,这个仿射空间跟向量空间是亲兄弟。做计算机图形学的朋友都知道,尽管描述一个三维对象只需要三维向量,但所有的计算机图形学变换矩阵都是4x4的。说其原因,很多书上都写着“为了使用中方便”,这在我看来简直就是企图蒙混过关。真正的原因,是因为在计算机图形学里应用的图形变换,实际上是在仿射空间而不是向量空间中进行的。想想看,在向量空间里相一个向量平行移动以后仍是相同的那个向量,而现实世界等长的两个平行线段当然不能被认为同一个东西,所以计算机图形学的生存空间实际上是仿射空间。而仿射变换的矩阵表示根本就是4x 4的。又扯远了,有兴趣的读者可以去看《计算机图形学——几何工具算法详解》。
一旦我们理解了“变换”这个概念,矩阵的定义就变成:
“矩阵是线性空间里的变换的描述。”
到这里为止,我们终于得到了一个看上去比较数学的定义。不过还要多说几句。教材上一般是这么说的,在一个线性空间V里的一个线性变换T,当选定一组基之后,就可以表示为矩阵。因此我们还要说清楚到底什么是线性变换,什么是基,什么叫选定一组基。线性变换的定义是很简单的,设有一种变换T,使得对于线性空间V中间任何两个不相同的对象x和y,以及任意实数a和b,有:
T(ax + by) = aT(x) + bT(y),
那么就称T为线性变换。
好,最后我们把矩阵的定义完善如下:
“矩阵是线性空间中的线性变换的一个描述。在一个线性空间中,只要我们选定一组基,那么对于任何一个线性变换,都能够用一个确定的矩阵来加以描述。”
理解这句话的关键,在于把“线性变换”与“线性变换的一个描述”区别开。一个是那个对象,一个是对那个对象的表述。就好像我们熟悉的面向对象编程中,一个对象可以有多个引用,每个引用可以叫不同的名字,但都是指的同一个对象。如果还不形象,那就干脆来个很俗的类比。
好在,我们可以找到同一个线性变换的矩阵兄弟们的一个性质,那就是:
若矩阵A与B是同一个线性变换的两个不同的描述(之所以会不同,是因为选定了不同的基,也就是选定了不同的坐标系),则一定能找到一个非奇异矩阵P,使得A、B之间满足这样的关系:
A =P-1BP
而在上面式子里那个矩阵P,其实就是A矩阵所基于的基与B矩阵所基于的基这两组基之间的一个变换关系。关于这个结论,可以用一种非常直觉的方法来证明(而不是一般教科书上那种形式上的证明),如果有时间的话,我以后在blog里补充这个证明。
这样一来,矩阵作为线性变换描述的一面,基本上说清楚了。但是,事情没有那么简单,或者说,线性代数还有比这更奇妙的性质,那就是,矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述。而作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去,而且也能够把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且,变换点与变换坐标系,具有异曲同工的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里很多定理和规则会变得更加清晰、直觉
首先来总结一下前面两部分的一些主要结论:
1. 首先有空间,空间可以容纳对象运动的。一种空间对应一类对象。
2. 有一种空间叫线性空间,线性空间是容纳向量对象运动的。
3. 运动是瞬时的,因此也被称为变换。
4. 矩阵是线性空间中运动(变换)的描述。
5. 矩阵与向量相乘,就是实施运动(变换)的过程。
6. 同一个变换,在不同的坐标系下表现为不同的矩阵,但是它们的本质是一样的,所以本征值相同。
言归正传。如果一组向量是彼此线性无关的话,那么它们就可以成为度量这个线性空间的一组基,从而事实上成为一个坐标系体系,其中每一个向量都躺在一根坐标轴上,并且成为那根坐标轴上的基本度量单位(长度1)。
在这里,我实际上已经回答了一般人在学习线性代数是最困惑的一个问题,那就是为什么矩阵的乘法要规定成这样。简单地说,是因为: