线性代数的本质_02_矩阵运算与线性变换复合


线性变换:

变换,本质上就是函数,将输入的东西通过变换得到输出,中间的变换和以前学习的函数是一个意思(f(x)),在线性代数中,输入通常为向量,输出通常为这个向量的变换。儿变换一词更有运动的含义在里面,那么向量是如何运动的,下面还是以二维直角坐标系为例:

可以想象,一个向量,通过一个变换,移动到另一个地方,这实际就是一个空间变换的过程,这个变换(函数)实际上是对空间的更改。例如,将直角空间变为非直角的,结合上节所说的基的概念,我们可以认为空间变换实际上是基的变换,原来的向量在变换后的基里面,数值(之前说的一组标量)任然不变,但是,在原来的基下面,已经变化了,如下图:

很直观的发现,原来的(0.5,0.5)这个向量到了(1.5,1.5)这个点,实际上,这个变换就是将原来的基向第一象限压缩,并放大得到的结果。然而为什么称之为线性变换呢,除此之外,还有很多其他变换,线性变换实际就是变换前后,直线任然是直线,不可能被弯曲,其次,变换前后,原点是不会移动的,如果移动原点,这个变换就是仿射变换。

线性变换实际就是基的变换,因此,要记录线性变换,只需要记录基就可以了,以上面找这个最简单的变换为例,原来的点为(0.5,0.5),变换矩阵为【2,1,1,2】(这是2*2的矩阵),其变换过程如下:

上面的2*2矩阵中,第一列代表新的基的 i 基向量在原来基下的向量,第二列代表新的基的 j 基向量在原来基下的向量。为什么是这样计算,为啥是竖着第一列代表,第二例而不是横着,其实很容易想到,原来的基【1,0,0,1】不就是这样吗?我们把上面的3换成1再看看,就明白了:

【0.5,0.5】代表就是向X走0.5,向Y走0.5,【0.5,0.5】乘上2*2矩阵第一列,就等于输出结果第一个,就代表转换到新的基下,向新的 i 基向量走0.5,同理,Y轴也一样。

如果不明白,下面举另一个例子,其动图如下:

 很好理解了吧,i 和 j 为原来的基向量【1,0,0,1】,变换后为【1,-2,3,0】,原来的黄色的向量【-1,2】变换后很显然在【5,2】处,计算过程与上面所说的一样,任然是【-1,2】*【i,j】,只不过是变化后的 i 和 j ,如下图:

v向量在变换前后,都还是 i 向量和 j 向量的一个线性组合,空间变换效果如下:

可以看出空间变得不均匀了,变换后的空间有的地方密集,有的地方稀疏。

再结合之前所提到的,基即是坐标系的概念,上面的变换换句话说就是这样:

【1,0,0,1】坐标系下的【5,2】这个向量等同于【1,-2,3,0】坐标系下的【-1,2】这个向量。

再把向量看做点,就有:【-1,2】这个点经过上面这个变换得到【5,2】这个点。这个变换矩阵就是【1,-2,3,0】

上面提到变换矩阵,因为原基非常特殊,所以新基等同于变换矩阵,当然,有不一样的情况:我们可以将原来的坐标系看做世界空间,那么从【1,-2,3,0】坐标系变换到【-1,2,-3,0】坐标系呢,其变换矩阵的求法后面再说(实际就是旋转180度),下面看看我们如何将变换后的变换回去。

我们如何将【1,-2,3,0】变换到【1,0,0,1】呢?学过线性代数的朋友可能会想到,这个基就是单位矩阵,讲一个矩阵变为单位矩阵的变换不就是逆矩阵嘛。

线性代数有一套求逆矩阵的方法,其中用的比较多的是通过伴随矩阵求得,下面我们纯粹从空间变换的角度来分析一下,将上面的变换过程回放即可

