视频地址: https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
向量是什么
物理中是用于描述具有大小和方向的物理量, 计算机中是数据列表, 而数学中只要保证两个向量相加以及数字相乘是有意义的即可.
线性代数中围绕两种基本运算: 向量加法和向量数乘
线性组合 基 张成空间
当我们使用数字进行描述向量时, 它都依赖于我们正在使用的 基(向量).
而两个数 乘 向量的和 被称为这两个向量的 线性组合
大多数情况下, 线性组合能到达平面中的任意一个点, 除了两个初始向量共线.
所有可以使用 给定向量 线性组合 进行表示的 向量集合, 称为给定向量的 张成空间 (span)
张成空间实际上就是在问, 仅通过 向量加法和向量数乘 两种基础运算, 你能获得的所有向量集合是什么.
当一组向量中, 移出向量而不减小张成空间, 这种情况发生时, 我们称它们是 线性相关 (Linearly Dependent) 的.
又或者说其中的一个向量可以表示位其他向量的线性组合. 那么另一方面. 如果都给向量的张成增加了维度, 那么他们之间就是 线性无关.
空间的一组基的严格定义是: 张成该空间的一个线性无关的集合.
矩阵和线性变化
线性变化:
- 直线在变换后仍然保持为直线
- 原点还是固定的
或者说, 变化后的坐标网格 平行且等距分布. 那么怎么使用数值对变化进行表达呢?
在你给定一个向量坐标, 从而得到变换后的坐标呢?
实际的结果是, 你只需要记录两个基向量 $(\hat{i}, \hat{j})$ 变换后的位置. 其他向量都会随之而动.
假设目前我们有一个向量 $\overrightarrow{v} = -1\hat{i} + 2\hat{j}$
而变换后的 $ Transformed \overrightarrow{v} = -1(Transformed)\hat{i} + 2(Transformed)\hat{j}$
变换前的 $\overrightarrow{v}$ 是 $(\hat{i}, \hat{j})$ 的线性组合, 而变换后, 还是他们的线性组合.
上述主要想解释的是: 一个二维线性变换仅由四个数字完全确定.
而通常我们将这些坐标包含在一个 2x2 的格子中, 称为 2x2 矩阵.
每列为变换后的基向量 $(\hat{i}, \hat{j})$
假设你想知道线性变换对某个向量的作用, 按照上述步骤即可.
矩阵乘法与线性变换复合
我们在前面已经说明了, 比如 翻转 \ 剪切(shear), 这样的独立变换. 那么当我们先进行翻转, 再进行剪切, 组合成一个新的线性变换, 这个变换通常被称为前两个独立变换的 复合变换, 我们也能通过观察 $(\hat{i}, \hat{j})$ 变换后的位置, 并使用矩阵描述这个复合变换.
那么当你有一个向量, 你该怎么得到最终的结果呢? 麻烦的方式就是:
先与旋转矩阵相乘, 然后结果再与剪切矩阵相乘. 但是结果都会与直接乘复合矩阵的结果相同.
需要注意的是, 要首先应用右侧矩阵所描述的变换
那我们该如何计算两个矩阵作用后获得的复合矩阵呢?
因为即使是复合后的矩阵也是使用 $(\hat{i}, \hat{j})$ 进行描述的, 我们可以先算出 $\hat{i}$ 的去向.
当先作用第一个矩阵变化 (M1) $\hat{i}$ 的左边就变为了矩阵的第一列, 也就是 [1, 1], 然后再经过 M2 的变换.
所以复合矩阵中 $\hat{i}$ 最终为 [2, 1].
同样的 $\hat{j}$ 也是这样计算.
那么还有一个问题, 矩阵相乘它们的先后顺序影响结果吗?
当在单独描述一个矩阵变换时,总是假设它是在固定的、基础的 $(\hat{i}, \hat{j})$ 坐标系, 而两个矩阵复合变换的过程中, 第二个矩阵的参考系, 实际上变为了第一个矩阵变换后的结果, 相对于我们单独描述时的参考系发生了变化, 所以两个矩阵复合变换不能交换.
扩展到三维也是如此
行列式
行列式实际上是为了描述, 线性变换对空间做了多大的拉伸和挤压
- 当为正数时, 表示单位空间经过了这个比例的缩放
- 当为 0 表示这二维平面可能被压缩到了一条线或者点, 推广到多维就能够确定这个矩阵变换是否将空间压缩到了更小的维度上. 也能说明矩阵的列存在线性相关
- 当为负数时, 就如同整个平面翻转. 就像把东西翻了一面. 这样的变换称为改变了空间的定向. 绝对值还是缩放比
二维行列式计算方式
而一句话解释
就是: 复合变换最后的缩放比, 就等于分别缩放后相乘
线性方程组 逆矩阵 列空间 零空间
线性方程组: 未知变量都在左边, 剩余的常数项在右边, 未知的变量竖直对齐, 必要时添加 系数0 使其对齐.
而这个方程组也可以使用一个 矩阵方程 表示:
而这个方程又阐明了几何优美的部分, A 指的是一种线性变换, 而解决
实际上是要求我们找到一个 $\overrightarrow{x}$ 经过 A 变换后与 $\overrightarrow{v}$ 重合.
现在这个方程的解依赖于矩阵 A 所代表的变换.
- A 是将空间挤压到一条线或是一个点的低维空间. 行列式结果为 0
- 或者是保持完整的二维空间. 行列式结果不为0
当行列式结果不为 0 时
只有一个向量在变换后与 $\overrightarrow{v}$ 重合.你可以通过逆变换得到这个行列式. 当你在逆向进行变换时, 实际上应用了另一个线性变换, 通常被称为 “A 的逆”, $A^{-1}$
$A^{-1}$ 是满足以下性质的唯一变换: 你先应用 A 的变换, 再应用 $A^{-1}$ 的变换. 你就会回到原始状态. 而两个状态的相继变化在代数上体现为矩阵乘法.
而这个乘法的结果等于一个什么都不做的矩阵, 这个矩阵称为 恒等变换.
所以为了解决之前那个等式, 你可以在方程两端都进行A 的逆变换(逆变换可以由计算机计算得到)得到:
然后就变为了
也就是说, 对于两个未知量, 两个方程构成的方程组, 大概率存在唯一解. 当方程数量与未知数目相同时, 这一思想在高维情况也有意义. 只要变换 A 不会将空间压缩到一个更低维度上. 也就是它的行列式不为 0. 那么就存在逆变换 $A^{-1}$
当行列式结果为 0 时
变换将空间压缩到更低的维度上. 此时没有逆变换. 因为你不能将一条线”解压缩”为一个平面. 这样实际上是要求一个单独的向量变换为一整条线的向量. 但是函数只能将一个输出变换为另外一个输出. 不过虽然行列式结果为0, 但是依旧存在解.
可以注意到一些零行列式的情况比其他的情况更加严格. 比如一个 3x3 矩阵, 当它将空间压缩为一条直线, 与压缩成平面相比, 解存在的条件更为苛刻. 即使这两种情况下的行列式都为零. 这种情况下除了使用零行列式进行描述. 我们还有特定的术语来描述它们.
秩(Rank)
当变换的结果为一条直线时, 也就是结果是一维的, 我们称这个变换的秩为 1, 如果变换后的向量落在二维平面上, 那么就称变换的秩为2.
所以 秩 代表的是变换后空间的维数.
比如对于一个 2x2 矩阵来说, 它的秩最大为 2. 意味着向量仍能张成整个二维空间. 而且矩阵的行列式不为零.
但是对于一个 3x3 矩阵来说, 秩为 2. 意味着空间被压缩了. 不过相比秩为1 的情况, 压缩的并不是那么严重.
Column space: 所有可能的 输出向量 $A\overrightarrow{v}$ 构成的集合称为矩阵A的列空间. 矩阵使你知道变换后基向量的位置. 而基向量 张成 的空间, 就是列空间.
所以秩更精确的定义就是列空间的维数. 当秩与列数相等时, 称之为满秩(Full Rank)
零向量一定会被包含在列空间中, 因为线性变换必须保持原点位置不变.
对于一个满秩的变换, 唯一能在变换后落在原点的只有零向量自身.
但对一个非满秩的的变换, 由于将空间压缩了. 所以可能一系列的向量在变换后变为零向量.
变换后落在原点的向量集合, 被称为矩阵的 “零空间 (Null space)” 或者 “核 (Kernel)”
对线性方程来说, 当向量
恰好为零向量时. 零空间 就是这个向量方程所有可能的解.
非方阵
我们可以这样看一个非方阵.
相对于是映射在三维中的一个二维平面, 但是这个矩阵仍然是满秩的. 因为列的张成空间 (三维中的平面) 与输入空间的维度相同.
所以这个的几何意义就是将二维空间映射到三维空间上.
点积与对偶性
假设你有两个维度相同的向量, 点积就是将相应位置的数相乘, 最后全部相加的结果.
而这个计算有一个优美的几何解释:
将 $\overrightarrow{w}$ 投影到过 原点和 $\overrightarrow{v}$ 终点的直线.
所以当两个向量的方向相同时, 点积为正. 而如果相互垂直, 意味着一个向量在另一个向量上的投影为零向量, 所以点积为零.
相应的, 你也可以让 $\overrightarrow{v}$ 投影到 $\overrightarrow{w}$ 上, 结果是一样的.
那为什么这两者之间有联系呢?
我们先假设在一个二维空间中有一个数轴, 其中 0 点和 二维坐标的 0 点重合. 而正好有个向量 $\overrightarrow{u}$ 的终点落在这个数轴单位为 1 处.
我们知道, 当我们在将向量映射到其他坐标时, 要找到对应的 $(\hat{i}, \hat{j})$ 基向量的位置.
那么我们先看 $\hat{i}$ 在数轴中的位置, 我们知道表示数轴单位向量的 $\overrightarrow{u}$ 在 $\hat{i}$ 的长度是 $u_x$, 根据对偶性那么在数轴上的长度也是 $u_x$.
而 $\hat{j}$ 也同理, 所以变换矩阵就是 $\begin{bmatrix} u_x, u_y \end{bmatrix}$, 也就是就是向量本身.
而 $\begin{bmatrix} u_x, u_y \end{bmatrix}$ 与向量乘积, 得到的式子和点积一致.
所以, 与(目标向量)单位向量的点积, 可以解读为: 将向量投影到单位向量所在直线上得到的长度
那么与非单位向量呢? 比如模长为单位向量的三倍. 那么就只是将基向量 $(\hat{i}, \hat{j})$ 映射后, 增大三倍得到 $\begin{bmatrix} 3u_x, 3u_y \end{bmatrix}$
所以对于非单位向量与给定向量的乘积可以解读为, 先朝着给定单位向量投影, 然后将投影的值与给定长度相乘.
类似这样:
这边的想要说明的是, 你在任何时候看到一个线性变换(二维到一维). 他的输出会存在唯一的向量与之相关. 就这意义而言, 应用变换和与向量计算点积是一样的.
对偶性实际上是指: 自然而又出乎意料的对应关系
向量点乘, 实际上就是将其中一个向量转为线性变换.
叉积
假设以这两个向量为基向量, 他的单位面积是多大. 而组成矩阵的列向量是逆时针分布的, 就为正, 顺时针为负.
在二维中, 叉积就是等同于行列式的值.
而三维中的叉积是通过两个三维向量生成一个新的三维向量, 这个向量的长度是 两个三维向量 行列式的绝对值, 垂直于那个平面.
而垂直于平面有两个方向, 方向是由右手决定的.
以下是标准 三维向量的叉积(Cross Product) 公式。
设有两个三维向量:
它们的叉积(外积)定义为:
这个运算的结果仍然是一个三维向量,并且它与 $ \mathbf{v} $ 和 $ \mathbf{w} $ 都垂直(即法向量)。
可以将行列式写成这种方式便于记忆, $\hat{i}, \hat{j}, \hat{k}$ ( 是向量, 不是数值, 所以结果是一个向量 ),
而使用行列式进行计算后, 得到的结果就是这三个基向量的线性组合.
图片中将向量写成矩阵的列, 而其他大多数都是写成行, 两种结果没有差异, 这里按照列是为了更加直观
但是写成行列式的方式便于记忆并非巧合.
我们将按照以下的计划.
我们将使用这个函数(体积就是一个一维变换), 其中 (x \ y \ z) 是变量.
而因为这个函数是, 接收一个三维向量, 输出一维. 那么就可以在当前的三维空间中找到一个对偶向量与之做点积达到相同效果.
所以就是这样
而展开后可以得到:
这与在行列式中插入 基向量 $\hat{i}, \hat{j}, \hat{k}$, 再乘以这些系数是一致的. (插入基向量只是为了提醒我们系数这些方向上具体的值)
所以问题就变成了, 怎样的一个对偶向量 P 满足与 (xyz) 等于 (xyz) 作为第一列时, 与另外两个向量组成的行列式的值?
而 P 与 (xyz) 的点积就是, (xyz) 映射到 P 的长度 再乘以 P 本身的长度.
而体积的计算方式是高度乘以面积, 也就是 $\mathbf{v}, \mathbf{w}$ 围成的面积, 乘以高度.
P 的长度正好为 $\mathbf{v}, \mathbf{w}$ 围成的面积. 而平行六面体的高度正好为 (xyz) 在 P 上的映射.