跳转至

# 向量

在本文之前，特别说明一下翻译的相关问题．由于历史原因，数学学科和物理学科关于「vector」一词的翻译不同．

在物理学科，一般翻译成「矢量」，并且与「标量」一词相对．在数学学科，一般翻译成「向量」．这种翻译的差别还有「本征」与「特征」、「幺正」与「酉」，等等．

在 OI Wiki，主要面向计算机等工程类相关学科，与数学学科关系更近一些，因此采用「向量」这个词汇．

## 定义及相关概念

向量：既有大小又有方向的量称为向量．数学上研究的向量为 自由向量，即只要不改变它的大小和方向，起点和终点可以任意平行移动的向量．记作 ⃗𝑎 a→ 或 𝒂 a．

有向线段：带有方向的线段称为有向线段．有向线段有三要素：起点，方向，长度，知道了三要素，终点就唯一确定．一般使用有向线段表示向量．

向量的模：有向线段 ⟶𝐴 𝐵 A B→ 的长度称为向量的模，即为这个向量的大小．记为：|⟶𝐴 𝐵||A B→| 或 |𝒂||a|．

零向量：模为 0 0 的向量．零向量的方向任意．记为：⃗0 0→ 或 𝟎 0．

单位向量：模为 1 1 的向量称为该方向上的单位向量．一般记为 ⃗𝑒 e→ 或 𝒆 e．

平行向量：方向相同或相反的两个 非零 向量．记作：𝒂 ∥𝒃 a∥b．对于多个互相平行的向量，可以任作一条直线与这些向量平行，那么任一组平行向量都可以平移到同一直线上，所以平行向量又叫 共线向量．

相等向量：模相等且方向相同的向量．

相反向量：模相等且方向相反的向量．

向量的夹角：已知两个非零向量 𝒂,𝒃 a,b，作 ⟶𝑂 𝐴 =𝒂,⟶𝑂 𝐵 =𝒃 O A→=a,O B→=b，那么 𝜃 =∠𝐴 𝑂 𝐵 θ=∠A O B 就是向量 𝒂 a 与向量 𝒃 b 的夹角．记作：⟨𝒂,𝒃⟩⟨a,b⟩．显然当 𝜃 =0 θ=0 时两向量同向，𝜃 =𝜋 θ=π 时两向量反向，𝜃 =𝜋 2 θ=π 2 时两向量垂直，记作 𝒂 ⟂𝒃 a⟂b，并且规定 𝜃 ∈[0,𝜋]θ∈[0,π]．

注意到平面向量具有方向性，两个向量不能比较大小（但可以比较两向量的模长）．但是两个向量可以相等．

## 向量的线性运算

### 向量的加减法

在定义了一种量之后，就希望让它具有运算．向量的运算可以类比数的运算，从物理学的角度出发也可以研究向量的运算．

类比物理学中的位移概念，假如一个人从 𝐴 A 经 𝐵 B 走到 𝐶 C，那么他经过的位移为 ⟶𝐴 𝐵 +⟶𝐵 𝐶 A B→+B C→，这其实等价于这个人直接从 𝐴 A 走到 𝐶 C，即 ⟶𝐴 𝐵 +⟶𝐵 𝐶 =⟶𝐴 𝐶 A B→+B C→=A C→．

注意到力的合成法则——平行四边形法则，同样也可以看做一些向量相加．

整理一下向量的加法法则：

1. 向量加法的三角形法则：若要求和的向量首尾顺次相连，那么这些向量的和为第一个向量的起点指向最后一个向量的终点；
2. 向量加法的平行四边形法则：若要求和的两个向量 共起点，那么它们的和向量为以这两个向量为邻边的平行四边形的对角线，起点为两个向量共有的起点，方向沿平行四边形对角线方向．

这样，向量的加法就具有了几何意义．并且可以验证，向量的加法满足 交换律与结合律．

