笃行
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
  • 向量入门

    • 看得见的机器学习数学
    • 向量是什么
    • 向量的加减与数乘
    • 线性组合与张成
  • 矩阵与变换

    • 矩阵是一次变换
    • 矩阵乘法
  • 度量与求解

    • 行列式与面积
    • 解方程组就是倒着走回去
    • 特征向量的直觉
    • 点积与相似度
  • 高维与结构

    • 高维空间的直觉
    • 正交基与投影
    • 秩与低秩
    • 长度与归一化
    • 线性与非线性
  • 概率与信息

    • 概率分布与采样
    • 期望与方差
    • 指数与 softmax
    • 对数与信息量
    • 交叉熵
  • 学习与优化

    • 导数就是坡度
    • 梯度下降
    • 链式法则与反向传播

向量的加减与数乘:走两段路,和把箭头拉长

你先从家走到小卖部买了瓶水,又从小卖部走到球场。现在你妈问:"你从家一共走到哪儿去了?"——你怎么一句话说清?

🧠 一句话结论

向量相加就是"先走这段、再走那段",把两根箭头首尾接起来;向量数乘就是把箭头拉长或缩短,乘负数就掉个头。


场景问题

你妈的问题其实不好答。你可以老实交代:"我先往东走了 300 米,然后往北走了 400 米。"但这是两句话,而且她要的不是路线,是结果——你最后跑到哪儿去了。

如果你能说"我从家往东北方向走了 500 米",那就一句话说完了。

这两种说法有意思的地方在于:它们描述的是同一件事。一个是"过程"(走了哪两段),一个是"结果"(净跑了多远、朝哪)。数学家要的就是从过程算出结果的方法——已知你走的每一段,算出你净走了多少。

这个方法叫向量相加。而它的兄弟问题是:"如果我按原来的方向,但走三倍那么远,会到哪儿?"——那个叫数乘。

上一篇我们说过一句当时像废话的话:向量不管起点,箭头挪到哪儿都是同一个向量。这一篇你马上就要用到它——正因为箭头能随便挪,我们才能把两根箭头首尾接起来。

实现方案

相加:首尾相接

规则简单到有点让人失望:把第二根箭头的尾巴,接到第一根箭头的头上,然后从最开始的起点画一根箭头指向最后的终点。 这根新箭头就是它们的和。

看着下面这幅图,跟着那个来回跑的小点走一遍:

先走这段再走这段净走了这么多起点

橙色是第一段,青色是第二段(注意青色的尾巴正好接在橙色的头上),紫色就是它们的和——从起点直接指向终点。小点跑的路是"过程",紫色箭头是"结果"。

这个画法叫三角形法则,因为三根箭头围成了一个三角形。

顺便回答一个问题:先走哪段有区别吗?

图里那两根灰色虚线就是在回答这件事。它们是先走青色、再走橙色的路线——你会发现,虚线也走到了同一个终点。

这不是巧合。两条路线(橙→青、青→橙)加上起点终点,围成了一个平行四边形,紫色箭头正好是它的对角线。有些书管这叫平行四边形法则——但你看,它和三角形法则说的是同一件事,只是把两种走法都画出来了而已。

所以:向量相加可以交换顺序,a+b=b+aa + b = b + aa+b=b+a。 理由特别朴实——先往东走再往北走,和先往北走再往东走,反正都到那个角上。

用数字算:对应位置分别相加

现在把图上的格子数一数:

  • 橙色是向右 3 格、向上 1 格,也就是 (31)\begin{pmatrix} 3 \\ 1 \end{pmatrix}(31​)
  • 青色是向右 1 格、向上 2 格,也就是 (12)\begin{pmatrix} 1 \\ 2 \end{pmatrix}(12​)
  • 紫色是向右 4 格、向上 3 格,也就是 (43)\begin{pmatrix} 4 \\ 3 \end{pmatrix}(43​)

看出来了吗?3+1=43 + 1 = 43+1=4,1+2=31 + 2 = 31+2=3。

