向量与点积

点积为什么成立,又在空间中意味着什么

线性代数
发布于

2026年10月13日

本文译自英文原文 Vectors and the Dot Product,如有出入,以英文版为准。

1 向量及其基本运算

我们可以把向量看作空间中的一个箭头。它可以在二维空间、三维空间,甚至更高维的空间里。和普通的线段不同,向量既有大小,也有方向。

我们通常用一列数来表示一个向量,例如:

\[ \vec{v} = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} \]

向量有两种基本运算:向量加法和数乘。

向量加法就是把两个向量的对应坐标相加:

\[ \vec{a}+\vec{b} = \begin{bmatrix} a_1+b_1\\ a_2+b_2\\ \vdots\\ a_n+b_n \end{bmatrix} \]

数乘就是把每个坐标都乘以同一个数:

\[ c\vec{v} = \begin{bmatrix} cv_1\\ cv_2\\ \vdots\\ cv_n \end{bmatrix} \]

这些运算简单直观,同时也是向量空间线性结构的基础。

2 点积与内积

下一个运算有点不一样:点积。

和向量加法不同,两个向量的点积得到的是一个标量,而不是另一个向量。

\[ \vec{a}\cdot\vec{b} =\sum_{i=1}^{n}a_ib_i \]

可是,为什么要把对应坐标相乘再加起来?这个数到底意味着什么?

要理解这一点,可以先看一个更一般的数学概念:内积。

内积是一种运算,它接收两个向量,得到一个标量。在实向量空间中,它必须满足三条性质:

1. 线性

\[ \langle \alpha\vec{a}+\beta\vec{b},\vec{c}\rangle = \alpha\langle\vec{a},\vec{c}\rangle + \beta\langle\vec{b},\vec{c}\rangle \]

2. 对称性

\[ \langle\vec{a},\vec{b}\rangle = \langle\vec{b},\vec{a}\rangle \]

3. 正定性

\[ \langle\vec{a},\vec{a}\rangle\geq 0 \]

并且当且仅当 \(\vec{a}=\vec{0}\) 时结果为零。

我们熟悉的点积满足这三条性质,所以它是一种内积。

但内积不一定就是普通的点积。比如在二维空间中,我们可以定义:

\[ \langle\vec{a},\vec{b}\rangle =a_1b_1+2a_2b_2 \]

它同样满足这三条性质,因此也是一个合法的内积。

点积只是欧几里得空间中的标准内积,而它的几何意义尤其自然。

不过,这些性质还没有回答上面的问题。它们只规定了内积必须怎样表现,并没有说明为什么把坐标相乘再相加会得到一个有意义的数。答案来自几何,我们马上就会讲到。

3 向量长度与单位向量

有了点积,就可以定义向量的长度,也叫模。

\[ \|\vec{v}\| = \sqrt{\vec{v}\cdot\vec{v}} = \sqrt{v_1^2+v_2^2+\cdots+v_n^2} \]

有意思的是,向量的长度可以这样算:先求向量与自身的点积,再开平方。

这也说明,长度并不是独立于内积之外的东西,它正是由内积得来的。换一个内积,长度就会改变。用上面的 \(\langle\vec{a},\vec{b}\rangle=a_1b_1+2a_2b_2\),向量 \((0,1)\) 的长度是 \(\sqrt{2}\) 而不是 \(1\)。角度也会变:在普通点积下,\((1,1)\) 和 \((1,-1)\) 互相垂直,但在这个内积下

\[ \langle(1,1),(1,-1)\rangle = 1\cdot 1 + 2\cdot 1\cdot(-1) = -1 \neq 0, \]

所以它们不再垂直。换句话说,内积决定了一个空间里“长度”和“角度”的含义。普通点积,正是与我们在纸上画出的几何相吻合的那个选择。

知道了长度,就可以定义单位向量,也就是长度为 1 的向量。

对一个非零向量:

\[ \vec{u} = \frac{\vec{v}}{\|\vec{v}\|} \]

这个运算保持向量的方向不变,只把它的长度变成 1。

4 点积的几何意义

到目前为止,点积看起来只是对坐标的一种运算。但它实际上描述了更有意思的东西:两个向量之间的几何关系。这就是前面那个问题的答案。