因为实数的减法可以写成加上相反数的形式，考虑在向量做减法时也这么写．即：𝒂 −𝒃 =𝒂 +( −𝒃)a−b=a+(−b)．

这样，考虑共起点的向量，按照平行四边形法则做出它们的差，经过平移后可以发现 「共起点向量的差向量」是由「减向量」指向「被减向量」的有向线段．这也是向量减法的几何意义．

有时候有两点 𝐴,𝐵 A,B，想知道 ⟶𝐴 𝐵 A B→，可以利用减法运算 ⟶𝐴 𝐵 =⟶𝑂 𝐵 −⟶𝑂 𝐴 A B→=O B→−O A→ 获得．

### 向量的数乘

规定「实数 𝜆 λ 与向量 𝒂 a 的积」为一个向量，这种运算就是向量的 数乘运算，记作 𝜆 𝒂 λ a，它的长度与方向规定如下：

1. |𝜆 𝒂| =|𝜆||𝒂||λ a|=|λ||a|；
2. 当 𝜆 >0 λ>0 时，𝜆 𝒂 λ a 与 𝒂 a 同向，当 𝜆 =0 λ=0 时，𝜆 𝒂 =𝟎 λ a=0，当 𝜆 <0 λ<0 时，𝜆 𝒂 λ a 与 𝒂 a 方向相反．

根据数乘的定义，可以验证有如下运算律：

𝜆(𝜇 𝒂)=(𝜆 𝜇)𝒂(𝜆+𝜇)𝒂=𝜆 𝒂+𝜇 𝒂 𝜆(𝒂+𝒃)=𝜆 𝒂+𝜆 𝒃 λ(μ a)=(λ μ)a(λ+μ)a=λ a+μ a λ(a+b)=λ a+λ b

特别地：

(−𝜆)𝒂=−(𝜆 𝒂)=−𝜆(𝒂)𝜆(𝒂−𝒃)=𝜆 𝒂−𝜆 𝒃(−λ)a=−(λ a)=−λ(a)λ(a−b)=λ a−λ b

### 判定两向量共线

两个 非零 向量 𝒂 a 与 𝒃 b 共线 ⟺ ⟺ 有唯一实数 𝜆 λ，使得 𝒃 =𝜆 𝒂 b=λ a．

证明：由数乘的定义可知，对于 非零 向量 𝒂 a，如果存在实数 𝜆 λ，使得 𝒃 =𝜆 𝒂 b=λ a，那么 𝒂 ∥𝒃 a∥b．

反过来，如果 𝒂 ∥𝒃 a∥b，𝒂 ≠𝟎 a≠0，且 |𝒃| =𝜇|𝒂||b|=μ|a|，那么当 𝒂 a 与 𝒃 b 同向时，𝒃 =𝜇 𝒂 b=μ a，反向时 𝒃 = −𝜇 𝒂 b=−μ a．

最后，向量的加，减，数乘统称为向量的线性运算．

## 平面向量的基本定理及坐标表示

### 平面向量基本定理

定理内容：如果两个向量 𝒆 𝟏,𝒆 𝟐 e 1,e 2 不共线，那么存在唯一实数对 (𝑥,𝑦)(x,y)，使得与 𝒆 𝟏,𝒆 𝟐 e 1,e 2 共面的任意向量 𝒑 p 满足 𝐩 =𝑥 𝒆 𝟏 +𝑦 𝒆 𝟐 p=x e 1+y e 2．

平面向量那么多，怎样用尽可能少的量表示出所有平面向量？

只用一个向量表示出所有向量显然是不可能的，最多只能表示出某条直线上的向量．

再加入一个向量，用两个 不共线 向量表示（两个共线向量在此可以看成同一个向量），这样可以把任意一个平面向量分解到这两个向量的方向上了．

在同一平面内的两个不共线的向量称为 基底．如果基底相互垂直，那么在分解的时候就是对向量 正交分解．

### 平面向量的坐标表示