(31)+(12)=(3+11+2)=(43)\begin{pmatrix} 3 \\ 1 \end{pmatrix} + \begin{pmatrix} 1 \\ 2 \end{pmatrix} = \begin{pmatrix} 3+1 \\ 1+2 \end{pmatrix} = \begin{pmatrix} 4 \\ 3 \end{pmatrix} (31​)+(12​)=(3+11+2​)=(43​)

上面的数跟上面的数加,下面的数跟下面的数加。 就这么简单。

但这里有件事我希望你特别留意:这个规则不是谁规定的,它是从图上"看"出来的。 想想为什么——你先向右 3 格再向右 1 格,那当然一共向右 4 格;你先向上 1 格再向上 2 格,那当然一共向上 3 格。向右的和向右的算总账,向上的和向上的算总账,两笔账互不干扰。

规则来自事实,不是来自规定。 这是这一篇最值得记住的一句话。以后碰到任何"背不下来的公式",你都可以问一句:"这条规则是从哪张图上看出来的?"

数乘:把箭头拉长缩短

如果向量是"往那边走 200 米",那"往同一边走 600 米"是什么?显然是同一个方向,距离变 3 倍。

这就是数乘:拿一个普通的数(上一篇提过,普通的数叫标量)去乘一个向量,效果是把箭头拉长或缩短,方向不变。

2v(两倍长)v-v(掉头)

青色是原来的 vvv,橙色是 2v2v2v——方向一模一样,长度翻倍。算起来也不意外:

2⋅(21)=(42)2 \cdot \begin{pmatrix} 2 \\ 1 \end{pmatrix} = \begin{pmatrix} 4 \\ 2 \end{pmatrix} 2⋅(21​)=(42​)

每个数字都乘 2 就行。 道理还是从图上来的:向右的格数翻倍、向上的格数也翻倍,箭头自然就整体变成两倍长,斜度一点没变(所以方向不变)。

那乘小于 1 的数呢?0.5v0.5 v0.5v 就是缩短一半,还是同一个方向。

乘负数:长度照变,方向掉头

现在看紫色那根。它是 −v-v−v,也就是 (−1)⋅v(-1) \cdot v(−1)⋅v。

(−1)⋅(21)=(−2−1)(-1) \cdot \begin{pmatrix} 2 \\ 1 \end{pmatrix} = \begin{pmatrix} -2 \\ -1 \end{pmatrix} (−1)⋅(21​)=(−2−1​)

"向右 2 格"变成了"向右 -2 格"——向右走负数格,就是向左走 2 格。同理"向上 -1 格"就是向下 1 格。于是箭头转了个 180 度,完全掉头,但长度和原来一样。

所以规则是:乘 kkk 之后,长度变成 ∣k∣|k|∣k∣ 倍(取绝对值,因为长度不可能是负的),而 kkk 是负数时方向反过来。

比如 −3v-3v−3v:长度变 3 倍,方向掉头。

乘 0:原地不动

0⋅v=(00)0 \cdot v = \begin{pmatrix} 0 \\ 0 \end{pmatrix}0⋅v=(00​),向右 0 格、向上 0 格——哪儿也没去。

这个"长度为零、没有方向"的特殊向量叫零向量,写作 0⃗\vec{0}0。它在图上就是一个点,画不出箭头。你可以把它理解成"原地不动"这个动作——听着像什么都没做,但它确实是个合法的动作,后面讲到"方程组无解"和"平面被压扁"时它会派上大用场。

相减:加上一个掉头的箭头

减法不需要新规则。既然乘 −1-1−1 就是掉头,那么:

a−b=a+(−b)a - b = a + (-b) a−b=a+(−b)

减去 bbb,就是加上一个掉了头的 bbb。

不过 a−ba - ba−b 在图上还有个更好用的看法:

aba - b同一个 a-b

看那根实心紫色箭头:它从 bbb 的头指向 aaa 的头。这就是 a−ba - ba−b。

