线性代数的本质
导入
3的含义
如果在大街上随便拉了一个人,问他说3到底代表什么含义,想必他一定会满头雾水的吧。可是如果我要问我自己同样的问题,我应该怎么回答呢?3,它当然是一个数字,可以表示的含义有很多。比如说3可以代表物品的数量,说是有三个物体。3也可以代表某个物品在一列物品中的序号,比如说队伍中的第3个人。3还可以代表三倍。
仔细想想当初我们在学这些简单的数字的时候,是如何学习的呢?3+1=4可以解释为三个物品和一个物品放在一起就变成了4个物品。也可以解释为一列物品中的第3个再向后数一个也就是第4个物品了。对于乘法的解释,虽然可以把它解释成多次的加法,不过要说到直观的含义,3×2=6可以解释为对一个数量先×3倍,再×2倍就等同于是×了6倍一样。
当然对于那些有着更加精深的知识的人来说,想必可以从更加深层的角度去看待这个数字吧。可是在初学者的目光来看,不借助它的一些直观含义,是很难理解到它的内涵的。
虽然我们从小的时候就已经接受了带有着这样思想的教育,可是到了中学和大学,知识的讲述方式变得越来越机械化了。假如说在接受初等教育的时候,想要教给学生们10以内的数字,就先要讲如何构造一个实数集,如何在这个实数集上构造运算,的确这些东西看起来更加厉害了,可是造成的结果又很矛盾。
也就是虽然教授的内容更加贴近于本质,可是学生们对它的理解却越来越肤浅了。
在大学的课程中,线性代数尤其地表现了这种现象。学生们在学习过这门课之后,不会在脑海里留下一点儿的直观印象,只有冰冷冷的数字和矩阵。这样对于培养他们以线性代数的思维去看待问题也没有丝毫的帮助。
从向量说起
说到线性代数,如果想以一种更好的方式来讲述线性代数,应该从哪里开始呢?如果是上过这门课,却没有很好地了解其中含义的同学,可能会觉得应该是矩阵吧。然而如果先介绍了向量,对于矩阵的理解就会更加容易。
已经了解过的向量
在中学的物理课上,同学们应该已经了解过一些关于向量的知识了。向量有方向,有大小,可以用来表示一个力,也可以用来表示一个运动。向量之间可以根据平行四边形法则进行相加,向量之间也可以相乘,不过具体的运算过程应该都记不住了吧。当然向量也可与一个常数进行相乘。还有一种特殊的运算,是对于两个向量来说,先画出其中一个向量对于另一个的投影,然后用这个投影乘后者。不过这具体表示什么含义,可能也记不太清了。
实际上凭借这些印象,对于理解我们的大学课程中所要涉及到的线性代数的内容来说,就已经很足够了。
那么向量是什么呢?像之前提过的3一样,它可以有很多种不同的含义。当然我们也会发现这里所说的3其实并不是特指3,如果把这个3换成说是一个数字,也是同样成立的。3之于数字的整体就像是某一个向量,至于向量的整体一样。显然,从整体中抽离出一个元素,这有利于我们的理解,所以也就这样做了。
向量可以表示一列数,可以表示一个运动,可以表示一个力,可以表示某个空间中的一个有向箭头。两个向量相加获得一个新的向量,可以解释为两列数按行相加,两个运动的合运动,两个力的合力,两个箭头以起点和终点相连,而构成了一个新的有向箭头。而向量乘一个常数可以解释为一列数按行相乘获得一列新的数,一个以距离和常数的为新距离的一个新运动,一个新的力,一个经过拉伸的有向箭头。
向量的本质是线性关系
但是同学们到了现在也并不是小时候的理解水平了,所以在这里我们还可以多讲一些更加深层的东西,这样就会更加有助于理解。
到底什么是向量,有一种更加严谨的说法,那就是说向量是具有线性关系的一列数。那么什么是线性关系呢,它要求这列数怎么样?
\[可加性:L(x+t)=L(x)+L(t)\\ 一次齐次性:L(mx) = mL(x) \]把一列数想象成自变量,那么向量就是一个接受一组数输入,输出一个向量的函数。而这个函数是因为符合了上面所说的可加性和一次齐次性才得以被称之为向量的。
空间中的向量
向量在空间中
只要是满足线性关系的实体,它们都可以被称作为一个向量。可是好像上面所说的关于线性关系的内容,只是针对于在表达一列数的含义的时候的向量。那么向量在表示一个空间中的有向箭头的含义的时候,又应该如何呢?
如果使用坐标的话,就能够很方便地把几何和代数联系起来了。可是这样好像又忽略了空间自己本身的一些性质。如果想用更空间的方法来表示空间的话,也可以使用基向量这个概念。
称一系列向量,通过彼此间的线性运算。得到的一个新向量为前者的线性组合。想象一下,一个位于空间中的有线箭头,我们如果把它的起点固定在原点,那么用终点的坐标就可以表示这个箭头了。这时再定义分别指向每一个坐标轴的一个长度为单位长度的向量,会发现只要使用终点的坐标,作为这些小的向量之间的线性组合时所采用的系数,就可以得到我们原先的那个向量了。因为终点总是有一个坐标,所以该空间内的任何一个向量都可以用这些小的向量的线性组合来表示。
可以通过线性组合来表示某空间中的所有向量的一系列向量就称为该空间的一组基向量。很显然上面我们说的这组小的向量就是基向量中很特殊的一种,也被称为叫标准正交基。
当然这里所说的一点其实并不是很符合直觉的。除了标准正交基以外,一个空间之中真的还有可能存在别的基吗?一些并不是直直地指向坐标轴,而是歪七扭八的向量真的能表示在空间中的所有向量?我们不如从反面来看这个过程。
空间由向量张成
一组向量可以通过线性组合表达一个空间中的所有向量是称之为其张成了该空间。那么假设现在我们有一个向量,可以张成怎样的空间呢?当然一般来说就应该是一个一维的空间,不过我们当然也不能忽略了零向量的这种特殊情况,那样空间就是零维的,也就是一个点。
不过不如让我们先不要考虑零向量的这种特殊情况吧。在这样的前提下,我们现在手上就有一个一维的空间。如果这时我们又获得了一个新的向量呢?可以想象到,如果这个新的向量在我们原本所有的空间上存在着,那么我们的空间不会变化。反之我们的空间就会增长一维变成二维的。前一种情况中称我们手中的两个向量是线性相关的,后一种情况则称其为线性无关的。
很容易推断出,如果保持着我们手中的一系列向量是线性无关的,那么我们就能张成一个维度数等于向量数的空间。空间的维度数不会比向量数更大了,但是它可能比向量数更小,那时我们手中的一系列向量是线性相关的。
现在我们总是说到我们手中的向量,或者说是一系列向量,不过到底是怎么一回事呢?这些向量之间的关系到底是怎样的呢?既然向量可以用一列数表示,那么一个很符合直觉的推断就是这些向量将按行放置,成为一个数字的方形阵,不过到底是长方形的还是正方形的,好像也没有一个定论。实际上,不管长方还是正方,它们都是矩阵。
一行向量组成矩阵
矩阵表示一个空间
即使仅仅出自于自己的强迫症,也应该觉得它是正方形的会比较好吧。想象一下一个正方形的矩阵代表了什么东西,这就是一列长度和个数相等的向量。不过这时我们还不知道这些向量是线性相关的还是线性无关的。当然这个矩阵肯定可以表示由它的列向量们所张成的空间,这个空间的维度称之为该矩阵的秩。如果秩等于向量的数量和长度,则该矩阵为满秩矩阵,非奇异矩阵。反之则为缺秩矩阵,奇异矩阵。
可是归根结底并不能靠强迫症来扭曲一个事实。如果偏偏就是3个长度为2的向量,按行排列成一个矩阵,又应该如何去解释它呢?它的列向量也张成了一个空间,好像和正方形的矩阵也没有什么区别。唯一的不同之处大概就在于,它的列向量们一定是线性相关的。
当然长方形的矩阵也可以换个方向,并不是扁扁的,而是高高的,这当然也有可能发生。而它的列向量们所张成的空间的维度数,一定是不及向量的长度的。
对于矩阵有一种操作叫做转置,也就是把原本的行写成列,把原本的列写成行。这样的方法虽然对于正方形的矩阵也可以使用,不过对于长方形的矩阵来说效果更加明显,它可以把扁的变成高的或者是高的,变成扁的。
矩阵的计算
矩阵加法
这样看起来好像是很明白了,矩阵是一系列向量,矩阵就代表这一系列向量张成的空间。不过我们一般所谈论的矩阵都是正方形的。可是空间之间又怎么相加呢?我们应该如何定义矩阵之间的加法呢?或者说这个操作就不存在吗?
其实从直观含义出发去窥探一个实体的性质是会有残缺的。比如说我们把3理解为一列事物中的第3个,那么,我们要怎么样去理解3×2=6这个事实呢?也并不是说绝对不能解释,但总归是有点别扭,还不如就说成是把三看成倍数那样来的简单易懂。
所以在这里我们也依靠着词语的多义性,把矩阵理解成单纯就是一系列的向量摆放在一起这样看加法就很容易定义了。就让那些向量自顾自地加到一起就好了,减法也是一样,数乘也是一样。
矩阵乘法
可惜矩阵之间的乘法还是不太能让人理解。这些向量到底要怎么乘的?难道是每个相当自顾自地就乘了起来吗?可是要是这么看的话,为什么不用另一种规则呢?好像有很多种规则看起来都很像是矩阵的乘法。这里并不是在说理不理解其直观含义的问题,还是在说符不符合直觉的问题。假如真的是符合直觉的,那么即使不了解其直观含义,也不可能把它理解成另外一副样子。就像是向量的加法,只要受到过一点数学教育的人就能够大概猜出它是怎么进行运算的。可是矩阵的乘法显然没有这么容易猜测,它不符合直觉。
先有鸡还是先有蛋的问题
那么把向量理解成力?理解成运动?或者说理解成什么才能方便我们理解矩阵之间的乘法呢?在讨论这个看起来很枯燥的,很考验逻辑的问题之前,我们或许应该先去看看另外一个更加形象的问题。
之前我们讲了一系列向量是如何张成空间的,所谓张成空间,就是它们可以通过线性组合表示该空间中的所有向量。也就是说空间是由一系列向量进行定义的。可是另一方面,每一个向量不都得先存在于一个空间之中才能出现吗?
到底是先有鸡还是先有蛋?这个奇妙的问题在社会上流传已经不知道过了多少年了,也不知道是从何处开始的了。好像在一般的时候,人们都不会给这个问题配上一个确切的答案。
想象一下,我如果在这里说了,诶,是先存在一个默认的空间,然后向量再在里面出现的。那么这个默认的空间的基向量也是所谓的默认基向量吗?反过来也同理。看起来,先有鸡还是先有蛋的问题,即使在线性代数里我们也丝毫没有办法解决。
不过最终鸡和蛋还是出现了,就像我们最终还是看到了空间和向量一样。虽然不知道是谁先出现的,不过我们可以很容易地想到,这个默认的空间,如果用矩阵来表示他的话,那么应该是一个对角矩阵。也就是除了主对角线上的,其他元素都为0的矩阵。而且其主对角线上的元素均为1。就像前面所说的一样,如果我们去猜测,那么应该就是这样,也就是说它是符合直觉的。
有了这一团默认的东西,我们再拿出我们自己的向量和空间,都可以看到是有所基础的了。比如说我们拿出一个向量,这单单是一个向量吗?不!这是默认的空间中的一个向量。我们又拿出一个空间,这单单是一个空间吗?不!这是默认的空间中的一个空间。
可是这么一说就有些地方不对劲儿了。你看我现在有默认的空间,它朴实无华,什么特殊的性质都没有。我的向量都是放在这里面的,这就像是我的抽屉一样,我从中拿出向量就可以开始计算。可是另一方面,我用这个抽屉里的向量又可以构成新的千奇百怪的,光怪陆离的新的空间。这个新的空间中的向量去哪儿去了?我怎么没有看到啊?
联想到矩阵可以表示一个空间,既然有各种各样的矩阵,就应该有各种各样的空间呀,而且矩阵还可以进行运算得到一个新的矩阵,那么空间也可以经过变换得到一个新的空间吗?看起来矩阵是可以了,这么空间也就可以?这样或许还有些草率。让我们来直接想一想空间是什么样的。我们在中学时学过坐标轴,它表示了一个很典型的二维空间。倒不如说这就像是我们的那个默认空间。
这个空间上有坐标,坐标间还可以画出很多函数的曲线来。我们当时学过,这些函数的图像可以平移,旋转,伸缩。不过,在这些函数的图像进行伸缩的时候,总感觉不单单是函数自己发生了变化。通过换元法的思想,我们可以看见函数自己好像最重要的地方都没有变,反而是坐标轴它好像变化了一点。
等等……坐标轴变化了一点儿,这是不是就是上面所说的空间,通过变换获得了一个新的空间呀?我们可以在脑海中想象一个空间,而且为了方便我们看清它,再在里面放置一个坐标轴。我们还可以直接在上面画出一些网格线。这些都是虚拟的,只是为了辅助我们思考的工具,所以没关系的,尽管添加。
那么看起来空间还真有可能进行变换,可以伸可以缩,可以旋,可以转,当然还可以左右上下乱窜式的平移。不过有一些变换看起来似乎并不应该成为我们所研究的对象。比如说上下左右的平移。向量代表的是起点与终点之间的有向距离,那么即使平移了,它也不会改变。或者当空间扭曲起来,卷曲起来的时候,有一些向量看起来都是弯弯的了,这难道也会保持线性吗?
假如一个空间在变换前后,任意两点间的距离均保持不变或者放大收缩一个固定的倍数,则称这样的变换为仿射变换。如果额外的,该空间的原点还没有发生移动,则称这个变换为线性变换。
那么我们重新来看看矩阵这个东西吧,首先我们有一个默认的空间,然后通过这个矩阵我们也看到了这个矩阵所表示的空间。也就是说矩阵这个东西,输入一个空间后可以得到一个空间。 也就是说每个矩阵实际上都是一个对应关系,是一个映射,一个函数?再联系到上面所说的内容,一个矩阵也可以表示一个线性变换?
可是从一个默认的空间到一个矩阵所表示的空间,到底是怎么样发生变换的?这时虽然我们还不清楚这个函数的具体作用原理是什么样的,不过我们可以看到它的输入和输出,并且可以据之对前者进行推测。好像就是把原来的空间的基向量换成了矩阵的列向量啊。
仔细想想,确实。一个空间这么大,有无数个向量,并不好描述。可是因为它是由基向量张成的,所以这个空间的所有信息也都蕴含在这一组基向量中,那么对于空间的变换,其实就是对于其基向量的变换啊。那么,也就是说,可以在理解矩阵乘法时,可以把矩阵看作代表一个线性变换,那么矩阵的相乘便是线性变换的叠加。
向量乘法,功,洛伦兹力
虽然一提到矩阵就很警觉地打出了“矩阵的计算”这样的标题,从加法,乘法等依次展开探讨,可是对于向量,好像还忽略了它的乘法没有讲。可事实是没有讲,大家实际上却都已经学习过了。在这里还要提一嘴的原因是,有了上面的关于空间的探讨,将可以为我们对于向量乘法的的理解提供新的角度。在高中物理中所涉及的那些知识中,功即为力与位移的点积。洛伦兹力中则出现了速度与磁场强度的叉积。也就是说,对于向量,存在着两种乘法。
对于功和洛伦兹力我们还能不能想起更多的东西了?或许有一点。比如说,功其实是力与位移在力的方向上的投影的乘积,反过来也可以。而且,对于功的计算,输入两个矢量,输出一个标量。对于洛伦兹力,确定它的方向的时候好像要使用右手定则。而且,是输入两个矢量,获得一个矢量。有了这些很不清晰的印象,就已经能够对我们关于向量的乘法的理解有很多帮助了。
点积,是接收两个长度相等的向量,输出一个数。而叉积,是接受两个三维空间中的向量,输出一个向量。两者的计算方法也都不算难,只需要简单记忆一下就可以了。不过在其本后的几何含义,也有着很多故事。
点积的几何意义
想象一下点积的计算过程。我们手中有两个向量,而后随便选取一个对另外一个做投影,再使用这个投影乘以另外的那个向量的长度,便得到了一个数字。在这个过程中,就好像是向量的维度变低了一样。既然向量所处在空间中,那么实际上是空间的维度变低了。
上面说过矩阵可以通过替换基向量的方式表达一个线性变换,那么显而易见一个长方形的扁的矩阵就可以表示一个使得空间维度降低的线性变换。假设一下,如果把点积的计算中的左操作数转置,那么就可以很容易地计算出结果来。可是,这样或许只是一个巧合。如果给想要说一个向量和由它的转置所得到的矩阵有什么关系,还得去更深的地方找原因。能找到吗?能。怎么找的?一点几何上的把戏,仅仅是出于技巧。这样的东西有自己推算的价值,不过由他人讲述的价值却不大,所以这里并不讲述这一点。
只看结果,一个向量和由它的转置两者确实有着非常深刻的关系。那就是,另一个向量与前一个向量点乘,得到的结果和对其后者所对应的线性变换本质上是相同的。
叉积的几何含义
上面说到了点积可以发挥出和空间的压缩同样的效果。不过点积实在是好用,还能发挥出别的效果。因为这其中并没有什么可以去直观理解的东西,所以我也就单刀直入地讲了:在三维空间中,对于两个向量,通过构成平行六面体并取其有向体积,其表示了一个接受一个向量输出一个数字的映射。而对于一个变量,通过点积,也表示了一个接受向量输出一个数字的映射。这样,两种映射之间或许就会有一些奇妙的联系。
不过像是上面说的那样,这样的联系到底是如何建立的,并不有趣,也不直观,只是一些几何上的把戏而已,所以不讲。直接看结论,就是说凭借两种映射之间的关系,我们获得了叉乘这个在三维空间种接受两个向量输出一个向量的运算。通过几何上的关系,我们看到,输出向量与两个输入向量张成的平面垂直,且长度等于后两者张成的有向面积。
空间的变换是波澜壮阔的
不同空间视角下的向量与矩阵
好的,我们已经知道了,存在着许多不同的空间,而向量又存在于空间中,那么,对于同一个向量,在不同的空间看来应该是什么样子的呢?比如说,我们现在拿到了两个向量,它们存在于不同的空间,那么我们应该如何去判断两者是否相等呢?首先有一点可以确定,那就是,两者有相等的可能性。
其次,很符合直觉的,在两者之间进行比较的时候,可以任意把其中一个变换到另外一个的空间中进行比较。当然,更麻烦一点的,还可以将两者均变换到第三个空间内进行比较。
即使是表现形式相等的向量,因为是从不同的空间的角度去看待,所以就可以得到不同的真正含义。那么对于矩阵又如何呢?矩阵如果表示空间,直觉上也是同样的。可是如果表示变换的话,对于不同的空间,表现形式相同的变换也可以得到不同而真正含义吗?可是说到底,变换的含义到底是指什么?理解成基的替换就很好理解了。
只需要计算上的一些小技巧,就能够得到我们所想要的东西,那就是两个线性变换施加于一个空间时,前后顺序是否会影响最终结果。如果会影响,那么说明,不同空间视角下的矩阵和向量一样,含义会随着空间改变。事实也的确如此。
将向量变换到另外一个空间中的时候,过程很简单。对于变换来说,也是同样的。想象一下,一个空间中的变换,想要将它的含义原封不动地在另一个空间内进行表达,应该如何做?答案是先将后者变换为前者,使得变换不需要改变即可作用,然后将空间再改变回去。
离开张成空间的向量与特征向量
本来空间的变化应该是一件波澜壮阔的事情。想想看整个空间被扭曲旋转,这是多么魔幻的一个场景啊。可是我们只凭借一组基向量矩阵中的几个数字就描述了这一个过程,是不是有些太过于乏味了?
既然我只看到了这几个数字的话,那么原来空间中的那些向量到了新的空间中怎么样了呢?我如果很关心它们的话,我能做些什么呢?
既然这样想的话,不如系统地来看一下空间到底是怎样被变换的。这里因为想用比较直观的方法来看看问题,那么对于多维空间来说,人的想象力就不足以达到了。既然这样不如就只看看最简单的二维空间中的场景。
想象一个二维空间中的两个二维向量,它们不停旋转,长度不断伸缩,它们就代表了对于它们所处的这个二维空间所可以进行的所有的线性变换,也代表了所有可能的矩阵。那么可以注意到一种特殊的情况,就是这两个向量相对于该空间的标准正交基来说只是旋转了一个角度而已。称这样的矩阵为正交矩阵。可以看到,这样的话空间内的每一个向量都不能在变换中停留在自己所张成的空间上了。
在另一些情况下,所有的向量都停留在自己所张成的空间中。比如说,可能是将所有向量拉伸为原来的两倍的变换。不过这样的两种都是极端的。对于一般的变换来说,向量们到底是流离失所,还是屋舍俨然呢?其实根据直觉,就会觉得是前者。然而不符合直觉的是,在一般性的流离失所中,有一部分向量可以保守自己的家园。它们被称为特征向量,其在变换中的长度伸缩倍数为其特征值。
一个矩阵如果拥有足够的特征向量,以使得可以以它们张成一个与原空间同样维度数的空间,那么称用来表示这样的空间的矩阵为特征基。以特征基的角度来看,整个变换只不过是基们的伸缩而已,这表明,表示这样的变换的矩阵应该正好是一个对角矩阵。
变换中的守恒量,解方程
稍微了解过一点科学思想的人可能听说过,守恒量是很重要的。可是想要去寻找守恒量,有一个比较现实的问题来推动也算不错。某些线性代数的教材里,最先介绍的不是向量也不是矩阵,而是解方程组。其后便会说明,可以利用线性代数的方法去解方程组。可是,在进行那样的讲解的时候,并没有考虑到如何使计算过程变得符合直觉。如果是从我们这样的更加重视直觉性的讲解方法,应该可以有新的讲述方式吧。
想象一个线性方程组,以它的系数为一个矩阵。每个方程的常数项为一个向量,想要求得的解为一个向量,那么,解这个方程组就像是要看这样的一个线性变换可以将怎样的一个向量变换为方程的常数项所组成的向量一样。面对这样的问题,如果我们想要从守恒量的角度入手,可以思考到些什么呢?
首先,为了想象的便利,不如将空间设定为二维。在这样的空间中,有一个已知的向量,它是由一个已知的线性变换而来的,可是它忘记了自己的原型是谁。在这样的颠沛流离中,如果还有什么没有改变就好了。向量与基的点积从好用的角度看起来很好,如果空间变换后,点积会守恒,那么我们已经有了变换后的基和该向量,很容易通过两个守恒的点积求得原向量。
可是从可行性的角度来看,点积其实很不理想。点积的取值是依赖于角度,这样的一种值在线性变换面前没有能保存自己的性质。思考线性变换的性质,猜测面积这一值的可行性大概很不错。原向量和每个基所分别长成的面积与当前所处空间的行列式的比值,这样的值显然在线性变换面前是守恒的。知道了这样的性质,原来的问题就完全变成不同的面貌了。