• 对于线性代数的形象化理解(2)


    这位外国博主的个人空间:3Blue1Brown

    视频地址:线性代数的本质 - 系列合集
    (若上述url失效,请点击上方该博主个人空间,搜索“线性代数的本质”视频)


    矩阵乘法与线性变换复合(视频p5)

    一个矩阵乘以一个向量,得到的结果在几何上可以将其视为,对这个向量的基向量进行线性变换了之后,这个向量在原坐标系中的位置。

    那么它左乘一个矩阵,就是一次对空间的一种特定的变换,得到的结果是与原向量维数相同的一个向量,那么如果在一次变换过后,再做一次变换呢?

    比如,先旋转,再剪切,两次变换最终的结果,其实可以视为另外的一个线性变换,被称为前面两个独立变换的“复合变换”。

    数学上,将上述的过程可以写成这样的矩阵与向量相乘的式子:

    [underbrace{left[egin{array}{cc} 1 & 1 \ 0 & 1 end{array} ight]}_{egin{array}{l} ext { Shear } \ ext { 剪切矩阵 } end{array}} underbrace{left[egin{array}{cc} 0 & -1 \ 1 & 0 end{array} ight]}_{egin{array}{c} ext { Rotation } \ ext { 旋转矩阵 } end{array}}=underbrace{left[egin{array}{cc} 1 & -1 \ 1 & 0 end{array} ight]}_{egin{array}{c} ext { Composition } \ ext { 复合矩阵 } end{array}} ]

    上面这个式子,描述的是对于向量(x,y)所在的空间,先做了一次旋转的变换,然后再做了一次剪切的变换。

    无论最终结果如何,这两次变换的效果合起来,都是会等于右边这个复合矩阵的变换效果的。

    看到这里,是不是有点知道我要说什么了?如果没有一点呼之欲出的感觉,那就再读一遍上面加粗这句话。

    没错,两个矩阵相乘(剪切矩阵 × 旋转矩阵),在几何空间上的理解,就是两次变换的叠加。(多个矩阵相乘同理)

    并且,你多次变换,也就是一个向量多次乘以一个矩阵咯,每一次其实都是矩阵乘向量,矩阵乘向量是一定要矩阵在左边的,所以对于一个向量被多个矩阵连乘的式子,应该从右往左看。

    接下来从几何意义来讲一下两个矩阵相乘时的运算,

    [underbrace{left[egin{array}{cc} 0 & 2 \ 1 & 0 end{array} ight]}_{egin{array}{l} ext { M2 } end{array}} underbrace{left[egin{array}{cc} 1 & -2 \ 1 & 0 end{array} ight]}_{egin{array}{c} ext { M1 } end{array}}=underbrace{left[egin{array}{cc} ? & ? \ ? & ? end{array} ight]}_{egin{array}{c} ext { 复合矩阵 } end{array}} ]

    M2 × M1,本质上就是先对原始空间进行M1矩阵所表示的变换,然后再对变换完的空间进行矩阵M2所表示的变换。然后从前面我们也看到了,M1矩阵是如何表示一个变换的呢?本质上的两列,就分别代表了变换后的二维空间上的两个基向量。

    所以经过M1的变换之后,基向量 (vec{i}) 其实就是(left[egin{array}{l} 1 \ 1 end{array} ight]),而基向量 (vec{j}) 就变成了 (left[egin{array}{l} -2 \ 0 end{array} ight])​​​​​ ,那基向量也是向量啊,对于经历过M1变换过后的空间再做M2的变换(这个是本质),数学式子上看,就是拿M2这个矩阵去分别乘以M1变换过后的空间中的基向量,

    [left[egin{array}{ll} 0 & 2 \ 1 & 0 end{array} ight]left[egin{array}{l} 1 \ 1 end{array} ight]=1left[egin{array}{l} 0 \ 1 end{array} ight]+1left[egin{array}{l} 2 \ 0 end{array} ight]=left[egin{array}{l} 2 \ 1 end{array} ight] \ left[egin{array}{ll} 0 & 2 \ 1 & 0 end{array} ight]left[egin{array}{c} -2 \ 0 end{array} ight]=-2left[egin{array}{l} 0 \ 1 end{array} ight]+0left[egin{array}{l} 2 \ 0 end{array} ight]=left[egin{array}{c} 0 \ -2 end{array} ight] ]

    然后分别得到的两个新的基向量 (left[egin{array}{l} 2 \ 1 end{array} ight])​​ 和 (left[egin{array}{l} 0 \ -2 end{array} ight])​,就组成了这个复合矩阵 (left[egin{array}{l} 2 & 0\ 1 & -2 end{array} ight])​。(因为复合矩阵表示的变换效果就是M1变换之后再M2变换,矩阵中的两列就是变换过后的两个基向量)

    问题:矩阵相乘满足交换律吗?

    用几何变换的角度来看,AB ≠ BA,详见动画演示 https://www.bilibili.com/video/BV1ms41167u9

    问题:矩阵相乘满足结合律吗?如 (AB)C = A(BC) ?

    因为是从右往左读,所以左边的式子是对原空间先做了一个C的变换,然后做了一个等效于A×B的合变换(本质上等效于A×B的合变换,就是先做B变换,再做A变换),而右边的式子是做了一个等效于B×C的合变换,然后再做A变换,所以等式左右两边都是先做了C变换,然后做B变换,最后做A变换。

    所以满足结合律。


    行列式(视频p7)

    这里以二维空间举例(也就是平面空间)

    给出一个矩阵,如 (left[egin{array}{l} 3 & 0\ 0 & 2 end{array} ight])​​​​ ,它表示的是将基向量所在的空间做一个变换,原来的两个基向量 (vec{i}:left[egin{array}{l} 0 \ 1 end{array} ight])​​​​​ 和 (vec{j}:left[egin{array}{l} 1 \ 0 end{array} ight])​​​ 经过此次变换之后就变

    成了 (vec{i}:left[egin{array}{l} 3 \ 0 end{array} ight])​​​ 和​ (vec{j}:left[egin{array}{l} 0 \ 2 end{array} ight])​​​​ ,​这个时候呢我们可以看到,原来的基向量i和j,围成的矩形的面积为1,而变换过后(vec{i})(vec{j})​​​ 围成的矩形的面积,我们说这个线性变换让它的面积比原来扩大了 3×2=6倍。

    只要知道原来的基向量围成的矩形的面积和变换后的基向量围成的矩形的面积,我们就可以知道变换前后,空间中任意一块区域的面积变化的比例。

    我们就可以在几何意义上这样去解释行列式:线性变换对空间中的面积产生改变的比例,就是行列式的值。

    如果某一个矩阵的行列式为0,表示经过该变换之后,原来平面中的所有的面积都被压成了一条线,甚至一个点(因为没有面积了嘛)

    那么,看一个矩阵的行列式是否为0,也就是说明它代表的变换是否将空间压缩到了更小的维度上。

    另外,如果某个矩阵的行列式为负数, 相当于变换过后,空间的方向翻转了,(如果是二维,可以想象成一张纸翻了个面儿)
    至于三阶行列式的计算公式为什么是下图这样,视频作者没有展开。

    [operatorname{det}left(left[egin{array}{lll} a & b & c \ d & e & f \ g & h & i end{array} ight] ight) =a operatorname{det}left(left[egin{array}{ll} e & f \ h & i end{array} ight] ight) -b operatorname{det}left(left[egin{array}{ll} d & f \ g & i end{array} ight] ight) +c operatorname{det}left(left[egin{array}{ll} d & e \ g & h end{array} ight] ight) ]


    逆矩阵(视频p8)

    (Avec{x}=vec{v})​​ 表示的就是矩阵A乘以x向量之后得到的是向量v,也就是说,当所在的空间经过线性变换之后,向量x变成了向量v,现在我们知道了向量v,也知道了变换方式A,剩下的未知量x也就可以求解了。(或者说我们要找到一个向量x,使得它在经过变换A之后变成的向量与v重合)

    假设有一个方程组如下所示,它的解依赖于矩阵A所代表的变换是将空间挤压到一个低维空间,还是保持像粗还是空间一样的二维空间。

    上面讲到,如果挤压到了一个低维空间,代表det(A)=0 ,反之则是det(A)≠ 0.

    如果它没有被挤压到一个低维空间,则我们可以想象,(vec{x}) 经过A这个变换之后变成了 (vec{v}) ,则将 (vec{v})​ 做一个A矩阵的逆变换,就可可以将(vec{v}) 变回原来的 (vec{x})​​ 了。假设,A是将原来的平面坐标系顺时针旋转90°,那么那么A的反向变换就是将原来的平面坐标系逆时针旋转90°,我们将其称为A的逆,既然它是一个变换,那也可以写成矩阵的形式,称为矩阵 (A) 的逆矩阵,即 (A^{-1})​ .

    上面加粗的这句话,用数学公式写出来,就是 (A^{-1} A overrightarrow{mathrm{x}}=A^{-1} overrightarrow{mathbf{v}})​​​​​ ,一个变换和它的逆变换叠加,就相当于啥都没做,即一个矩阵乘逆矩阵,结果为单位矩阵。

    为什么是单位矩阵呢?矩阵乘积的结果的每一列就表示的是经过变换之后的基向量,那么啥都没做,就是相当于平面上的(1,0)、(0,1)这两个基向量,或者三维的(1,0,0)(0,1,0)和(0,0,1)三个向量,更高维以此类推……

    写出来就是 (left[egin{array}{l} 1 & 0\ 0 & 1 end{array} ight])(left[egin{array}{l} 1 & 0 & 0\ 0 & 1 & 0\ 0 & 0 & 1\end{array} ight])​ ,可不就是我们的单位矩阵嘛?​​​​

    当det(A)为零的时候,那对于A这个变换,可就没有一个逆变换了,因为你没法将一条被压的线恢复成一个平面,因为变回去的这个变换就是一个函数,线上的一个向量的输入需要产生多个的输出,这是不符合函数的定义的。扩展到三维上也是如此将一个被压所致的平面空间恢复到一个三维空间是做不到的。

  • 相关阅读:
    HDU 1059 Dividing(多重背包)
    新华网,要厚道
    js与DOM初步:访问html元素
    Hacker News网站的文章排名算法工作原理
    做技术,是个精益求精的事情
    百度贴吧客户端(Android)网络通信行为分析
    Storm同时接收多个源(spout和bolt)
    各种流处理系统的比较
    Kafka学习
    关联规则推荐及Apriori算法
  • 原文地址:https://www.cnblogs.com/kevin-matrix/p/15099439.html
Copyright © 2020-2023  润新知