为什么?因为"从 bbb 的终点走到 aaa 的终点"这段路,正好补上了两者的差距——你从 bbb 那儿再走这一段,就能到 aaa。用加法说就是 b+(a−b)=ab + (a - b) = ab+(a−b)=a,完全对得上。

而那根虚线紫箭头是把 a−ba-ba−b 挪到原点画的版本。两根紫箭头一样长、一样朝向,所以是同一个向量——这就是上一篇"箭头可以随便挪"的用处。

a−ba - ba−b 有个好记的用法:它是"从 b 指向 a"的那根箭头。以后要表达"从这个点到那个点",就是"终点减起点"。

为什么这么做

为什么把这个操作叫"加法"?它和 2+3=52+3=52+3=5 是一回事吗?

不完全是一回事,但共享同一个精神:把两个东西合并成一个。数字相加是把两个数量合并,向量相加是把两段位移合并。数学家发现向量的这个操作和数字加法有很多共同的性质(比如都能交换顺序、都有个"加了等于没加"的零),所以借用了同一个名字和同一个符号。

代价是:你必须时刻记住向量加法不是长度相加(下一节专门讲这个坑)。名字借来了,规则可没借来。

为什么规则是"对应位置分别相加",而不是别的搭配?

因为"向右几格"和"向上几格"这两笔账天生互不干扰。你向右走多少,丝毫不影响你向上走了多少——这是格子坐标系的根本性质(两个方向互相垂直)。所以两笔账各自算总,合起来就是答案。

如果换一种记法(比如上一篇提到的"长度 + 角度"),这两笔账就纠缠在一起了:两个箭头的长度相加不等于结果的长度,角度相加更是毫无意义。这就是上一篇说"格子记法算起来方便"的兑现时刻。

为什么要专门定义"数乘",而不是说"向量加自己 3 次"?

因为加自己 3 次只能得到 3v3v3v,得不到 0.5v0.5v0.5v、−2v-2v−2v、1.7v1.7v1.7v。数乘能做的事比重复加法多得多——它让"沿着这个方向,走任意倍数的距离"成为一个操作。

下一篇你会看到,正是"加法 + 数乘"这两个操作合起来,才能用几根固定的箭头拼出平面上任何一个点。少了数乘就拼不出来。

为什么别的选择不行

死胡同一:以为"向量相加"就是"长度相加"

这是本篇最大的坑,而且它错得非常有诱惑力:两个东西加起来,不该变得更大吗?

来做个实验。两根箭头都长 3 格,把它们相加,结果有多长?

答案是:说不准,取决于方向。

两根箭头的方向相加的结果长度
完全同向(都朝右)一根朝右的长箭头6(这时候确实是相加)
完全反向(一朝右一朝左)走出去又走回来0(零向量!)
互相垂直一根斜箭头约 4.2(不是 6,也不是 0)
夹角很小稍微斜一点的长箭头5 到 6 之间

同样是"3 加 3",答案可以是 6、可以是 0、可以是中间的任何值。

想想为什么:"往东走 3 步,再往西走 3 步"——你回到了原地,净位移是零。你确实走了 6 步路(累坏了),但你哪儿也没去。向量记的是"净跑到哪儿",不是"走了多少路"。

所以:长度不服从加法。 那个"两个东西加起来会变大"的直觉,是从数字那儿带过来的,在向量这里不成立。这也是为什么我们非要在图上首尾相接地画——只有图不会骗你。

死胡同二:以为 a−ba - ba−b 和 b−ab - ab−a 是一回事

在数字里,5−3=25 - 3 = 25−3=2 和 3−5=−23 - 5 = -23−5=−2,大家都知道不一样但"差不多",就是差个正负号。

在向量里也是差个"正负号",但这个符号的后果是几何上的:

  • a−ba - ba−b 是从 b 指向 a 的箭头
  • b−ab - ab−a 是从 a 指向 b 的箭头

两根箭头长度完全相同、方向完全相反。它们不是"差不多",而是指着两个相反的地方。

