己酸集合
1. 向量乘积及其应用
1.1. 点积
向量的 点积 又称 内积 或 数量积。\(\vec a\) 与 \(\vec b\) 的点积记为 \(\vec a\cdot \vec b\),其公式为:
- 几何意义:\(\vec a\) 的模 乘以 \(\vec b\) 在 \(\vec a\) 上的投影,后者简记为 \(\mathrm{Prj}_{\vec a} \vec b\)。Prj 即英文单词 projection 的缩写。
- 运算类型:向量点积的结果为 标量,它 没有方向。
- 交换律:因为 \(\cos x = \cos(-x)\),所以向量点积与顺序无关,即向量点积 具有交换律。
- 结合律:一般情况下,\((\vec a \cdot \vec b) \times \vec c \neq \vec a\times (\vec b \cdot \vec c)\)。等式成立当且仅当 \(\vec b = \vec 0\) 或 \(\vec a, \vec c\) 方向相同,即向量点积 不具有结合律。注:百度百科上将向量的结合律定义如下:\((m\vec a)\cdot \vec b = m(\vec a\cdot\vec b) = \vec a\cdot(m\vec b)\)。
- 分配律:根据 \(\mathrm{Prj}_{\vec c}(\vec a + \vec b) = \mathrm{Prj}_{\vec c}\vec a + \mathrm{Prj}_{\vec c} \vec b\) 的性质(这一点是容易证明的),有 \((\vec a+\vec b)\cdot \vec c = |c| \mathrm{Prj}_{\vec c}(\vec a + \vec b) = |c|\mathrm{Prj}_{\vec c}\vec a + |c|\mathrm{Prj}_{\vec c}\vec b = \vec a\cdot \vec c + \vec b\cdot \vec c\)。即向量点积 具有分配率。
- 点积与 余弦定理 的关系:由向量点积,我们可以推出余弦定理。设 \(\vec c = \vec a - \vec b\),显然 \(\vec a, \vec b,\vec c\) 构成三角形,因此只需证明 \(|\vec c| ^ 2 = |\vec a| ^ 2 + |\vec b| ^ 2 - 2|\vec a||\vec b|\cos \langle \vec a,\vec b\rangle\)。
- 点积的 坐标表示:设 \(\vec a = (x_a, y_a), \vec b = (x_b, y_b)\),则 \(\vec a \cdot \vec b = x_a x_b + y_a y_b\)。这是因为:
接下来介绍点积的一些性质与应用:
- 判断两向量 是否垂直:\(\vec a\perp \vec b \iff \vec a\cdot \vec b = 0\)。
- 判断两向量 是否共线:\(\vec a = \lambda \vec b \iff |\vec a \cdot \vec b| = |\vec a||\vec b|\)。
- 求两向量 夹角:\(\cos\langle \vec a, \vec b\rangle = \dfrac {\vec a \cdot \vec b}{|\vec a||\vec b|}\)。
- 根据点积的计算公式,不难发现 \(\vec a \cdot \vec b\) 的 符号 刻画了 \(\langle \vec a, \vec b\rangle\) 与 \(\dfrac \pi 2\) 的大小关系,在解决计算几何相关问题中非常好用。
1.2. 叉积
向量的 叉积 又称 外积 或 向量积,一般仅定义在 三维向量空间 \(\R ^ 3\) 上,至于其原因超出了讨论范围。\(\vec a\) 与 \(\vec b\) 的叉积记为 \(\vec a\times \vec b\),其模长为:
- 运算类型:注意到上述公式中 \(\vec a\times \vec b\) 两侧有模长符号,这说明向量叉积的结果仍然是 向量,其方向与 \(\vec a, \vec b\) 均垂直,且符合 右手定则:四指指向 \(\vec a\) 的方向,并向 \(\vec b\) 弯曲,此时大拇指的方向即 \(\vec a\times \vec b\) 的方向。
- 几何意义:尽管向量叉积在 \(\R ^ 2\) 上并没有定义,但将二维向量看做第三维为 \(0\) 的三维向量后,我们得以将两个二维向量进行叉积运算。此时,叉积的模等于以 \(\vec a,\vec b\) 为邻边的 平行四边形 的 有符号面积。这可以由三角形面积公式 \(S = \dfrac 1 2 ab\sin C\) 推导得到。
- 反 交换律:因为 \(\sin x = -\sin (-x)\),所以 \(\vec a\times \vec b = -\vec b\times \vec a\)。
关于叉积,有一个需要注意的细节:我们规定叉积的 数值结果 为 \(|\vec a||\vec b|\sin\langle \vec a,\vec b\rangle\),它是 有符号 的,而向量的模长 没有符号,因为一定是正数。因此,大部分博客中所提到的,\(|\vec a\times \vec b|\) 等于该数值结果,以及本博客的上述说法,在考虑正负性的前提下并不严谨。这一数值结果实际上 同时反映了叉积的模长和方向。
在 OI 界,将叉积看做向量并没有帮助,因为任何需要应用叉积的场合,我们都只关心其 有符号 的数值结果而非方向(但数值结果的符号从一定程度上反映了叉积的方向)。因此,下文中我们直接定义 \(\vec a\times \vec b = |\vec a||\vec b|\sin \langle \vec a, \vec b\rangle\),用标量表示向量,符号反映方向。但读者应当知道 这与叉积的真实定义有出入。
接下来介绍叉积的一些性质与应用:
-
叉积的 坐标表示:设 \(\vec a = (x_a, y_a), \vec b = (x_b, y_b)\),则 \(\vec a \times \vec b = x_a y_b - x_b y_a\)。这可以通过行列式证明:我们知道一个二阶方阵的行列式描述了将它看作两个列向量后形成的平行四边形的 有向 面积,而叉积也描述了这样的信息,因此 \(|\vec a||\vec b|\sin \langle\vec a,\vec b\rangle = \mathrm{det}(\vec a, \vec b) = x_a y_b - x_b y_a\)。
-
判断两向量的 方向:\(\vec a\times \vec b\) 的符号反映了 \(\vec b\) 究竟在 \(\vec a\) 的逆时针方向还是顺时针方向,这在计算几何的 凸包 相关问题中相当有用。
如上图,向量的方向从左指向右,则 \(p_1\times p_2, p_2\times p_3, p_3\times p_4\) 均小于 \(0\)。