我们有下面这个公式:

\[ \vec{a}\cdot\vec{b} = \|\vec{a}\|\|\vec{b}\|\cos\theta \]

其中 \(\theta\) 是两个非零向量之间的夹角。

怎样从点积的坐标定义推出这个公式呢?

首先,在二维空间中,我们可以用长度和方向来表示两个向量:

\[ \vec{a} = \|\vec{a}\| \begin{bmatrix} \cos\alpha\\ \sin\alpha \end{bmatrix} \]

\[ \vec{b} = \|\vec{b}\| \begin{bmatrix} \cos\beta\\ \sin\beta \end{bmatrix} \]

于是它们的点积是:

\[ \begin{aligned} \vec{a}\cdot\vec{b} &=\|\vec{a}\|\|\vec{b}\| (\cos\alpha\cos\beta+\sin\alpha\sin\beta)\\ &=\|\vec{a}\|\|\vec{b}\|\cos(\alpha-\beta)\\ &=\|\vec{a}\|\|\vec{b}\|\cos\theta \end{aligned} \]

这样就得到了几何形式的公式。

这个计算是在二维中做的,但结论在任何维数下都成立。两个向量总是落在同一个平面里,所以它们的夹角就是这个平面里的一个角。最后一节的余弦定理,会给出一种不借助任何坐标的看法。

这意味着,只要知道两个非零向量的坐标,就能直接算出它们夹角的余弦:

\[ \cos\theta = \frac{\vec{a}\cdot\vec{b}} {\|\vec{a}\|\|\vec{b}\|} \]

这正是点积有意思的地方。它看起来只是对坐标的简单算术,却包含了方向和角度的信息。

我们也可以用投影来理解它(图 1)。

\(\vec{a}\) 在 \(\vec{b}\) 方向上的有向标量投影是:

\[ \|\vec{a}\|\cos\theta \]

再乘以 \(\vec{b}\) 的长度,就得到:

\[ \vec{a}\cdot\vec{b} = (\|\vec{a}\|\cos\theta)\|\vec{b}\| \]

所以,点积衡量的是一个向量与另一个向量有多“同向”,再按它们的长度放大。

θ ab
图 1: 拖动 \(\vec{a}\) 和 \(\vec{b}\) 的箭头末端。虚线把 \(\vec{a}\) 投到 \(\vec{b}\) 的方向上,粗线段就是有向投影 \(\|\vec{a}\|\cos\theta\);当 \(\theta\) 超过 \(90^\circ\) 时,它变为负值。

这正是我觉得线性代数有意思的地方:我们可以用坐标来计算,但在这些计算背后,有真实的几何意义。

后面学矩阵时,我们会看到更多这样的例子。矩阵不只是一堆用来计算的数。我们还应该去理解它在空间中代表什么、进行了怎样的变换,以及这些运算背后到底发生了什么。

5 向量长度的平方与余弦定理

现在来考虑另一个问题。

我们早就熟悉这个代数恒等式:

\[ (a+b)^2=a^2+b^2+2ab \]

对向量来说,有没有类似的结论?

我们来算两个向量之和的长度的平方。这里不需要坐标,内积的性质就足够了,所以结论在任何维数下都成立:

\[ \begin{aligned} \|\vec{a}+\vec{b}\|^2 &=(\vec{a}+\vec{b})\cdot(\vec{a}+\vec{b})\\ &=\vec{a}\cdot\vec{a}+\vec{a}\cdot\vec{b} +\vec{b}\cdot\vec{a}+\vec{b}\cdot\vec{b}\\ &=\|\vec{a}\|^2+\|\vec{b}\|^2 +2\vec{a}\cdot\vec{b} \end{aligned} \]

第二行用到了线性,第三行用到了对称性(\(\vec{a}\cdot\vec{b}=\vec{b}\cdot\vec{a}\))。那些抽象的性质正是在这里派上用场:有了它们,我们才能像展开普通的和的平方一样,展开向量和的平方。

再用点积的几何公式,得到:

\[ \|\vec{a}+\vec{b}\|^2 = \|\vec{a}\|^2+\|\vec{b}\|^2 +2\|\vec{a}\|\|\vec{b}\|\cos\theta \]