如果取与横轴与纵轴方向相同的单位向量 𝑖,𝑗 i,j 作为一组基底，根据平面向量基本定理，平面上的所有向量与有序实数对 (𝑥,𝑦)(x,y) 一一对应．

而有序实数对 (𝑥,𝑦)(x,y) 与平面直角坐标系上的点一一对应，于是作 ⟶𝑂 𝑃 =𝒑 O P→=p，那么终点 𝑃(𝑥,𝑦)P(x,y) 也是唯一确定的．由于研究的对象是自由向量，可以自由平移起点，这样，在平面直角坐标系里，每一个向量都可以用有序实数对唯一表示．

## 平面向量的坐标运算

### 平面向量线性运算

由平面向量的线性运算可以推导其坐标运算，主要方法是将坐标全部化为用基底表示，然后利用运算律进行合并，之后表示出运算结果的坐标形式．

若两向量 𝒂 =(𝑚,𝑛)a=(m,n)，𝒃 =(𝑝,𝑞)b=(p,q)，则：

𝒂+𝒃=(𝑚+𝑝,𝑛+𝑞)𝒂−𝒃=(𝑚−𝑝,𝑛−𝑞)𝑘 𝒂=(𝑘 𝑚,𝑘 𝑛)a+b=(m+p,n+q)a−b=(m−p,n−q)k a=(k m,k n)

### 求一个向量的坐标表示

已知两点 𝐴(𝑎,𝑏),𝐵(𝑐,𝑑)A(a,b),B(c,d)，易证 ⟶𝐴 𝐵 =(𝑐 −𝑎,𝑑 −𝑏)A B→=(c−a,d−b)．

### 平移一点

有时需要将一个点 𝑃 P 沿一定方向平移某单位长度，这样把要平移的方向和距离组合成一个向量，利用向量加法的三角形法则，将 ⟶𝑂 𝑃 O P→ 加上这个向量，得到的向量终点即为平移后的点．

### 三点共线的判定

若 𝐴,𝐵,𝐶 A,B,C 三点共线，则 ⟶𝑂 𝐵 =𝜆⟶𝑂 𝐴 +(1 −𝜆)⟶𝑂 𝐶 O B→=λ O A→+(1−λ)O C→．

### 三点共线判定的拓展

在三角形 𝐴 𝐵 𝐶 A B C 中，若 𝐷 D 为 𝐵 𝐶 B C 的 𝑛 n 等分点（𝑛 𝐵 𝐷 =𝑘 𝐷 𝐶 n B D=k D C），则有：⟶𝐴 𝐷 =𝑛 𝑘+𝑛⟶𝐴 𝐵 +𝑘 𝑘+𝑛⟶𝐴 𝐶 A D→=n k+n A B→+k k+n A C→

## 在三维空间中的拓展（立体几何/空间向量）

在空间中，以上部分所述的所有内容均成立．更有：

### 空间向量基本定理

定理内容：如果三个向量 𝒆 𝟏,𝒆 𝟐,𝒆 𝟑 e 1,e 2,e 3 不共面，那么存在唯一实数对 (𝑥,𝑦,𝑧)(x,y,z)，使得空间中任意向量 𝒑 p 满足 𝐩 =𝑥 𝒆 𝟏 +𝑦 𝒆 𝟐 +𝑧 𝒆 𝟑 p=x e 1+y e 2+z e 3． 根据空间向量基本定理，我们同样可以使用三个相互垂直的基底 𝒆 𝟏,𝒆 𝟐,𝒆 𝟑 e 1,e 2,e 3 作为正交基底，建立 空间直角坐标系 并用一个三元组 (𝑥,𝑦,𝑧)(x,y,z) 作为坐标表示空间向量．

### 共面向量基本定理

如果存在两个不共线的向量 𝒙,𝒚 x,y, 则向量 𝒑 p 与 𝒙,𝒚 x,y 共面的充要条件是存在唯一实数对 (𝑎,𝑏)(a,b) 使得 𝒑 =𝑎 𝒙 +𝑏 𝒚 p=a x+b y．