这个错误在实际中很致命,因为它常常伪装成"顺序无所谓"。举个例子:你要算"从我家到学校"这个向量,正确写法是 学校 - 我家(终点减起点)。要是写成 我家 - 学校,你算出来的箭头会指向反方向——照着它走,你会离学校越来越远。

记住:减法不能交换顺序。谁在前面,箭头就指向谁。

沉淀结论

这一篇给了你两个操作,它们是后面所有内容的工具:

  1. 相加 = 首尾相接(三角形法则),算法是对应位置分别相加;可以交换顺序
  2. 数乘 = 拉长缩短,算法是每个数字都乘那个数;乘负数会掉头,乘 0 得零向量
  3. 相减 = 加上掉头的箭头,图上是从 b 的头指向 a 的头;不能交换顺序
  4. 长度不服从加法——这是最容易犯的错

最重要的其实不是这些规则本身,而是那句话:规则来自图,不来自规定。 你每一条都能在方格纸上画出来验证。

下一篇我们要问一个新问题:手里只有两根固定的箭头,靠"加法"和"数乘"这两招,能拼出平面上哪些点? 答案会比你想的更有意思。

记忆口诀

加法首尾接,画个三角形。
上加上、下加下,两笔账不打架。
数乘拉长缩短,负数掉头,零变一个点。
减法是掉头再加,箭头从 b 指向 a。
长度不许相加——3 加 3 可以等于 0。

长大以后它会变成什么

游戏里角色的移动就是这么算的:本来朝前跑的速度,加上被爆炸推开的速度,加上重力往下拽的速度,全部首尾接起来,得出这一帧实际往哪儿飞。想看真实引擎里怎么处理这些叠加,可以以后翻 UE 移动预测。


自测:合上资料能说清楚吗?

  1. 你先往东走 400 米,又往北走 300 米。用向量的话怎么描述"你一共走到哪儿去了"?在方格纸上画出来。
参考答案

把两根箭头首尾相接:第二根的尾巴接在第一根的头上,再从最初的起点画一根箭头到最后的终点,这根就是和。用数字算是 (40)+(03)=(43)\begin{pmatrix} 4 \\ 0 \end{pmatrix} + \begin{pmatrix} 0 \\ 3 \end{pmatrix} = \begin{pmatrix} 4 \\ 3 \end{pmatrix}(40​)+(03​)=(43​)(按每格 100 米)。

  1. 两根箭头都是 3 格长,相加后的结果一定是 6 格长吗?请给出至少两个不同的答案。
参考答案

不一定。 同向时是 6 格;完全反向时是 0(走出去又走回来,回到原地);互相垂直时约 4.2 格。长度不服从加法——向量记的是"净跑到哪儿",不是"走了多少路"。

  1. 为什么"对应位置分别相加"这条规则是对的?它是谁规定的吗?
参考答案

不是规定的,是从图上看出来的。 向右走 3 格再向右走 1 格,一共当然向右 4 格;向上的格数同理。因为"向右"和"向上"两笔账互不干扰(两个方向垂直),所以各自算总账就是答案。

  1. 对比 −2v-2v−2v 和 0.5v0.5v0.5v:它们各自对箭头做了什么?哪个改了方向?
参考答案

0.5v0.5v0.5v 把箭头缩短一半,方向不变。−2v-2v−2v 把长度变成2 倍,同时方向掉头(转 180 度)。规则:乘 kkk 后长度变 ∣k∣|k|∣k∣ 倍(取绝对值),kkk 为负则方向反转。

  1. 要表示"从我家到学校"这根箭头,该写 学校 - 我家 还是 我家 - 学校?写错了会怎样?
参考答案

写 学校 - 我家——终点减起点。a−ba-ba−b 在图上是从 b 指向 a 的箭头。写反了得到的箭头长度相同但方向完全相反,照着走会离学校越来越远。减法不能交换顺序。

最近更新: 2026/9/10 11:38
Prev
向量是什么
Next
线性组合与张成