有意思。从代数上看,它和熟悉的和的平方公式非常像。

从几何上看,它也很眼熟。事实上,它和余弦定理密切相关。

但符号似乎不太一样。

余弦定理通常写成:

\[ c^2=a^2+b^2-2ab\cos\theta \]

为什么这里是减号而不是加号?

画一个三角形就能理解(图 2)。

如果两个向量 \(\vec{a}\) 和 \(\vec{b}\) 从同一点出发,三角形的第三条边对应的是两个向量的差 \(\vec{a}-\vec{b}\),而不是它们的和。

θ a b a − b O
图 2: \(\vec{a}\) 和 \(\vec{b}\) 从同一点 \(O\) 出发。第三条边从 \(\vec{b}\) 的末端指向 \(\vec{a}\) 的末端,它就是 \(\vec{a}-\vec{b}\),因为 \(\vec{b}+(\vec{a}-\vec{b})=\vec{a}\)。\(\vec{a}\) 与 \(\vec{b}\) 的夹角 \(\theta\) 就是三角形在 \(O\) 处的内角。

所以我们应该计算:

\[ \begin{aligned} \|\vec{a}-\vec{b}\|^2 &=(\vec{a}-\vec{b})\cdot(\vec{a}-\vec{b})\\ &=\|\vec{a}\|^2+\|\vec{b}\|^2 -2\vec{a}\cdot\vec{b}\\ &=\|\vec{a}\|^2+\|\vec{b}\|^2 -2\|\vec{a}\|\|\vec{b}\|\cos\theta \end{aligned} \]

这正好就是余弦定理。

不过,加号的版本也没有错。它同样是余弦定理,只是量的是另一个角。如果改为把 \(\vec{b}\) 接在 \(\vec{a}\) 的末端(图 3),三角形的三条边就是 \(\vec{a}\)、\(\vec{b}\) 和 \(\vec{a}+\vec{b}\)。三角形里 \(\vec{a}\) 与 \(\vec{b}\) 之间的内角不再是 \(\theta\),而是 \(\pi-\theta\)。由于 \(\cos(\pi-\theta)=-\cos\theta\),余弦定理给出

\[ \|\vec{a}+\vec{b}\|^2 =\|\vec{a}\|^2+\|\vec{b}\|^2-2\|\vec{a}\|\|\vec{b}\|\cos(\pi-\theta) =\|\vec{a}\|^2+\|\vec{b}\|^2+2\|\vec{a}\|\|\vec{b}\|\cos\theta, \]

正是我们的加号公式。两个公式描述的是同一个几何事实,符号只取决于我们量的是哪个角。

π − θ θ a b a + b O
图 3: 这里 \(\vec{b}\) 从 \(\vec{a}\) 的末端出发,第三条边是 \(\vec{a}+\vec{b}\)。三角形的内角是 \(\pi-\theta\);原来的角 \(\theta\) 出现在外侧,位于 \(\vec{b}\) 与 \(\vec{a}\) 的延长线之间。

这个论证也可以反过来读,这样就补上了前面留下的缺口:当时我们只在二维中推出了 \(\vec{a}\cdot\vec{b}=\|\vec{a}\|\|\vec{b}\|\cos\theta\)。在任何维数下,由 \(\vec{a}\)、\(\vec{b}\) 和 \(\vec{a}-\vec{b}\) 构成的三角形都是一个平面三角形,所以平面几何中的余弦定理对它成立。而代数给出 \(\|\vec{a}-\vec{b}\|^2=\|\vec{a}\|^2+\|\vec{b}\|^2-2\vec{a}\cdot\vec{b}\)。两者一比较,\(\vec{a}\cdot\vec{b}\) 就必然等于 \(\|\vec{a}\|\|\vec{b}\|\cos\theta\),无论多少维。

一个看起来属于初等几何的公式,可以从向量运算和点积中自然地推导出来。

这就是我学线性代数时想弄明白的东西:不只是怎么计算,而是这些数学运算为什么成立,以及它们和几何之间有怎样的联系。

下一篇:把矩阵看作变换,对矩阵问同样的问题。