本笔记主要是从 b 站视频 线性代数的本质 中学习的。用到的 latex 格式,参考在线 LaTeX公式编辑器
01 - 向量究竟是什么?
- 向量是平面中的箭头,是二维数字列表
- 向量相加,可以看作从第一个向量的终点,是第二个向量的起点。计算:对应位置数值相加即可。[
\begin{matrix} x1\\ y1\\ \end{matrix} ] + [\begin{matrix} x2\\ y2\\ \end{matrix} ] = [\begin{matrix} x1+x2\\ y1+y2\\ \end{matrix} ] - 向量数乘,可以看作向量缩放。a * [
\begin{matrix} x1\\ y1\\ \end{matrix} ] = [\begin{matrix} a * x1\\ a * y1\\ \end{matrix} ]
02 - 线性组合、张成的空间与基
- 二维向量可以看成是对基的
\hat{i} ,\hat{j} 和标量的相乘。 - 二维向量
a * \vec{v} + b * \vec{w} 是对向量a * \vec{v} 和b * \vec{w} 进行了线性组合。 - 当二维向量中的 a 不变, b 一直变化,变化出的向量组成了一条直线。其实可以这样理解,如果我们不用 x,y 轴作为基,以
\vec{v} 和\vec{w} 为基,那么相当于 v 坐标轴数值不变, w 坐标轴数值一直在动,所以肯定是一条直线了。 -
单个向量一般用箭头表示,多个向量,可以只用向量的终点来表示向量。
- 在三维空间中,两个向量进行缩放所形成的也是一个平面。 这个可以这样想,三维空间中,从零点出发的任意两个线肯定是可以共面的,那么只要把基变换一下就可以了,把基变换成这两个向量,那么问题又回到了 两个二维向量的张成空间了。
-
正常情况下两个二维向量的张成空间就是整个平面,就算是三维空间,两个向量的张成空间也是他们共面的平面;如何两个向量共线,那么张成的空间就是一条直线。除非这两个二维向量共线,获得是 零向量。
- 在两个三维向量上再增加一个三维向量,那么对这第三个三维向量缩放的过程,就是前两个三维向量组成的面进行整体平移的过程。除非这第三个三维向量落在前两个三维向量的平面上,那么这三个向量还是共面的关系。这时候我们称这第三个三维向量和前两个向量是线性相关的,它并不能给张成空间增加新的维度。 所以对于基的定义就是 向量空间的一组基是张成该空间的一个线性无关的向量集。
- 三个向量的张成空间是整个三维空间,除非其中一个向量落在另外两个向量的平面上,这种情况,称为线性相关,也就是说这个向量可以用另外两个向量表示的线性组合。如果,所有的向量都给张成空间增添了维度,那么他们就是线性无关的。
- 向量空间的一组基就是张成该空间的线性无关的集合。
03 - 矩阵与线性变换
- 线性变换就是整个平面上的向量进行线性变换成另外的向量。 变换结束以后,只有同时满足原点不变,所有的原来的由向量末端的点组成的直线变换后还是直线,这样才是线性变换。可以简单理解为原点不变,网格线继续保持平行。
- 线性变换后,首先看下基是怎么变换的,标量 a, b 是不变的,变换后的向量还是原来的标量乘上变换为的基即可。[
\begin{matrix} x\\ y\\ \end{matrix} ] -> x\hat{i} + y\hat{j} = x[\begin{matrix} ix\\ iy\\ \end{matrix} ] + y[\begin{matrix} jx\\ jy\\ \end{matrix} ] = [\begin{matrix} x * ix + y * jx\\ x * iy + y * jy\\ \end{matrix} ] - 比如说基变换:
\hat{i} -> [\begin{matrix} 1\\ -2\\ \end{matrix} ] ,\hat{j} -> [\begin{matrix} 3\\ 0\\ \end{matrix} ] . 当原来的 (-1, 2) 这个向量,或者写成 [\begin{matrix} -1\\ 2\\ \end{matrix} ] ,经过上述的线性变换后,如何计算? - 直接从坐标上面硬算,(-1, 2) 这个可以看成是 -1
\hat{i} + 2\hat{j} , 那么变换后的 x 轴的坐标由\hat{i} 的x轴分量 和\hat{j} 的 x轴分量来提供, 也就是 -1 * ix + 2 * jx = -1 * 1 + 2 * 3 = 5, 同理,y轴的坐标就是 -1 * -2 + 2 * 0 = 2, 所以变换后的坐标就是 (5, 2), 或者写成 [\begin{matrix} 5\\ 2\\ \end{matrix} ] -
通过矩阵的方式是另外一种算法。(-1, 2) 这个向量就是 x = -1, y = 2 的向量。变换本质是一种运动的过程,向量本身就包含了运动的信息,含有长度和方向。所以想知道结果,直接和基变换的向量相乘,直接 x 乘以
\hat{i} 变换后的向量,同理 y 也是一样。 x * [\begin{matrix} 1\\ -2\\ \end{matrix} ] + y * [\begin{matrix} 3\\ 0\\ \end{matrix} ] = [\begin{matrix} 1 * x + 3 * y\\ -2 * x + 0 * y\\ \end{matrix} ] = [\begin{matrix} 1 * -1 + 3 * 2\\ -2 * -1 + 0 * 2\\ \end{matrix} ] = [\begin{matrix} 5\\ 2\\ \end{matrix} ] -
变换的过程可以简化写为二维矩阵,第一列是
\hat{i} ,第二列是\hat{j} ,比如说,\hat{i} = [\begin{matrix} 3\\ -2\\ \end{matrix} ] ,\hat{j} = [\begin{matrix} 2\\ 1\\ \end{matrix} ] 可以简写为 [\begin{matrix} 3&2\\ -2&1\\ \end{matrix} ] -
从这个计算中我们也可以简化一些写法,比如说我们约定好矩阵第一行是 x,第二行是 y,那么 本身坐标系的变换时
\hat{i} 变换成了 [\begin{matrix} 1\\ -2\\ \end{matrix} ],\hat{j} 变换成了 [\begin{matrix} 3\\ 0\\ \end{matrix} ], 那么我们可以合起来,把变换写成 [\begin{matrix} 1&3\\ -2&0\\ \end{matrix} ]。 原来的坐标 [\begin{matrix} -1\\ 2\\ \end{matrix} ] 和这个变换相乘,就可以写成矩阵的乘法,即: [\begin{matrix} 1&3\\ -2&0\\ \end{matrix} ] [\begin{matrix} -1\\ 2\\ \end{matrix} ] = -1 * [\begin{matrix} 1\\ -2\\ \end{matrix} ] + 2 * [\begin{matrix} 3\\ 0\\ \end{matrix} ] = [\begin{matrix} 1 * -1 + 3 * 2\\ -2 * -1 + 0 * 2\\ \end{matrix} ] = [\begin{matrix} 5\\ 2\\ \end{matrix} ] -
从这个可以看出,矩阵可以认为是变换的过程的描述,矩阵相乘可以写成公式: [
\begin{matrix} ix&jx\\ iy&jy\\ \end{matrix} ] [\begin{matrix} x\\ y\\ \end{matrix} ] = x * [\begin{matrix} ix\\ iy\\ \end{matrix} ] + y * [\begin{matrix} jx\\ jy\\ \end{matrix} ] = [\begin{matrix} ix * x & jx * y\\ iy * x & iy * y\\ \end{matrix} ] - 记住,当你看到一个矩阵的时候,你可以解读为对空间的一种变换。
- 看到二维矩阵时,也可以看作向量变换,第一列是
\hat{i} ,第二列是\hat{j} , 旋转整个坐标系。比如 [\begin{matrix} 0&-1\\ 1&0\\ \end{matrix} ] 中\hat{i} 是(0, 1),\hat{j} 是 (-1, 0),那么显然,这个是坐标系旋转了 90 度。那么任何向量想要旋转 90 度,只需要和 [\begin{matrix} 0&-1\\ 1&0\\ \end{matrix} ] 相乘即可。 -
数学上的剪切或者错切,像把坐标网格从正方形拉成平行四边形,指的是
\hat{i} 不变即 (1, 0),\hat{j} 变为 (1, 1),那么变换用矩阵表示即为: [\begin{matrix} 1&1\\ 0&1\\ \end{matrix} ] 相乘即可。 - 我们可以根据基变换后的坐标,就可以想象出整个张成空间随着基变换所做出的变化。但是注意,如果变换后的
\hat{i} 和\hat{j} 是线性相关的,即它们在一条线上,那么整个二维空间变换后就都被挤压在一条线上,变成一维空间了。
04 - 矩阵乘法与线性变换复合
-
当一个向量先进行旋转变换再进行剪切变换,那么按照步骤可以写成 [
\begin{matrix} 1 & 1\\ 0 & 1\\ \end{matrix} ][\begin{matrix} 0 & -1\\ 1 & 0\\ \end{matrix} ][\begin{matrix} x\\ y\\ \end{matrix} ] ,我们也可以直接按照旋转剪切最后的结果复合矩阵直接进行变换 [\begin{matrix} 1 & -1\\ 1 & 0\\ \end{matrix} ][\begin{matrix} x\\ y\\ \end{matrix} ]。 这两种计算的结果是一样的,我们可以给他们画个等号,如果两边都除去 [\begin{matrix} x\\ y\\ \end{matrix} ], 那么结果是 [\begin{matrix} 1 & 1\\ 0 & 1\\ \end{matrix} ][\begin{matrix} 0 & -1\\ 1 & 0\\ \end{matrix} ] = [\begin{matrix} 1 & -1\\ 1 & 0\\ \end{matrix} ], 这个也可以认为是矩阵的乘积。 -
矩阵相乘的几何意义就是变换时相继发生的。需要注意的时这个需要从右向左读,比如 [
\begin{matrix} 1 & 1\\ 0 & 1\\ \end{matrix} ][\begin{matrix} 0 & -1\\ 1 & 0\\ \end{matrix} ] 这个指的是 先 [\begin{matrix} 0 & -1\\ 1 & 0\\ \end{matrix} ] 再 [\begin{matrix} 1 & 1\\ 0 & 1\\ \end{matrix} ]。这个是根据符号来的,比如说 f(g(x)),这个也是先做 g() ,然后在做 f()。 -
矩阵乘法的计算,就是分别计算
\hat{i} 和\hat{j} 的变换,记住从右向左。 [\begin{matrix} a & b\\ c & d\\ \end{matrix} ][\begin{matrix} e & f\\ g & h\\ \end{matrix} ] 首先要做的变换是 [\begin{matrix} e & f\\ g & h\\ \end{matrix} ], 其中\hat{i} 经过第一次变换后 是 (e, g), 再进行第二次变换即 [\begin{matrix} a & b\\ c & d\\ \end{matrix} ] * [\begin{matrix} e\\ g\\ \end{matrix} ] = [\begin{matrix} ae + bg\\ ce + dg\\ \end{matrix} ] 这个几何含义是\hat{i} 先经过变换变为 [\begin{matrix} e\\ g\\ \end{matrix} ] 然后再经过 [\begin{matrix} a & b\\ c & d\\ \end{matrix} ] 变换,得到结果 [\begin{matrix} ae + bg\\ ce + dg\\ \end{matrix} ] 这个就是两次变换后的\hat{i} 。 同理 [\begin{matrix} e & f\\ g & h\\ \end{matrix} ] * [\begin{matrix} f\\ h\\ \end{matrix} ] = [\begin{matrix} af + bh\\ cf + dh\\ \end{matrix} ] 这个是\hat{j} 的变换过程。 那么\hat{i} 和\hat{j} 最后变换的结果就是 [\begin{matrix} ae + bg & af + bh\\ ce + dg & cf + dh\\ \end{matrix} ] -
矩阵相乘,先后顺序不能变,这个可以先旋转再剪切,先剪切再旋转,看下
\hat{i} 和\hat{j} 的坐标系变换结果就明白了。M1M2 ≠ M2M1 - 矩阵结合律 (AB)C = A(BC),只要从右向左的顺序一致即可。
04补充 - 三维空间中的线性变换
三维空间的变换其实也是一样的,只不过矩阵变成了3维而已。
05 - 行列式
- 因为矩阵是变换,所以原来的
\hat{i} ,\hat{j} 所形成的四边形的面积经过矩阵变换后,形成的新的四边形面积不一定是一样的,新的面积除以旧的面积,结果就是一个系数,这个系数既标识这个\hat{i} ,\hat{j} 的最小面积变换的系数,也是针对这个变换的所有面积的系数。这个系数也就是这个矩阵的行列式。det([\begin{matrix} 1 & 0\\ 0 & 1\\ \end{matrix} ]) = 1. - 注意如果行列式为 0,这是代表被压缩了维度,可能从二维变成了一条线,甚至一个点。
-
如果行列式为负数,那么这个符号表示整个平面发生了翻转,绝对值还是那个比例系数。 正常
\hat{j} 是在\hat{i} 的左边,翻转了之后,\hat{j} 就到了\hat{i} 的右边。保持\hat{j} 不动,\hat{i} 逆时针旋转,随着越来约靠近 j,面积被压缩的越来越厉害,当\hat{i} 和\hat{j} 重合的时候,面积为0,当\hat{i} 继续旋转 到了\hat{j} 的左边,这个就变为负数了。 - 三维空间也一样,
\hat{i} ,\hat{j} ,\hat{k} 这个体积经过矩阵变换,这个 [\begin{matrix} 1\\ 1\\ 1\\ \end{matrix} ] 的立方体,就变成了一个平行六面体,这个行列式的值也就是这个六面体的体积,同时也是比例系数。当这个值为 0 的时候,就意味着这个三维空间变成了一个二维的面,甚至是线或者点。 -
在三维空间,使用右手表示方向,食指是
\hat{i} ,中指是\hat{j} ,大拇指是\hat{k} , 这个时候表示正向。如果变换后,不能用右手表示,只能用左手表示,那么体积为负,也就是行列式为负。 - 行列式的计算,首先看特殊情况, det([
\begin{matrix} a & 0\\ 0 & d\\ \end{matrix} ]), 这种变换就是最简单的\hat{i} 拉伸了 a,\hat{j} 拉伸了 d,那么面积就是 ad,所以行列式值就是 ad。 det([\begin{matrix} a & b\\ 0 & d\\ \end{matrix} ]) 这个就是平行四边形,面积还是 ad,也就是 ad - b * 0。对于 det([\begin{matrix} a & b\\ c & d\\ \end{matrix} ]) 结果就是 ad - bc。 从面积上计算是这样的: - 三维行列式的计算公式是 det([
\begin{matrix} a & b & c\\ d & e & f\\ g & h & i\\ \end{matrix} ]) = a det([\begin{matrix} e & f\\ h & i\\ \end{matrix} ]) - b det([\begin{matrix} d & f\\ g & i\\ \end{matrix} ]) + c det([\begin{matrix} d & e\\ g & h\\ \end{matrix} ]) - det(M1M2) = det(M1)det(M2)
06 - 逆矩阵、列空间与零空间
- 线性方程组,就是几个线性方程,左边是 x, y, z 之类的简单的形式,不包含平方,三角函数等;右边是常数的方程。这些方程组,可以把左边的系数提取出来作为一个矩阵,未知数一个矩阵,右边常量一个矩阵。
逆变换
-
A
\vec{X} =\vec{V} 在几何上面的意思是,有一种变换,可以让\vec{X} 在变换后,和\vec{V} 重合。 - 如果 det(A) ≠ 0,那么只有唯一的一个
\vec{X} 在变换后与\vec{V} 重合。如果我们想要求解\vec{X} ,可以找到 A 的逆变换A^{-1} , 然后让\vec{V} 逆变换即可获得\vec{X} . 比如说,旋转90度的 A 是 [\begin{matrix} 0 & -1\\ 1 & 0\\ \end{matrix} ] 那么逆变换A^{-1} 是旋转 -90度 [\begin{matrix} 0 & 1\\ -1 & 0\\ \end{matrix} ]. 向右剪切 [\begin{matrix} 1 & 1\\ 0 & 1\\ \end{matrix} ] 的逆变换,向左剪切 [\begin{matrix} 1 & -1\\ 0 & 1\\ \end{matrix} ] - 总的来说,
A^{-1} 可以让 A 的变换恢复,A^{-1} A 表示啥都不做,也就是恒等变换。 -
在 A
\vec{X} =\vec{V} 的两边都做A^{-1} 变换,即A^{-1}A\vec{X} =A^{-1}\vec{V} , 也就是\vec{X} =A^{-1}\vec{V} - 如果 det(A) = 0, 也就是说,维度被压缩了,那么不存在 逆变换
A^{-1} ,因为你不可能从一个平面恢复为一个立体。 - 当然 det(A) = 0 可能存在唯一解,只有在
\vec{V} 恰好落在压缩之后的维度上才行,如果不在压缩后的维度上,那么也是无解。
列空间
- det(A) = 0 为0 时,如果被压缩为一条线,那么变换的秩 = 1,如果压缩为一个平面,那么秩 = 2 . 秩 就是变换后的维度数。
-
对于 3x3 的矩阵,秩 = 2 意味着被压缩为一个平面,秩 = 1 表示压缩为一条线。如果这个矩阵 det(A) ≠ 0,意味着还是一个立体空间。
- 矩阵的列意味着变换后的基向量在什么位置,这些变换后基向量张成的空间就是所有可能变换的结果。我们将所有可能输出向量 A
\vec{X} 的集合称为列空间(colunm space)。换句话而言,列空间就是矩阵的列所张成的空间. 进一步讲,列空间的维数称为秩。- 当变换后的结果
\vec{v} 为一条直线时,也就是结果是一维的,我们就称这个变换的秩为1. - 当变换后的结果
\vec{v} 为一个平面时,也就是结果是二维的,我们就称这个变换的秩为2. - 特别的, 对于 3x3 维矩阵
- 当秩为3时,意味着列向量仍可以张成整个空间,行列式的值不为0;
- 秩为2,意味着线性变换对空间进行了压缩(行列式的值为0);
- 秩为1,意味着空间压缩就比较严重;
- 当变换后的结果
- 由此可得,秩可以用来描述线性变换对空间的压缩程度。 秩 <=> 变换后空间的维数 <=> 列空间的维数。
- 当秩取到最大值时,意味着秩与矩阵的列数相等,我们称之为“满秩(Full Rank)”.
- 零向量一定在列空间中,因为线性变换必须保持空间原点位置保持不变;
- 满秩变换,唯一能在变换后落在原点的向量一定是零向量自身。
零空间/核(Null space/Kernel)
- 对于非满秩矩阵,意味着该线性变换会对空间进行压缩到一个更低维的空间,通俗来讲,就是会有一系列直线上不同方向的向量压缩为原点。比如 二维压缩为一条线,或者3维压缩为一个平面甚至一条线。
- 我们将变换后落在原点的向量集合,被称为“零空间”或者“核”。变换后一些向量落在零向量上,换句话而言,零空间是就是这些向量构成的。
- 对于 A
\vec{X} = [\begin{matrix} 0\\ 0\\ \end{matrix} ] , 零空间给出的就是这个向量方程所有可能的解。