### 方向向量

空间直线的方向用一个与该直线平行的非零向量来表示，该向量称为这条直线的一个方向向量．直线在空间中的位置，由它经过的空间一点及它的一个方向向量 完全确定．

注意，平面中的直线也有方向向量．

对于 空间 中的直线，对其方向向量有以下求法：

- 若有 𝐴(𝑥 1,𝑦 1,𝑧 1),𝐵(𝑥 2,𝑦 2,𝑧 2)A(x 1,y 1,z 1),B(x 2,y 2,z 2)，则 𝐴 𝐵 A B 所在直线的一个方向向量为 𝒔 =(𝑥 2 −𝑥 1,𝑦 2 −𝑦 1,𝑧 2 −𝑧 1)s=(x 2−x 1,y 2−y 1,z 2−z 1)．

- 若已知一个与所求直线 垂直 的平面，该平面一般方程为 𝑎 𝑥 +𝑏 𝑦 +𝑐 𝑧 +𝑑 =0 a x+b y+c z+d=0，那么垂直于该平面的直线的一个方向向量为 𝒔 =(𝑎,𝑏,𝑐)s=(a,b,c)，该方向向量也是该平面的 一个法向量．

### 法向量

对于一个面 𝐴 𝐵 𝐶 𝐷 A B C D，其法向量 𝒏 n 与这个面垂直．

计算方法：任取两个面内直线 ⟶𝐴 𝐵,⟶𝐴 𝐷 A B→,A D→，使得 ⟶𝐴 𝐵 ⋅𝒏 =𝟎 A B→⋅n=0 且 ⟶𝐴 𝐷 ⋅𝒏 =𝟎 A D→⋅n=0，利用坐标法即可计算．

## 向量与矩阵

线性代数中，线性变换可以用矩阵表示．令 𝑇 T 表示一个将 𝐑 𝑛 R n 映射到 𝐑 𝑚 R m 的线性变换，𝐱 x 表示一个 𝑛 n 维列向量，则存在一个 𝑚 ×𝑛 m×n 矩阵 𝐴 A，使得

𝑇(𝐱)=𝐴 𝐱.T(x)=A x.

矩阵 𝐴 A 称为线性变换 𝑇 T 的变换矩阵．在算法问题中，一般情况下线性变换在相同维度下进行，因此 𝐴 A 是一个方阵．这样，对向量的线性变换问题可以转化为矩阵乘法问题．

接下来我们探讨三种竞赛中较为常见的变换与其对应的变换矩阵：放缩变换（变换矩阵用 𝑆 S 表示）、旋转变换（变换矩阵用 𝑅 R 表示）和平移变换（变换矩阵用 𝑇 T 表示）．

### 放缩变换

对于 𝑛 n 维列向量 𝒂 a，将其每一维放缩 𝑣 1,𝑣 2,…,𝑣 𝑛 v 1,v 2,…,v n 倍．很容易发现放缩操作的变换矩阵 𝑅 R 是 𝑛 ×𝑛 n×n 的对角矩阵，即 𝑆 =d i a g⁡{𝑣 1,𝑣 2,…,𝑣 𝑛}S=diag⁡{v 1,v 2,…,v n}．

### 旋转变换

向量的旋转是相对复杂的操作，我们仅限于讨论二维和三维的情况．

#### 向量绕点旋转

对于向量绕点旋转，一般指的是向量绕原点旋转．对于某一点绕另一点 𝑃 P 旋转，可以利用平移变换使得点 𝑃 P 位于原点，进行向量旋转后再将坐标系平移回原位置即可．设平移操作的变换矩阵为 𝑇 T，绕原点旋转操作的变换矩阵为 𝑅 R，则整个过程的变换矩阵为 𝑇 𝑅 𝑇−1 T R T−1．根据几何意义，𝑇−1 T−1 一定存在．