我们把现在的基【1,-2,3,0】看做是【1,0,0,0】,那么,原来的【1,0】【0,1】这两个向量在现在的基下怎么表示呢?很容易看出,原来的 i 向量在现在的基下为【0,1/3】,原来的 j 向量在现在的基下面为【-1/2,1/6】,变换矩阵就是:【0,1/3,-1/2,1/6】,示意图如下,很显然,原来的 i 处于现在 j 上,原来的 j 位于现在的第二象限(粗绿线为 i 和 j ,细线为辅助线):

不妨看看结果把:

如果你的空间想象能力足够好,以后求2阶,3阶的逆矩阵大可以直接写结果!!!

由以上我们可以知道,表示一个二维空间的线性变换,只需要四个数字就可以完全确定,当然,这个变换是相对于【1,0,0,1】的,这四个数字就是变换后的 i , j 向量在原基下面的向量。

空间变换的直观理解如下图:

当然,也会有特殊的情况,例如变换【2,1,-2,-1】会将空间压缩到一条直线上,这正是上一节说的线性相关有一个基对纬度没有扩张。顺便提一下,这似乎与刘慈欣《三体》中的降维打击有点像。

矩阵乘法与线性变换复合:

严格意义上,线性变换实际上是将当前维度的向量作为输入,得到输出向量的一类函数,可以看做空间的压缩与缩放。在空间变换前后,空间的网格线仍然保持平行且等距分布。

如果我们需要多次变换呢,例如,先旋转,再压缩(剪切),如下图:

前面两个变换结合起来的一个变换就是复合变换,但是,这需要从右向左读,先进行旋转变换,再进行剪切变换。因为反过来,可能是不一样的,以后会说。这里,请注意剪切变换的矩阵,他的的来要纯粹从空间来看,这个剪切就是X轴不动,Y轴变道【1,1】的位置。以上从右到左的的变换可以复合很多个,不一定是两个,但是这里面的每个都是从原始坐标系【1,0,0,1】变换得到的矩阵,而不是每次变换后得到的坐标系再变换得到的

如果我们只看每次变换后得到坐标系的变换,结果是怎样的?那就如下:

可以看出,这样就是从左往右读了,先进行旋转,再对旋转后的坐标系进行剪切。而上面的做法是这样读:有两个变换,先进行旋转,再进行剪切,其中每个变换都是针对原始【1,0,0,1】坐标系的。如果想不通上面第二个矩阵没么得来的,请复习上面讲的逆变换部分怎么得到逆变换的,方法一样,都是在当前坐标系下分析。

学到这里,大家能想清楚,为什么我这里写的矩阵是从左到右读,上面的是从右向左读吗?下面是解释:

上面从左到右读,是因为每个变换都是针对前面变换得到的结果(目前的坐标系)进行变换,所以从左到右。之前从右向左是因为所有的变换都是针对原始坐标系的变换。可以这样想:假设有10个变换都是相对原始坐标系,那么最左侧变换也是对原始坐标系的,那么可以认为左侧得到的变换就是目前的原始坐标系,右侧的变换就是对目前得到的坐标系的变换。这样的话也就是从左向右看了,只不过右边的变换都是针对左边得到的坐标系了,而不是原始坐标系为什么可以这样理解?:一个变换对任意两个坐标系变换的效果都是一样的,因此右边的变换对原始坐标系的变换和对目前得到坐标系的变换一样。大家不妨想想:上面剪切矩阵【1,0,1,1】基下的【0,1】【-1,0】两个向量是不是就是原始坐标系下的【1,1】和【-1,0】两个向量。

如果理解到上面这段的含义,就会明白为什么矩阵运算(AB)C=A(BC)了。而且为什么ABC!=CAB,即矩阵运算支持结合律不支持交换律。这里不再多作解释!

三维空间下的线性变换:

与上面类似,三维空间的线性变换实际上就是用3*3的矩阵来计算,第一列代表X轴,第二列代表Y轴,第三列代表Z轴,跟踪这三个基向量,就可以得到三维空间的变换。

其他的特性与二维相似,类推即可。

 

参考资料:

3Blue1Brown矩阵与线性变换

3Blue1Brown矩阵乘法与线性变换复合

3Blue1Brown三维空间中的线性变换

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值