接着理解矩阵。算法
上一篇里说“矩阵是运动的描述”,到如今为止,好像你们都还没什么意见。可是我相信迟早会有数学系出身的网友来拍板转。由于运动这个概念,在数学和物理里是跟微积分联系在一块儿的。咱们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学。你们口口相传,差很少人人都知道这句话。可是真知道这句话说的是什么意思的人,好像也很少。简而言之,在咱们人类的经验里,运动是一个连续过程,从A点到B点,就算走得最快的光,也是须要一个时间来逐点地通过AB之间的路径,这就带来了连续性的概念。而连续这个事情,若是不定义极限的概念,根本就解释不了。古希腊人的数学很是强,但就是缺少极限观念,因此解释不了运动,被芝诺的那些著名悖论(飞箭不动、飞毛腿阿喀琉斯跑不过乌龟等四个悖论)搞得死去活来。由于这篇文章不是讲微积分的,因此我就很少说了。有兴趣的读者能够去看看齐民友教授写的《重温微积分》。我就是读了这本书开头的部分,才明白“高等数学是研究运动的数学”这句话的道理。编程
不过在我这个《理解矩阵》的文章里,“运动”的概念不是微积分中的连续性的运动,而是瞬间发生的变化。好比这个时刻在A点,通过一个“运动”,一会儿就“跃迁”到了B点,其中不须要通过A点与B点之间的任何一个点。这样的“运动”,或者说“跃迁”,是违反咱们平常的经验的。不过了解一点量子物理常识的人,就会马上指出,量子(例如电子)在不一样的能量级轨道上跳跃,就是瞬间发生的,具备这样一种跃迁行为。因此说,天然界中并非没有这种运动现象,只不过宏观上咱们观察不到。可是无论怎么说,“运动”这个词用在这里,仍是容易产生歧义的,说得更确切些,应该是“跃迁”。所以这句话能够改为:工具
“矩阵是线性空间里跃迁的描述”。学习
但是这样说又太物理,也就是说太具体,而不够数学,也就是说不够抽象。所以咱们最后换用一个正牌的数学术语——变换,来描述这个事情。这样一说,你们就应该明白了,所谓变换,其实就是空间里从一个点(元素/对象)到另外一个点(元素/对象)的跃迁。好比说,拓扑变换,就是在拓扑空间里从一个点到另外一个点的跃迁。再好比说,仿射变换,就是在仿射空间里从一个点到另外一个点的跃迁。附带说一下,这个仿射空间跟向量空间是亲兄弟。作计算机图形学的朋友都知道,尽管描述一个三维对象只须要三维向量,但全部的计算机图形学变换矩阵都是4 x 4的。说其缘由,不少书上都写着“为了使用中方便”,这在我看来简直就是企图蒙混过关。真正的缘由,是由于在计算机图形学里应用的图形变换,其实是在仿射空间而不是向量空间中进行的。想一想看,在向量空间里一个向量平行移动之后还是相同的那个向量,而现实世界等长的两个平行线段固然不能被认为同一个东西,因此计算机图形学的生存空间其实是仿射空间。而仿射变换的矩阵表示根本就是4 x 4的。又扯远了,有兴趣的读者能够去看《计算机图形学——几何工具算法详解》。spa
一旦咱们理解了“变换”这个概念,矩阵的定义就变成:.net
“矩阵是线性空间里的变换的描述。”对象
到这里为止,咱们终于获得了一个看上去比较数学的定义。不过还要多说几句。教材上通常是这么说的,在一个线性空间V里的一个线性变换T,当选定一组基以后,就能够表示为矩阵。所以咱们还要说清楚到底什么是线性变换,什么是基,什么叫选定一组基。 线性变换的定义是很简单的,设有一种变换T,使得对于线性空间V中间任何两个不相同的对象x和y,以及任意实数a和b,有:
\[T(ax + by) = aT(x) + bT(y)\]
那么就称T为线性变换。blog
定义都是这么写的,可是光看定义还得不到直觉的理解。线性变换到底是一种什么样的变换?咱们刚才说了,变换是从空间的一个点跃迁到另外一个点,而线性变换,就是从一个线性空间V的某一个点跃迁到另外一个线性空间W的另外一个点的运动。 这句话里蕴含着一层意思,就是说一个点不只能够变换到同一个线性空间中的另外一个点,并且能够变换到另外一个线性空间中的另外一个点去。无论你怎么变,只要变换先后都是线性空间中的对象,这个变换就必定是线性变换,也就必定能够用一个非奇异矩阵来描述。而你用一个非奇异矩阵去描述的一个变换,必定是一个线性变换。有的人可能要问,这里为何要强调非奇异矩阵?所谓非奇异,只对方阵有意义,那么非方阵的状况怎么样?这个提及来就会比较冗长了,最后要把线性变换做为一种映射,而且讨论其映射性质,以及线性变换的核与像等概念才能完全讲清楚。我以为这个不算是重点,若是确实有时间的话,之后写一点。如下咱们只探讨最经常使用、最有用的一种变换,就是在同一个线性空间以内的线性变换。也就是说,下面所说的矩阵,不做说明的话,就是方阵,并且是非奇异方阵。学习一门学问,最重要的是把握主干内容,迅速创建对于这门学问的总体概念,没必要一开始就考虑全部的细枝末节和特殊状况,自乱阵脚。get
接着往下说,什么是基呢?这个问题在后面还要大讲一番,这里只要把基当作是线性空间里的坐标系就能够了。注意是坐标系,不是坐标值,这二者但是一个“对立矛盾统一体”。这样一来,“选定一组基”就是说在线性空间里选定一个坐标系。就这意思。数学
好,最后咱们把矩阵的定义完善以下:
“矩阵是线性空间中的线性变换的一个描述。在一个线性空间中,只要咱们选定一组基,那么对于任何一个线性变换,都可以用一个肯定的矩阵来加以描述。”
理解这句话的关键,在于把“线性变换”与“线性变换的一个描述”区别开。一个是那个对象,一个是对那个对象的表述。就好像咱们熟悉的面向对象编程中,一个对象能够有多个引用,每一个引用能够叫不一样的名字,但都是指的同一个对象。若是还不形象,那就干脆来个很俗的类比。
好比有一头猪,你打算给它拍照片,只要你给照相机选定了一个镜头位置,那么就能够给这头猪拍一张照片。这个照片能够当作是这头猪的一个描述,但只是一个片面的的描述,由于换一个镜头位置给这头猪拍照,能获得一张不一样的照片,也是这头猪的另外一个片面的描述。全部这样照出来的照片都是这同一头猪的描述,可是又都不是这头猪自己。
一样的,对于一个线性变换,只要你选定一组基,那么就能够找到一个矩阵来描述这个线性变换。换一组基,就获得一个不一样的矩阵。全部这些矩阵都是这同一个线性变换的描述,但又都不是线性变换自己。
可是这样的话,问题就来了若是你给我两张猪的照片,我怎么知道这两张照片上的是同一头猪呢?一样的,你给我两个矩阵,我怎么知道这两个矩阵是描述的同一个线性变换呢?若是是同一个线性变换的不一样的矩阵描述,那就是本家兄弟了,见面不认识,岂不成了笑话。
好在,咱们能够找到同一个线性变换的矩阵兄弟们的一个性质,那就是:
若矩阵A与B是同一个线性变换的两个不一样的描述(之因此会不一样,是由于选定了不一样的基,也就是选定了不一样的坐标系),则必定能找到一个非奇异矩阵P,使得A、B之间知足这样的关系:
\[A = P^{-1}BP\]
线性代数稍微熟一点的读者一下就看出来,这就是类似矩阵的定义。没错,所谓类似矩阵,就是同一个线性变换的不一样的描述矩阵。 按照这个定义,同一头猪的不一样角度的照片也能够成为类似照片。俗了一点,不过能让人明白。
而在上面式子里那个矩阵P,其实就是A矩阵所基于的基与B矩阵所基于的基这两组基之间的一个变换关系。关于这个结论,能够用一种很是直觉的方法来证实(而不是通常教科书上那种形式上的证实),若是有时间的话,我之后在blog里补充这个证实。
这个发现过重要了。原来一族类似矩阵都是同一个线性变换的描述啊! 难怪这么重要!工科研究生课程中有矩阵论、矩阵分析等课程,其中讲了各类各样的类似变换,好比什么类似标准型,对角化之类的内容,都要求变换之后获得的那个矩阵与先前的那个矩阵式类似的,为何这么要求?由于只有这样要求,才能保证变换先后的两个矩阵是描述同一个线性变换的。固然,同一个线性变换的不一样矩阵描述,从实际运算性质来看并非不分好环的。有些描述矩阵就比其余的矩阵性质好得多。这很容易理解,同一头猪的照片也有美丑之分嘛。因此矩阵的类似变换能够把一个比较丑的矩阵变成一个比较美的矩阵,而保证这两个矩阵都是描述了同一个线性变换。
这样一来,矩阵做为线性变换描述的一面,基本上说清楚了。可是,事情没有那么简单,或者说,线性代数还有比这更奇妙的性质,那就是,矩阵不只能够做为线性变换的描述,并且能够做为一组基的描述。而做为变换的矩阵,不但能够把线性空间中的一个点给变换到另外一个点去,并且也可以把线性空间中的一个坐标系(基)表换到另外一个坐标系(基)去。 并且,变换点与变换坐标系,具备殊途同归的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里不少定理和规则会变得更加清晰、直觉。
这个留在下一篇再写吧。
由于有别的事情要作,下一篇可能要过几天再写了。
做者:myan
来源:CSDN
原文:https://blog.csdn.net/myan/article/details/649018