对于二维空间，设 𝒂 =(𝑥,𝑦)a=(x,y)，倾角为 𝜃 θ，长度为 𝑙 =√𝑥 2+𝑦 2 l=x 2+y 2．则 𝑥 =𝑙 c o s⁡𝜃,𝑦 =𝑙 s i n⁡𝜃 x=l cos⁡θ,y=l sin⁡θ．令其绕原点逆时针旋转 𝛼 α 角，得到向量 𝒃 =(𝑙 c o s⁡(𝜃+𝛼),𝑙 s i n⁡(𝜃+𝛼))b=(l cos⁡(θ+α),l sin⁡(θ+α))．

由三角恒等变换得，

𝒃=(𝑙(c o s⁡𝜃 c o s⁡𝛼−s i n⁡𝜃 s i n⁡𝛼),𝑙(s i n⁡𝜃 c o s⁡𝛼+c o s⁡𝜃 s i n⁡𝛼))b=(l(cos⁡θ cos⁡α−sin⁡θ sin⁡α),l(sin⁡θ cos⁡α+cos⁡θ sin⁡α))

化简，

𝒃=(𝑙 c o s⁡𝜃 c o s⁡𝛼−𝑙 s i n⁡𝜃 s i n⁡𝛼,𝑙 s i n⁡𝜃 c o s⁡𝛼+𝑙 c o s⁡𝜃 s i n⁡𝛼)b=(l cos⁡θ cos⁡α−l sin⁡θ sin⁡α,l sin⁡θ cos⁡α+l cos⁡θ sin⁡α)

把上面的 𝑥,𝑦 x,y 代回来得

𝒃=(𝑥 c o s⁡𝛼−𝑦 s i n⁡𝛼,𝑦 c o s⁡𝛼+𝑥 s i n⁡𝛼)b=(x cos⁡α−y sin⁡α,y cos⁡α+x sin⁡α)

因此二维空间下，变换矩阵 𝑅 R 为

𝑅=[c o s⁡𝛼−s i n⁡𝛼 s i n⁡𝛼 c o s⁡𝛼].R=[cos⁡α−sin⁡α sin⁡α cos⁡α].

对于三维空间，向量旋转需要使用两个角度参量，即天顶角旋转角度与方向角旋转角度，可以利用 空间球坐标系 进行旋转操作．

#### 向量绕直线旋转

对于三维向量，更常见的的是绕某直线旋转．同样为了方便，此直线是过原点的．如果直线不过原点，我们仍可以平移坐标系进行转化．

取直线的方向向量 𝒖 =(𝑢 𝑥,𝑢 𝑦,𝑢 𝑧)u=(u x,u y,u z)，设三维向量绕其逆时针旋转 𝜃 θ 角．则对应的变换矩阵 𝑅 R 为1

𝑅=⎡⎢ ⎢ ⎢⎣𝑢 2 𝑥(1−c o s⁡𝜃)+c o s⁡𝜃 𝑢 𝑥 𝑢 𝑦(1−c o s⁡𝜃)−𝑢 𝑧 s i n⁡𝜃 𝑢 𝑥 𝑢 𝑧(1−c o s⁡𝜃)+𝑢 𝑦 s i n⁡𝜃 𝑢 𝑥 𝑢 𝑦(1−c o s⁡𝜃)+𝑢 𝑧 s i n⁡𝜃 𝑢 2 𝑦(1−c o s⁡𝜃)+c o s⁡𝜃 𝑢 𝑦 𝑢 𝑧(1−c o s⁡𝜃)−𝑢 𝑥 s i n⁡𝜃 𝑢 𝑥 𝑢 𝑧(1−c o s⁡𝜃)−𝑢 𝑦 s i n⁡𝜃 𝑢 𝑦 𝑢 𝑧(1−c o s⁡𝜃)+𝑢 𝑥 s i n⁡𝜃 𝑢 2 𝑧(1−c o s⁡𝜃)+c o s⁡𝜃⎤⎥ ⎥ ⎥⎦.R=[u x 2(1−cos⁡θ)+cos⁡θ u x u y(1−cos⁡θ)−u z sin⁡θ u x u z(1−cos⁡θ)+u y sin⁡θ u x u y(1−cos⁡θ)+u z sin⁡θ u y 2(1−cos⁡θ)+cos⁡θ u y u z(1−cos⁡θ)−u x sin⁡θ u x u z(1−cos⁡θ)−u y sin⁡θ u y u z(1−cos⁡θ)+u x sin⁡θ u z 2(1−cos⁡θ)+cos⁡θ].

