换个角度学习线性代数(一)
最近难得对数学又唤起一点一点兴趣, 看了几篇3Brow1Blue的线性代数系列视频, 原来线性代数还能这样学习,在这里分享一下
什么是向量
在物理世界里, 向量是一种包含方向和大小(即向量的长度)的量,例如力、位移、速度(注意不是速率)等。他只跟方向和大小有关,而跟具体的位置无关,可以把他抽象成一个直线箭头,其长度代表向量的长度,箭头指向方向即是向量的方向,这个直线箭头可以在空间中任意平移而不发生变化。他有自己的加法规则,三角形法或者平行四边形法则(两者其实是一致的, 三角形法则中三角形的构筑需要利用平移来实现),我们可以利用加法法则计算合力、合位移、合速度,解决实际物理世界的问题。
在计算机世界中, 向量最朴素的定义就是列表或者数组,向量跟列表或者数组无本质的区别;例如我们可以将房屋的面积和价格写到一个数组中,这也可以说是一个向量。
利用坐标系可以将物理世界的向量和计算机世界的向量整合,我们不妨将物理世界中向量的起点设置到坐标系的原点,那么任意向量都可以用一个数组(向量终点的那个点的坐标)来标识。
将物理世界的向量和计算机世界的向量整合后,简直打通了向量运算的任督二脉,我们可以用数学计算向量的运算了,向量的加法和向量的数乘这2种基础的运算将会非常简单清晰。
向量
我们可以换个角度思考坐标系中的向量:我们选定 和作为基向量,则二维空间的中的任意向量,都可以看成是和线性组合,相关的系数正是该向量对应的坐标。
上面我们选择了和作为基向量,我们是否可以选择其他向量作为基?事实上,我们可以选择任意其他的基向量,只要他们不共线,我们就可以用这两个基向量的线性组合来表达整个向量空间,我们利用向量的加法和向量的数乘这两个基础的运算就可以表达整个向量空间!类似的结论在3维空间同样是适用的。
上述的不共线用更专业的说法其实就是线性无关,当一个向量无法用另外一个(组)向量的线性组合来标时,就说这个向量跟另外一个(组)是线性相关的;或者再换一个角度,这个向量给另外一个(组)向量张(span)成的空间增加了一个新的维度!
最后的最后,我们来定义下基向量:基向量就是一组线性无关的可以张成整个向量空间的向量。
线性变换
变换的本质是一种动态的变化,把输入向量转为输出向量的一种办法,或者说把输入空间转为输出空间。而我们当前只关注线性变化,所谓线性、是一种对变化施加的要求,他要求在输入空间中的一条直线在输出空间也一定是一条直线、他要求原点不变。这带来一个明显的性质, 在原空间中等距平行的线在输出空间也一定是等距且平行的
那么现在就有一个问题,如何描述这种变换。事实上,如下图所示的那样,我们只需要知道原先的基向量和在输出空间的位置即可。
更直白的一句话来说,向量v表示为, 在经过线性变化后,系数w 和 u 保持一致,只要记录了变化后和的坐标,就可以计算任意向量v变化后的坐标,因此用变化后和的坐标就足以表达这种线性变化。
记得刚才我们的结论,我们就可以使用一个2*2的矩阵来描述线性变化,矩阵第一列、第二列分别是和的新坐标。同时,我们定义矩阵和矩阵向量相乘就是求线性变化(能把和变为和的线性变化)之后的坐标, 并形成如下的计算方法!
基于上述的讨论,我们可以举2个例子:
例如, 逆时针旋转90度的线性变化:
例如, 一种倾斜变化:
还有一种特别的变化, 变化后和线性相关,将整个平面空间降维到一条直线上。
总结起来,线性变化是对空间施加的一种变化, 他保持原点不动、并保持原空间等距分布的平行线在变化后也是等距的,我们使用变化后的基向量组成的矩阵来描述这种变化,而矩阵和向量相乘就是为了计算该线性变化对于给点向量的作用的一种途径。将矩阵视为一种空间的线性变化,是一种非常有用的独特视角
矩阵的乘法
刚才说到,矩阵和向量相就是为了计算该线性变化对于给点向量的作用。我们常常需要对空间做一些连续的复合变化,例如,先逆时针旋转90度、然后再做倾斜操作。在这样的复合变化中,我们如何计算对于给定向量的作用呢?我们可以用两种角度考虑。第一种角度是先计算旋转操作后向量的坐标、再根据该坐标和倾斜操作矩阵,计算最终两次变化后的坐标。第二种角度是直接跟踪计算出最终的基向量的坐标,并用他们组成的矩阵直接给定向量在变化后的坐标。
事实上,两个矩阵相乘代表着2个相继的线性变化(注意顺序,代表的是先做对应的变化、再做对应的变化),他可以和1个复杂的线性变化等效。这样很容易得到下面的一个计算结果, 就算你不懂矩阵乘法的具体规则!
我们稍加推导,就可以给出矩阵乘法的计算方法
我们再次总结一下,矩阵乘法的几何意义就是两个线性变化相继作用,这是一个更好的思维框架, 能让你理解矩阵乘法的本质。
例如, ?显然不相等,也就是说,矩阵乘法不满足交换律。考虑先做倾斜再做逆时针旋转 和 先做逆时针旋转、再做倾斜 ,就可以得出一个反例:
但是,矩阵乘法满足结合律, 这从矩阵乘法的几何意义来讲就是天然满足的,他们本来代表的就是依次做三个线性变化,顺序就是C、再做B、再做A。
线性变换代表的含义、以及矩阵乘法的含义在更高维的空间也是类似的。例如,在三维空间中,我们同样使用基向量变化后新的基向量来描述线性变化,不过这里的基向量有3个、总共9个数字.
行列式determinant
线性变换是对空间施加的一种变化,例如旋转或者倾斜,我们使用矩阵就可以描述这样一种变换。但有时候想研究变换的程度,我们可以使用变换前后某个封闭形状的面积变化率来表征它(根据线性变化的性质,所有封闭形状的面积变化率应该是一样的,即放大或者缩小了相同的比率,为了简单起见我们就关注基向量和围成的平行四边形的面积变化率吧),这就是行列式的几何含义,对于矩阵A的行列式,我们使用来表示。
我们可以试着用几何含义来计算行列式。思考如下矩阵:
根据矩阵、代表的几何含义,可以直接计算出:
计算的过程可以参考下图:
考虑针对”倾斜“这种线性变换,和夹角逐渐减;当他们夹角变为0时,平行四边形变成了一条直线、它对应的面积就变为了0;如果继续倾斜,即变到了左边,此时又有面积了,但是为了表征翻转了左边这一事实,我们在面积前面加个符号,这就是为什么行列式可以为负。
以上我们讨论的实际上只是行列式在二维空间的意义。但是在更高维空间也是类似的,例如在三维空间,行列式代表的是体积的变化率。
但是有没有通过数值计算任意矩阵行列式的方法呢?针对二维空间,可以通过矩阵的含义以及行列式的含义,快速地给出公式。更高阶的矩阵行列式计算法则在此不再赘述。
我们可以根据行列式的含义,轻松理解下述定律,因为它就代表着2次连续变化之后面积的变化率。
逆矩阵、列空间和零空间
矩阵运算可以用来研究线性方程组,线性方程组可以改写为, 这代表着解线性方程组、实际上是找一个向量、这个向量在经过线性变换之后变为
用一个实际的例子来说明。为了求解如下方程,实际上是在找一个向量,这个向量在经过代表的线性变换后变为了。换句话说,我们一直线性变换以及变换后的某个向量,再找变换前对应的向量。
这个要分情况讨论,区分线性变换是否将原始空间压缩到一条直线上了(即降维了),对应到行列式的定义,就是区分和。
当时,变换前对应的向量有且只有一个,我们可以假想一种变换,是将线性变换逆序倒放回去、这样我们就能得到变换前的向量。例如,如果原来的线性变换是逆时针旋转90度,那么逆序倒放的变换就是顺时针旋转90度。这种逆序倒放显然也是线性变换,这种变化我们就称为的逆,记为 。根据这种定义,很容易求得一些矩阵的逆
同时,很容易得到一个基本的性质,先做一个线性变换、再做一个逆变换,等价与什么都没做,什么都没做的变换叫做恒等变换。
紧接着,我们就可以给出求解线性方程一般性的方法,这里的关键就是求解矩阵的逆。虽然这个结论我们是在讨论二维空间中的情形给出的,但是在三维乃至更高维度都是适用的:
而当时,此时没有逆变换, 因为不可能把一条直线解压缩成一个平面, 这不是一个函数所能完成的。(线性变换是一种函数,输入一个向量、输出一个向量)。虽然不存在逆变换,但是也有可能存在方程的解,也可能不存在。但是我们可以根据的方向确定是否存在解:。
为了分析这种的场景即发生降维的场景,我们引入一个新的概念叫做秩Rank。如果一个线性变换将变换后的向量都落在一条直线,我们就说它的秩是1;如果一个线性变换将变换后的向量都落在一个平面,我们就说它的秩是2.秩代表着线性变换后空间的维数。我们将所有的结果组成的空间叫做的列空间,只有在的列空间时方程才有解。有了列空间的概念后秩的定义可以更精确的描述为列空间的维度,当矩阵的秩和矩阵的维度一样时,我们称这个矩阵为满秩矩阵。在一个线性变换中,原点一定在列空间中,因为线性变换的定义就是原点不变,在一个满秩变换中,变换后在原点的输入只有一个,那就是原点本身;但是在一个非满秩变换中发生了降维,会有多个输入的输出对应到原点上,我们将输出为原点的所有输入的集合称为零空间或者零核,实时上方程的解就是零空间。
非方阵矩阵
非方阵矩阵的理解,还是可以回到对线性变换的描述上来, 即它还是代表着线性变换后的基向量,举几个例子就可以理解
例如, 如下3*2的矩阵代表转换到,转换到. 转换后的空间仍然是一个二维的空间,所以矩阵的秩是2,变换前后空间维度没有发生变换,所以它也是满秩的。
如下2*3的矩阵代表三维基向量、、变换到、、,这个明显是降维了,列空间的维数是2,所以矩阵的秩是2
类似的, 1*2的矩阵代表从二维到一维的线性变换。