基变换与线性变换梳理

关于线性代数当中的基变换和线性变换这一块,个人觉得特别繁杂,看起来简单,但是推导起来有点混乱,于是写下这篇博客记录一下初次学习的笔记和一些理解。本文参考麻省理工Gilbert Strang的线性代数公开课和戴华老师的《矩阵论》所写,理解有误的地方请大家指出。


        学习线性代数可以从很多个地方入手,比如说同济版的《线性代数》从行列式入手(个人觉得很难接受);Mit公开课上的以矩阵的4个子空间入手;据说从线性变换入手也是可以的,所以博主想写的就是一个从线性变换入手的一个思路,在开始之前,大家可以先想象一副完全空白的画面,完全空白。


        这个完全空白的画面是一个空间 V,首先往里面放入一个线性变换 T,所谓的线性变换,实际上是一条规则,所以现在我们的空间中仍然是一片空白。这个规则说,有一些变换比较特别(也可以理解成某个函数),它满足:

基变换与线性变换梳理_第1张图片

        这是一条最基本的规则,非常的重要。下面我们继续来完善这个规则,首先是输入和输出,我们并没有限定输入和输出的维数是什么,所以输入和输出的维数不必相等(千万不要以为线性变换对应的矩阵一定是方阵),比方说 T :R3 -> R2 ,那么在我们的空间 V 中的任意一个3维vector都可以通过 T 变换成一个唯一的2维vector,而且 T 满足上面的规则。注意,现在所说的vector只是一个箭头,它并没有坐标,例如下面的 T(A)=  B:

基变换与线性变换梳理_第2张图片

        那你可能会问,何来3维和2维的区别呢?这和它没有坐标是一个道理,因为我们还没有指定基。3维说明它有3个线性无关的基向量,2维说明它有2个线性无关的基向量,当我指定了基以后,3维的vector就可以表达成 ,而2维的vector可以表达成 了 ,现在我来指定3维空间的基是 (v1, v2, v3),2维空间的基是 (w1, w2),然后当然的在空间 V 中划分出3维空间和2维空间来:

基变换与线性变换梳理_第3张图片

       然后你又会问,那坐标得怎么算呢?这里可以这么理解,提供基的目的是提供一个基准,我们得同时给定一个方向和一个单位长度,这好比我指定了地图上的东和北是右和上两个方向,指定111千米是1度,这才可以用 ,也就是经纬度来定位地球上的每一个点。OK,那我们就这么来办,我指定各个维度的方向就是各个基向量的方向,各个维度的单位长度就是各个基向量的长度,所以,比方说 v1 我就可以用 <1,0,0> 来表示,因为 v1 = 1·v1 + 0·v2 + 0·v3 嘛,这样一来空间中的每个vector都可以用坐标来表示了。当然了,要是你用1/2的长度作为单位长度,那 v1 就变成 <2,0,0>了,接下来的讨论,如果给出基,那默认以基向量的方向为维度的方向,以基向量的长度为单位长度。


        搞清楚怎么算坐标之后,我们继续来描绘这个 T 变换,现在的情况是,你定义了一个 T 变换,你自己知道 A 会变成 B,或许你还知道 C 会变成 D,还有很多很多,但是你要怎么说清楚它呢?你总不能见到一个人,就把你的所有ABCD都拿出来,然后告诉它这就是我的 T 变换了吧,那要是我来给你一个 E,可能连你自己都不知道输出是什么呢!所以我们要找到一种用语言来描绘的方法,把这件事情给说定了。(下面是堆公式的时间了!)


        首先我拿出一对输入基(v1,v2,v3 ... vn)和输出基(w1, w2, w3 ... wm),(这个 vn 和 wm 习惯就好!),首先,你自己定义的 T 变换,这个变换对输入基的结果你得知道吧,比方说,你得知道经过 T 变换后的 v1 是(w1,... wm) 的怎样的线性组合,再换句话说,原本在(v1, ... vn)下坐标为 <1,0 ... 0> 的 v1, 经过 T 变换后在(w1,... wm)下的坐标是什么。有些绕,但是要记住这个 T 是你自己定义的,所以变换后的结果就是你说了算的,所以不要问我为什么 T(A)= B 哦!

基变换与线性变换梳理_第4张图片

        为了不至于混乱,这里给出两条公式做个对比,用基的线性组合来表示,则不必想到基(的基)是什么,就如上图一样,而用到了坐标,就一定要考虑到基是什么,因为是先有了基才有了坐标:

基变换与线性变换梳理_第5张图片

        OK,上公式,假设输入基是(v1,v2,... vn),输出基是(w1,w2,... wm),所以你一定得知道:

基变换与线性变换梳理_第6张图片

        不知道b的下标要怎么摆的话看下图,我们要改写成如下矩阵的形式,也就是每一列是一组线性组合,所以B矩阵的每一列就是 vi 经过变换后在新基的坐标了,等会我们要用到:

基变换与线性变换梳理_第7张图片

        准备工作这就做好了,下面我们来真正的描述变换 T,在输入基的空间下,所有的vector都是基向量的线性组合,即:

基变换与线性变换梳理_第8张图片

        对vector x 进行 T 变换,我们用到了 T 的基本规则:

基变换与线性变换梳理_第9张图片

        注意了,上面的式子用了基表示法,我们可以把它转换成坐标表示法(将右边部分看成是W的线性组合,Ba是坐标),这样就可以得到我们的一般形式:

