若是不熟悉线性代数的概念,要去学习天然科学,如今看来就和文盲差很少。”算法
--瑞典数学家Lars Garding名著《Encounter with Mathematics》。编程
1. 矩阵的基本问题数组
然而“按照现行的国际标准,线性代数是经过公理化来表述的,它是第二代数学模型,...,这就带来了教学上的困难。”事实上,当咱们开始学习线性代数的时候,不知不觉就进入了“第二代数学模型”的范畴当中,这意味着数学的表述方式和抽象性有了一次全面的进化,对于从小一直在“第一代数学模型”,即以实用为导向的、具体的数学模型中学习的咱们来讲,在没有并明确告知的状况下进行如此剧烈的paradigm shift,不感到困难才是奇怪的。函数
大部分工科学生,每每是在学习了一些后继课程,如数值分析、数学规划、矩阵论以后,才逐渐可以理解和熟练运用线性代数。即使如此,很多人即便可以很熟练地以线性代数为工具进行科研和应用工做,但对于不少这门课程的初学者提出的、看上去是很基础的问题却并不清楚。好比说:工具
1``. 矩阵到底是什么东西?
学习
//向量能够被认为是具备n个相互独立的性质(维度)的对象的表示,矩阵又是什么呢?咱们若是认为矩阵是一组列(行)向量组成的新的复合向量的展开式,那么为何这种展开式具备如此普遍的应用?特别是,为何恰恰二维的展开式如此有用?若是矩阵中每个元素又是一个向量,那么咱们再展开一次,变成三维的立方阵,是否是更有用?
spa
2``. 矩阵的乘法规则究竟为何这样规定?
设计
//为何这样一种怪异的乘法规则却可以在实践中发挥如此巨大的功效?不少看上去彷佛是彻底不相关的问题,最后居然都归结到矩阵的乘法,这难道不是很奇妙的事情?难道在矩阵乘法那看上去莫名其妙的规则下面,包含着世界的某些本质规律?若是是的话,这些本质规律是什么?
code
3``. 行列式到底是一个什么东西?
对象
//为何会有如此怪异的计算规则?行列式与其对应方阵本质上是什么关系?为何只有方阵才有对应的行列式,而通常矩阵就没有(不要以为这个问题很蠢,若是必要,针对m x n矩阵定义行列式不是作不到的,之因此不作,是由于没有这个必要,可是为何没有这个必要)?并且,行列式的计算规则,看上去跟矩阵的任何计算规则都没有直观的联系,为何又在不少方面决定了矩阵的性质?难道这一切仅是巧合?
4``. 矩阵为何能够分块计算?
//分块计算这件事情看上去是那么随意,为何竟是可行的?
5``. 矩阵的转置运算和求逆运算之间有什么联系。
//对于矩阵转置运算AT,有(AB)T = BTAT,对于矩阵求逆运算A-1,有(AB)-1 = B-1A-1。两个看上去彻底没有什么关系的运算,为何有着相似的性质?这仅仅是巧合吗?
6``. 为何说P-1AP获得的矩阵与A矩阵“类似”?
//这里的“类似”是什么意思?
7``. 特征值和特征向量的本质是什么?
//它们定义就让人很惊讶,由于Ax =λx,一个诺大的矩阵的效应,居然不过至关于一个小小的数λ,确实有点奇妙。但何至于用“特征”甚至“本征”来界定?它们刻划的到底是什么?
2. 数学的直觉性和抽象性
这样的一类问题,常常让使用线性代数已经不少年的人都感到为难。就好像大人面对小孩子的刨根问底,最后总会无可奈何地说“就这样吧,到此为止”同样,面对这样的问题,不少老手们最后也只能用:“就是这么规定的,你接受而且记住就好”来搪塞。然而,这样的问题若是不能得到回答,线性代数对于咱们来讲就是一个粗暴的、不讲道理的、莫名其妙的规则集合,咱们会感到,本身并非在学习一门学问,而是被不禁分说地“抛到”一个强制的世界中,只是在考试的皮鞭挥舞之下被迫赶路,全然没法领略其中的美妙、和谐与统一。直到多年之后,咱们已经发觉这门学问如此的有用,却仍然会很是迷惑:怎么这么凑巧?
我认为,这是咱们的线性代数教学中直觉性丧失的后果。上述这些涉及到“如何能”、“怎么会”的问题,仅仅经过纯粹的数学证实来回答,是不能令提问者满意的。好比,若是你经过通常的证实方法论证了矩阵分块运算确实可行,那么这并不可以让提问者的疑惑获得解决。他们真正的困惑是:矩阵分块运算为何居然是可行的?究竟只是凑巧,仍是说这是由矩阵这种对象的某种本质所必然决定的?若是是后者,那么矩阵的这些本质是什么?只要对上述那些问题稍加考虑,咱们就会发现,全部这些问题都不是单纯依靠数学证实所可以解决的。像咱们的教科书那样,凡事用数学证实,最后培养出来的学生,只能熟练地使用工具,却欠缺真正意义上的理解。
自从1930年代法国布尔巴基学派兴起以来,数学的公理化、系统性描述已经得到巨大的成功,这使得咱们接受的数学教育在严谨性上大大提升。然而数学公理化的一个备受争议的反作用,就是通常数学教育中直觉性的丧失。数学家们彷佛认为直觉性与抽象性是矛盾的,所以绝不犹豫地牺牲掉前者。然而包括我本人在内的不少人都对此表示怀疑,咱们不认为直觉性与抽象性必定相互矛盾,特别是在数学教育中和数学教材中,帮助学生创建直觉,有助于它们理解那些抽象的概念,进而理解数学的本质。反之,若是一味注重形式上的严格性,学生就好像被迫进行钻火圈表演的小白鼠同样,变成枯燥的规则的奴隶。
对于线性代数的相似上述所提到的一些直觉性的问题,两年多来我断断续续地反复思考了4、五次,为此阅读了好几本国内外线性代数、数值分析、代数和数学通论性书籍,其中像前苏联的名著《数学:它的内容、方法和意义》、龚昇教授的《线性代数五讲》、前面提到的Encounter with Mathematics(《数学概观》)以及Thomas A. Garrity的《数学拾遗》都给我很大的启发。不过即便如此,我对这个主题的认识也经历了好几回自我否认。好比之前思考的一些结论曾经写在本身的blog里,可是如今看来,这些结论基本上都是错误的。所以打算把本身如今的有关理解比较完整地记录下来,一方面是由于我以为如今的理解比较成熟了,能够拿出来与别人探讨,向别人请教。另外一方面,若是之后再有进一步的认识,把如今的理解给推翻了,那如今写的这个snapshot也是颇有意义的。
由于打算写得比较多,因此会分几回慢慢写。也不知道是否是有时间慢慢写完整,会不会中断,写着看吧。
--------------------------------------------------------------------------
3. 矩阵的核心概念
今天先谈谈对线形空间和矩阵的几个核心概念的理解。这些东西大部分是凭着本身的理解写出来的,基本上不抄书,可能有错误的地方,但愿可以被指出。但我但愿作到直觉,也就是说能把数学背后说的实质问题说出来。
3.1 空间
首先说说空间(space),这个概念是现代数学的命根子之一,从拓扑空间开始,一步步往上加定义,能够造成不少空间。线形空间其实仍是比较初级的,若是在里面定义了范数,就成了赋范线性空间。赋范线性空间知足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间,内积空间再知足完备性,就获得希尔伯特空间。
总之,空间有不少种。你要是去看某种空间的数学定义,大体都是“存在一个集合,在这个集合上定义某某概念,而后知足某些性质”,就能够被称为空间。这未免有点奇怪,为何要用“空间”来称呼一些这样的集合呢?你们将会看到,其实这是颇有道理的。
咱们通常人最熟悉的空间,毫无疑问就是咱们生活在其中的(按照牛顿的绝对时空观)的三维空间,从数学上说,这是一个三维的欧几里德空间,咱们先无论那么多,先看看咱们熟悉的这样一个空间有些什么最基本的特色。仔细想一想咱们就会知道,这个三维的空间:
1``. 由不少(其实是无穷多个)位置点组成;
2``. 这些点之间存在相对的关系;
3``. 能够在空间中定义长度、角度;
4``.这个空间能够容纳运动,这里咱们所说的运动是从一个点到另外一个点的移动(变换),而不是微积分意义上的“连续”性的运动。
上面的这些性质中,最最关键的是第4条。第一、2条只能说是空间的基础,不算是空间特有的性质,凡是讨论数学问题,都得有一个集合,大多数还得在这个集合上定义一些结构(关系),并非说有了这些就算是空间。而第3条太特殊,其余的空间不须要具有,更不是关键的性质。只有第4条是空间的本质,也就是说,
容纳运动是空间的本质特征。
认识到了这些,咱们就能够把咱们关于三维空间的认识扩展到其余的空间。事实上,无论是什么空间,都必须容纳和支持在其中发生的符合规则的运动(变换)。你会发现,在某种空间中每每会存在一种 _相对应的 _变换,好比
拓扑空间中有拓扑变换
线性空间中有线性变换
仿射空间中有仿射变换
其实这些变换都只不过是对应空间中容许的运动形式而已。
所以只要知道**,**“空间”是容纳运动的一个对象集合,而变换则规定了对应空间的运动。
3.2 线性空间
下面咱们来看看线性空间。线性空间的定义任何一本书上都有,可是既然咱们认可线性空间是个空间,那么有两个最基本的问题必须首先获得解决,那就是:
1``. 空间是一个对象集合,线性空间也是空间,因此也是一个对象集合。那么线性空间是什么样的对象的集合?或者说,线性空间中的对象有什么共同点吗?
2``. 线性空间中的运动如何表述的?也就是,线性变换是如何表示的?
咱们先来回答第一个问题,回答这个问题的时候实际上是不用拐弯抹角的,能够直截了当的给出答案。线性空间中的任何一个对象,经过选取基和坐标的办法,均可以表达为向量的形式。一般的向量空间我就不说了,举两个不那么平凡的例子:
L1. 最高次项不大于n次的多项式的全体构成一个线性空间,也就是说,这个线性空间中的每个对象是一个多项式。若是咱们以x0, x1, ..., xn为基,那么任何一个这样的多项式均可以表达为一组n+1维向量,其中的每个份量ai其实就是多项式中x(i-1)项的系数。值得说明的是,基的选取有多种办法,只要所选取的那一组基线性无关就能够。这要用到后面提到的概念了,因此这里先不说,提一下而已。
L2. 闭区间[a, b]上的n阶连续可微函数的全体,构成一个线性空间。也就是说,这个线性空间的每个对象是一个连续函数。对于其中任何一个连续函数,根据魏尔斯特拉斯定理,必定能够找到最高次项不大于n的多项式函数,使之与该连续函数的差为0,也就是说,彻底相等。这样就把问题归结为L1了。后面就不用再重复了。
因此说,向量是很厉害的,只要你找到合适的基,用向量能够表示线性空间里任何一个对象。这里头大有文章,由于向量表面上只是一列数,可是其实因为它的有序性,因此除了这些数自己携带的信息以外,还能够在每一个数的对应位置上携带信息。为何在程序设计中数组最简单,却又威力无穷呢?根本缘由就在于此。这是另外一个问题了,这里就不说了。
下面来回答第二个问题,这个问题的回答会涉及到线性代数的一个最根本的问题。
线性空间中的运动,被称为线性变换。也就是说,你从线性空间中的一个点运动到任意的另一个点,均可以经过一个线性变化来完成。那么,线性变换如何表示呢?颇有意思,在线性空间中,当你选定一组基以后,不只能够用一个向量来描述空间中的任何一个对象,并且能够用矩阵来描述该空间中的任何一个运动(变换)。而使某个对象发生对应运动的方法,就是用表明那个运动的矩阵,乘以表明那个对象的向量。
简而言之,在线性空间中选定基以后,向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘法施加运动。
是的,矩阵的本质是运动的描述。若是之后有人问你矩阵是什么,那么你就能够响亮地告诉他,矩阵的本质是运动的描述。
但是多么有意思啊,向量自己不是也能够当作是n x 1矩阵吗?这实在是很奇妙,由于:
一个空间中的对象和运动居然能够用相类同的方式表示。
能说这是巧合吗?若是是巧合的话,那可真是幸运的巧合!能够说,线性代数中大多数奇妙的性质,均与这个巧合有直接的关系。
4.运动理解的进阶
上面说“矩阵是运动的描述”,到如今为止,好像你们都还没什么意见。可是我相信迟早会有数学系出身的网友来拍板转。由于运动这个概念,在数学和物理里是跟微积分联系在一块儿的。咱们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学。你们口口相传,差很少人人都知道这句话。可是真知道这句话说的是什么意思的人,好像也很少。简而言之,在咱们人类的经验里,运动是一个连续过程,从A点到B点,就算走得最快的光,也是须要一个时间来逐点地通过AB之间的路径,这就带来了连续性的概念。而连续这个事情,若是不定义极限的概念,根本就解释不了。古希腊人的数学很是强,但就是缺少极限观念,因此解释不了运动,被芝诺的那些著名悖论(飞箭不动、飞毛腿阿喀琉斯跑不过乌龟等四个悖论)搞得死去活来。由于这篇文章不是讲微积分的,因此我就很少说了。有兴趣的读者能够去看看齐民友教授写的《重温微积分》。我就是读了这本书开头的部分,才明白“高等数学是研究运动的数学”这句话的道理。
不过在我这个《理解矩阵》的文章里,“运动”的概念不是微积分中的连续性的运动,而是瞬间发生的变化。好比这个时刻在A点,通过一个“运动”,一会儿就“跃迁”到了B点,其中不须要通过A点与B点之间的任何一个点。这样的“运动”,或者说“跃迁”,是违反咱们平常的经验的。不过了解一点量子物理常识的人,就会马上指出,量子(例如电子)在不一样的能量级轨道上跳跃,就是瞬间发生的,具备这样一种跃迁行为。因此说,天然界中并非没有这种运动现象,只不过宏观上咱们观察不到。可是无论怎么说,“运动”这个词用在这里,仍是容易产生歧义的,说得更确切些,应该是“跃迁”。所以这句话能够改为:
“矩阵是线性空间里跃迁的描述”。
但是这样说又太物理,也就是说太具体,而不够数学,也就是说不够抽象。所以咱们最后换用一个正牌的数学术语——变换,来描述这个事情。这样一说,你们就应该明白了,
所谓变换,其实就是空间里从一个点(元素/对象)到另外一个点(元素/对象)的跃迁。
好比说,拓扑变换,就是在拓扑空间里从一个点到另外一个点的跃迁。
再好比说,仿射变换,就是在仿射空间里从一个点到另外一个点的跃迁。附带说一下,这个仿射空间跟向量空间是亲兄弟。作计算机图形学的朋友都知道,尽管描述一个三维对象只须要三维向量,但全部的计算机图形学变换矩阵都是4 x 4的。说其缘由,不少书上都写着“为了使用中方便”,这在我看来简直就是企图蒙混过关。真正的缘由,是由于在计算机图形学里应用的图形变换,其实是在仿射空间而不是向量空间中进行的。想一想看,在向量空间里相一个向量平行移动之后还是相同的那个向量,而现实世界等长的两个平行线段固然不能被认为同一个东西,因此计算机图形学的生存空间其实是仿射空间。而仿射变换的矩阵表示根本就是4 x 4的。又扯远了,有兴趣的读者能够去看《计算机图形学——几何工具算法详解》。
一旦咱们理解了“变换”这个概念,矩阵的定义就变成:
“矩阵是线性空间里的变换的描述。”
到这里为止,咱们终于获得了一个看上去比较数学的定义。不过还要多说几句。教材上通常是这么说的,在一个线性空间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矩阵所基于的基这两组基之间的一个变换关系。关于这个结论,能够用一种很是直觉的方法来证实(而不是通常教科书上那种形式上的证实),若是有时间的话,我之后在blog里补充这个证实。
这个发现过重要了。原来一族类似矩阵都是同一个线性变换的描述啊!难怪这么重要!工科研究生课程中有矩阵论、矩阵分析等课程,其中讲了各类各样的类似变换,好比什么类似标准型,对角化之类的内容,都要求变换之后获得的那个矩阵与先前的那个矩阵式类似的,为何这么要求?由于只有这样要求,才能保证变换先后的两个矩阵是描述同一个线性变换的。固然,同一个线性变换的不一样矩阵描述,从实际运算性质来看并非不分好环的。有些描述矩阵就比其余的矩阵性质好得多。这很容易理解,同一头猪的照片也有美丑之分嘛。因此矩阵的类似变换能够把一个比较丑的矩阵变成一个比较美的矩阵,而保证这两个矩阵都是描述了同一个线性变换。
这样一来,矩阵做为线性变换描述的一面,基本上说清楚了。可是,事情没有那么简单,或者说,线性代数还有比这更奇妙的性质,那就是,矩阵不只能够做为线性变换的描述,并且能够做为一组基的描述。而做为变换的矩阵,不但能够把线性空间中的一个点给变换到另外一个点去,并且也可以把线性空间中的一个坐标系(基)表换到另外一个坐标系(基)去。并且,变换点与变换坐标系,具备殊途同归的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里不少定理和规则会变得更加清晰、直觉。
这个留在下一篇再写吧。
由于有别的事情要作,下一篇可能要过几天再写了。
5. 矩阵理解再进阶
在第二部分结束的时候,我说:
“矩阵不只能够做为线性变换的描述,并且能够做为一组基的描述。而 做为变换的矩阵,不但能够把线性空间中的一个点给变换到另外一个点去,并且也可以把线性空间中的一个坐标系(基)表换到另外一个坐标系(基)去。并且,变换点 与变换坐标系,具备殊途同归的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里不少定理和规则会变得更加清晰、直觉。
这个留在下一篇再写吧。
由于有别的事情要作,下一篇可能要过几天再写了。 ”
然而这一拖就是一年半。一年半以来,这两篇粗糙放肆的文章被处处转载,以致于在Google的搜索提示中,个人名字跟“矩阵”是一对关联词汇。这对于学生时代数学一直不好的我来讲,实在是使人惶恐的事情。数学是何等辉煌精致的学问!表明着人类智慧的最高成就,是人与上帝对话的语言。而我实在连数学的门都还没进去,不要说谈什么理解,就是稍微难一些的题目我也不多能解开。我有什么资格去谈矩阵这样重要的一个数学概念呢?更况且,个人想法直观是直观,未见的是正确的啊,会不会误人子弟呢?所以,算了吧,到此为止吧,我这么想。
是时不时收到的来信逐渐改变了个人想法。
一年半以来,我收到过不下一百封直接的来信,要求我把后面的部分写出来。这些来信大部分是国内的网友和学生,也有少数来自正在国外深造的朋友,大部分是鼓励,有的是诚挚的请求,也有少数严厉斥责我不守承诺。无论是何种态度,这都代表他们对我这一点点小小的思考成果的鼓励,特别是对于我这种思惟的视角和尝试的鼓励。他们在信中让我知道,尽管个人数学水平不高,可是我这种从普通人(而不是数学家)视角出发,强调对数学概念和规则的直觉理解的思路,对于不少人是有益的。也许这条路子在数学中绝非正道,也不会走得很远,可是不管如何,在必定的阶段,对一部分人来讲,较之目前数学教材广泛采用的思路,这种方式可能更容易理解一些。既然是可能对一部分人有帮助的事情,那么我就不该该心存太多杂念,应该不断思考和总结下去。
因此,下面就是大家来信要求我写出来的东西。
首先来总结一下前面两部分的一些主要结论:
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``)了。
方式不一样,结果同样。
从第一个方式来看,那就是我在《理解矩阵》1/2中说的,把矩阵当作是运动描述,矩阵与向量相乘就是使向量(点)运动的过程。在这个方式下,
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列数放在一块儿组成的数学对象。”
好了,这基本上就是我想说的所有了。还留下一个行列式的问题。矩阵M的行列式其实是组成M的各个向量按照平行四边形法则搭成一个n维立方体的体积。对于这一点,我只能感叹于其精妙,却没法揭开其中奥秘了。也许我掌握的数学工具不够,我但愿有人可以给咱们你们讲解其中的道理了。
我不知道是否讲得足够清楚了,反正这一部分须要您花些功夫去推敲。
此外,请你们没必要等待这个系列的后续部分。以个人工做状况而言,近期内很难保证继续投入脑力到这个领域中,尽管我仍然对此兴致浓厚。不过若是还有(四)的话,多是一些站在应用层面的考虑,好比对计算机图形学相关算法的理解。可是我不承诺这些讨论近期内会出现了。