### 平移变换

平移变换并非线性变换，而是仿射变换．但 𝐑 𝑛 R n 下的仿射变换仍可以用 𝐑 𝑛+1 R n+1 下的线性变换表示．

考虑 𝑛 n 维向量 𝒂 =(𝑎 1,𝑎 2,…,𝑎 𝑛)a=(a 1,a 2,…,a n)，现在要将其沿向量 𝒕 =(𝑡 1,𝑡 2,…,𝑡 𝑛)t=(t 1,t 2,…,t n) 平移．我们对列向量 𝒂 a 添加一维并置为 1 1，得到新列向量 𝒂′ =(𝑎 1,𝑎 2,…,𝑎 𝑛,1)a′=(a 1,a 2,…,a n,1)．则变换矩阵 𝑇 T 可以写作

𝑇=⎡⎢ ⎢ ⎢ ⎢ ⎢⎣1 𝑡 1 1 𝑡 2⋱⋮1 𝑡 𝑛 1⎤⎥ ⎥ ⎥ ⎥ ⎥⎦.T=[1 t 1 1 t 2⋱⋮1 t n 1].

对于其他线性变换矩阵，在矩阵中增加一列与一行，除右下角的元素为 1 1 外其它部分填充为 0 0，通过这种方法，所有的线性变换矩阵都可以转换为仿射变换矩阵．例如，对于二维向量旋转，变换矩阵可以变为

𝑅′=⎡⎢ ⎢⎣c o s⁡𝛼−s i n⁡𝛼 0 s i n⁡𝛼 c o s⁡𝛼 0 0 0 1⎤⎥ ⎥⎦.R′=[cos⁡α−sin⁡α 0 sin⁡α cos⁡α 0 0 0 1].

## 向量的更严格定义

上文中，向量被定义为了空间中的有向线段．但是严格来说，向量不仅是有向线段．要作出向量的更严格定义，需要先定义 线性空间，具体内容参见 线性空间 页面的介绍．

1. 参见 Rotation matrix from axis and angle - Wikipedia ↩

> 本页面最近更新：2026/1/7 08:56:54，更新历史
> 发现错误？想一起完善？ 在 GitHub 上编辑此页！
> 本页面贡献者：Ir1d, Tiphereth-A, Enter-tainer, HeRaNO, Xeonacid, Great-designer, MegaOwIer, ouuan, aofall, CCXXXI, chenmingwangOI, ChungZH, CoelacanthusHex, Early0v0, iamtwz, Marcythm, mgt, Ohnmaches, Persdre, shuzhouliu, StudyingFather, wjy-yy, yusancky, 2008verser, 66Leo66, abc1763613206, aberter0x3f, Ayx03, Backl1ght, chieh2lu2, Chrogeek, codewasp942, CSPNOIP, DawnMagnet, dong628, EarthMessenger, Enonya, F1shAndCat, future-re, fyulingi, greyqz, HeliumOI, henrytbtrue, hly1204, Junyan721113, kenlig, krn1pnc, ksyx, lrherqwq, LTHAndy, lychees, Menci, minghu6, Nanarikom, opsiff, panjd123, Pinghigh, Planet6174, Polaris3003, purple-vine, qiqistyle, ree-chee, RuiYu2021, SaisycJiang, Sheng-Horizon, tsawke, TSStudio, WAAutoMaton, WillHouMoe, YanWQ-monad
> 本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供，附加条款亦可能应用