基变换与线性变换梳理_第10张图片

        大功告成,如果这次你给我一个E,那我就可以告诉你输出了,就是BE嘛,所以说我们的变换 T 就给真正的定义下来,我们可以留意到,每一个变换 T 在给定的一组输入基和输出基下都有一个对应的矩阵B,B怎么来的呢,这是通过我们事先给定的通过两组基推算出来的,所以,变换 T,输入输出基,矩阵B是三位一体的,确定两个就可以推出另外一个了。


        现在我们来审视一下我们的变换 T 能用来干什么。我们的 T 可以处理的问题是,从一个输入基(v1,v2,... vn)到一个输出基(w1,w2, ... wm)的转换,一般来说这个转换是等价的,举个例子,我们处理一些物理问题的时候,我们可以先从原来的xy坐标系转换成以另外一些更加便于计算的坐标系,例如速度方向作为一个维度,垂直速度的方向作为另一个维度,这个过程一般是等价的,做这种变换的目的是方便我们计算,是一种坐标系的变换,当然你也可以认为这种变换用来做降维或者升维。但是更多的情况是,我们要处理另外一种问题,例如求一个vector旋转90度后的结果,或者说求一个vector到另一个vector的投影,这时候再要进行坐标系的变换就不合适了。其实我们早就习惯这种变换了,这是一种映射,一条函数,变换前后坐标系当然不变,就像求 f(x)= x * x,你会考虑变换坐标系来增加你的计算量吗,不会,所以,更加一般的情况是输入基和输出基一致的情况,也就是(v1,v2,... vn)= (w1,w2, ... wm)的情况,当然,这种变换也有对应的矩阵B,计算方法也是一样的。


        以下的讨论暂时不考虑基变换,当出现基的时候,意思是输入基和输出基都是这个基。现在的情况是,我们的变换 T 可能是旋转变换,可能是投影变换等等,对应一个矩阵B,我们想知道一个vector在这个变换下的结果,我们就要计算一次T(x)= B·x,那我们当然希望这个B尽可能简单,例如是对角阵,内积计算起来速度就非常快。而这个B又是根据 T 和基计算出来的,所以,现在我们要确定一个基,让这个B最简单。


        同一个变换 T 在不同基下的矩阵是不同的,但既然是同一个变换,那总得有点联系吧。首先假设有两组基(v1...,vn)和(w1...,wm),满足下面的关系,C 叫过渡矩阵:

基变换与线性变换梳理_第11张图片

        我们从两组基的角度计算结果,注意坐标表示法和基表示法的转换:

基变换与线性变换梳理_第12张图片

        所以我们得到矩阵A和B的关系,我们把这种关系定义成两个矩阵相似,很显然这是一种把矩阵进行划分的方法,也就是说给一个 T 变换,那么我们选不同基对应的矩阵都是一类,不同 T 变换而来的矩阵又是一类。

基变换与线性变换梳理_第13张图片

        我们现在已经掌握了方法了,剩下就是计算的问题了。假设现在我们有 T ,基是(n1..., nn),对应的矩阵是A,只不过这个A的计算比较麻烦,我们需要找到一组新的基(x1...,xm),使得对应的基是一个对角阵,记为 Λ:

基变换与线性变换梳理_第14张图片

        用矩阵展开,左右只取结果的某一列,就可以得到:

基变换与线性变换梳理_第15张图片

        看到这里应该就知道了 λ 就是特征值了,cj 就是对应的特征向量,所以为什么说在写 λ 的时候一定要注意对着特征向量写,因为对错了就错了。如果你细心的话,你也可以知道 cj 其实是xj在原基(n1,... nn)下的坐标:

基变换与线性变换梳理_第16张图片

        如果我们再研究一下 λ,把 A 看成是某个基下的矩阵的话,λ的意义就在于,对于变换 T 是伸缩变换,缩放的倍数是λ,或者说,对于某些矩阵,一个vector和它进行内积之后方向不发生改变:

基变换与线性变换梳理_第17张图片

        这里有一个非常容易搞混的地方,你这样子前后的基不也是改变了吗,这也是基变换吧?注意了,基变换的意思是有一个变换,连接两个空间,输入在一个空间,输出在另一个空间;而这里是基选择的问题,同一个线性变换,输入空间和输出空间相同,但是我可以选择一组基,让我的计算更加简单,千万不要搞错了。


        这种选择到现在来说非常好,只是有一个问题,这样的方法成功的前提是 CΛ = AC,如果 A 不满秩,说明解出来的 λ 不够用,也就是说 A 不可对角化,那就不成立了,这个时候,就要化成 Jordan 型了。关于Jordan的推导有点长就不写了,但是思想是一样的,就是让 T 的矩阵尽可能简单,既然不可对角化,就退而求其次罢了。


        整个推导就差不多结束了,然后说说个人的一些想法。其实我们学习的时候,直觉上是和从上面推导的过程相反的,因为基变换对我们来说是透明的,我们不需要去考虑到它,在使用的时候往往是先有一个矩阵A,然后我直接计算 Ax 就好了,我根本不用去思考这是一种怎样的变换,基是什么,也没有什么不妥,我们当然不需要在意从a,到Xa,再到YXa经历了怎么样的变换,经过了3个怎么样的基,如果你强行觉得要思考的话,你可以认为我们一直以直角坐标系作为坐标系,输入空间和输出空间一样,然后反过来再推导出变换 T 到底是什么。还有最后的最后,上面的整个推导博主都回避了一个问题,那就是为什么Ax=A·x,其实整个构建都在于定义了点乘上,如果我说Ax = A+[x,x,...,x],类似于矩阵乘等于广播加的话,整个推导就要重新搭建了。


你可能感兴趣的:(基变换与线性变换梳理)