CONCEPT / linear-algebra

向量:从箭头到高维空间

从位移箭头、坐标与线性组合出发,理解向量如何成为描述方向、状态和高维数据的统一语言。

尚未开始仅保存在此浏览器

本页目标

  1. 区分几何向量、坐标表示与抽象向量本身。
  2. 计算向量的线性组合、长度、内积和投影。
  3. 解释高维向量为何不依赖可视化仍然有明确含义。
本页目录

学习目标

学习完成后,应能把“箭头”“一列数”和“空间中的元素”看作同一个数学对象的不同表示,并能用长度、内积与线性组合回答可复算的问题。

先修知识与记号

本章只要求熟悉实数加减乘除、平方根和直角坐标系。粗体小写字母表示向量,普通字母表示标量;上标 T\mathsf T 表示把横向书写的坐标改成列向量。零向量记为 0\mathbf0,它的每个分量都为零。除非另行说明,长度和夹角都采用标准欧氏内积。

坐标必须附着在一组有序基上才有意义。写出 x=(2,1)T\mathbf x=(2,-1)^\mathsf T 时,默认使用平面的标准基;若改用另一组基,同一个向量的坐标会改变。后文会始终区分“向量本身”“所选基”和“该基下的坐标列”。

为什么需要向量

一个温度可以用一个数表示,但风同时有大小和方向;一张灰度图像可以展开成许多像素值;一个模型也可能由数百万个参数共同决定。它们的物理含义不同,却都需要同时处理一组有顺序的量。向量提供了这种共同语言。

箭头是很好的入口,却不是定义的全部。箭头适合二维和三维几何;当维数变成 784、4096 或更高时,我们仍能做相同的加法、缩放和内积,只是不再试图把每个坐标画出来。

直觉:允许平移的箭头

在平面中,向量可以想成一支有方向、有长度的箭头。只要方向与长度不变,箭头从哪里画起并不影响它代表的向量。把箭头首尾相接,就得到向量加法;把长度乘以一个实数,就得到标量乘法。

这个直觉有明确边界:并非所有向量都是物理位移,坐标也不是向量本身。选择另一组基后,同一个向量会有不同坐标,但它与其他向量之间的线性关系不变。

定义与坐标

先研究实数空间 Rn\mathbb{R}^n。其中一个向量写作

x=(x1,x2,,xn)T.\mathbf{x}=(x_1,x_2,\ldots,x_n)^\mathsf{T}.

两个向量逐分量相加,标量 aa 逐分量相乘:

x+y=(x1+y1,,xn+yn)T,ax=(ax1,,axn)T.\mathbf{x}+\mathbf{y} =(x_1+y_1,\ldots,x_n+y_n)^\mathsf{T}, \qquad a\mathbf{x}=(ax_1,\ldots,ax_n)^\mathsf{T}.

更一般地,向量空间是一个配备加法和标量乘法的集合,并满足封闭性、结合律、交换律、零元、逆元及分配律等公理。函数、矩阵和多项式也能组成向量空间,因此“向量必须是一列数”同样只是有限维坐标表示下的说法。

定义

向量 v1,,vk\mathbf{v}_1,\ldots,\mathbf{v}_k 的线性组合是 α1v1++αkvk\alpha_1\mathbf{v}_1+\cdots+\alpha_k\mathbf{v}_k,其中系数 αi\alpha_i 是标量。所有线性组合构成这些向量的张成空间。

线性组合回答的是“给定方向能否合成目标”。若存在系数使 x=α1v1++αkvk\mathbf x=\alpha_1\mathbf v_1+\cdots+\alpha_k\mathbf v_k,则称 x\mathbf x 位于这些向量的张成空间中。系数是否唯一取决于生成向量是否线性无关。若存在不全为零的系数使

α1v1++αkvk=0,\alpha_1\mathbf v_1+\cdots+\alpha_k\mathbf v_k=\mathbf0,

这组向量线性相关;否则线性无关。一组既能张成整个空间又线性无关的向量称为基。基为同一空间选择一套不冗余的坐标语言,并未增加空间中的向量。

示例一:判断张成关系

判断目标是否位于张成空间

v1=(1,1,0)T\mathbf v_1=(1,1,0)^\mathsf Tv2=(0,1,1)T\mathbf v_2=(0,1,1)^\mathsf T,判断 x=(2,3,1)T\mathbf x=(2,3,1)^\mathsf T 是否能由它们线性组合得到。令

av1+bv2=(a,a+b,b)T=(2,3,1)T.a\mathbf v_1+b\mathbf v_2=(a,a+b,b)^\mathsf T=(2,3,1)^\mathsf T.

第一、三分量给出 a=2,b=1a=2,b=1,代入第二分量得到 a+b=3a+b=3,条件一致。因此 x=2v1+v2\mathbf x=2\mathbf v_1+\mathbf v_2。若目标改为 (2,4,1)T(2,4,1)^\mathsf T,前后两分量仍迫使 a=2,b=1a=2,b=1,但中间分量只能等于 33,所以新目标不在该张成平面内。

基变换为何不改变向量

设二维空间的一组基为 B=(b1,b2)B=(\mathbf b_1,\mathbf b_2),向量在此基下的坐标是 [x]B=(c1,c2)T[\mathbf x]_B=(c_1,c_2)^\mathsf T。按坐标定义,

x=c1b1+c2b2.\mathbf x=c_1\mathbf b_1+c_2\mathbf b_2.

把两支基向量作为矩阵列组成 PB=[b1 b2]P_B=[\mathbf b_1\ \mathbf b_2],则标准坐标满足 [x]std=PB[x]B[\mathbf x]_{\mathrm{std}}=P_B[\mathbf x]_B。若两支基线性无关, PBP_B 可逆,于是

[x]B=PB1[x]std.[\mathbf x]_B=P_B^{-1}[\mathbf x]_{\mathrm{std}}.

这里变化的是描述用的数字,而不是空间中的对象。向量相等、线性组合关系和线性无关性都不因换基改变;长度与夹角则还要说明内积如何随坐标表示转换,不能只比较两列坐标的普通点积。

换基时可以做一个对象—坐标检查:先把新坐标按新基还原为空间中的向量,再把该向量按旧基展开。若两次还原得到的对象不同,错误通常来自把基矩阵方向写反,或把基向量误放成了行。这个检查比死记公式更可靠,因为它直接回到坐标定义。还应注意,坐标分量可以随基的缩放而变大或变小,不能据此断言向量本身变长;长度必须由空间选定的内积计算。对于非正交基,坐标平方和一般不等于向量长度平方。

长度、内积与投影

欧氏内积定义为

x,y=xTy=i=1nxiyi.\langle\mathbf{x},\mathbf{y}\rangle =\mathbf{x}^{\mathsf T}\mathbf{y} =\sum_{i=1}^{n}x_i y_i.

它同时编码长度和夹角。欧氏长度为

x2=x,x,\lVert\mathbf{x}\rVert_2=\sqrt{\langle\mathbf{x},\mathbf{x}\rangle},

非零向量之间的夹角满足

cosθ=x,yx2y2.\cos\theta= \frac{\langle\mathbf{x},\mathbf{y}\rangle} {\lVert\mathbf{x}\rVert_2\lVert\mathbf{y}\rVert_2}.

u0\mathbf{u}\neq\mathbf{0},把 x\mathbf{x} 投影到 u\mathbf{u} 所在直线,结果是

projux=x,uu,uu.\operatorname{proj}_{\mathbf{u}}\mathbf{x} =\frac{\langle\mathbf{x},\mathbf{u}\rangle} {\langle\mathbf{u},\mathbf{u}\rangle}\mathbf{u}.

这个公式来自一个正交条件。设投影为 aua\mathbf{u},要求残差 xau\mathbf{x}-a\mathbf{u}u\mathbf{u} 垂直,则 xau,u=0\langle\mathbf{x}-a\mathbf{u},\mathbf{u}\rangle=0,解得上式中的 aa。这是一段代数推导,不依赖“看起来垂直”的图形判断。

示例二:正交分解

分解一个平面向量

x=(3,4)T,u=(1,1)T.\mathbf{x}=(3,4)^\mathsf{T}, \qquad \mathbf{u}=(1,1)^\mathsf{T}.

x2=5\lVert\mathbf{x}\rVert_2=5,且

projux=3+41+1(1,1)T=(3.5,3.5)T.\operatorname{proj}_{\mathbf{u}}\mathbf{x} =\frac{3+4}{1+1}(1,1)^\mathsf{T} =(3.5,3.5)^\mathsf{T}.

残差为 (0.5,0.5)T(-0.5,0.5)^\mathsf{T}。它与 u\mathbf{u} 的内积为零,因此分解确实满足正交条件。注意投影长度可以大于某个单独坐标,这并不矛盾;坐标分量不是向量的整体长度。

柯西—施瓦茨不等式与夹角公式

夹角公式需要保证右侧落在 [1,1][-1,1]。这由柯西—施瓦茨不等式

x,yx2y2|\langle\mathbf x,\mathbf y\rangle| \le \lVert\mathbf x\rVert_2\lVert\mathbf y\rVert_2

保证。给出一个直接证明:若 y0\mathbf y\neq\mathbf0,对任意实数 tt 都有

0xty22=x222tx,y+t2y22.0\le\lVert\mathbf x-t\mathbf y\rVert_2^2 =\lVert\mathbf x\rVert_2^2 -2t\langle\mathbf x,\mathbf y\rangle +t^2\lVert\mathbf y\rVert_2^2.

取使右侧二次式最小的 t=x,y/y22t=\langle\mathbf x,\mathbf y\rangle/\lVert\mathbf y\rVert_2^2,整理后便得到不等式。等号成立当且仅当残差为零,即两向量线性相关。这个结论把代数上的线性相关与几何上的同向或反向连接起来。

用内积比较两个特征向量

p=(1,2,2)T\mathbf p=(1,2,2)^\mathsf Tq=(2,1,2)T\mathbf q=(2,1,2)^\mathsf T。两者长度都为 33,内积为 88,因此夹角余弦为 8/98/9。若只比较坐标和,会得到二者都等于 55,却无法区分方向相似度;归一化内积消除了整体尺度。若各分量具有不同物理单位或方差,则应先建立合适的缩放或内积,不能机械地把 8/98/9 解释为语义相似度。

常见误区

常见误区

“向量就是从原点出发的箭头。”从原点画箭头只是标准坐标下的方便表示。自由向量允许平移;位置向量则额外选择了原点。两者不应混为一谈。

常见误区

“维数越高,向量就越难定义。”高维主要让直接绘图失效,并不改变代数规则。真正需要警惕的是量纲、尺度和内积选择:把摄氏温度、米和无量纲概率直接放入同一欧氏距离,往往没有合理含义。

代码:可复算的基本运算

下面的 TypeScript 只实现有限维欧氏向量运算。它会显式检查维数,避免静默截断。

function assertSameLength(a: readonly number[], b: readonly number[]): void {
  if (a.length !== b.length) {
    throw new Error("Vector dimensions must match.");
  }
}

export function dot(a: readonly number[], b: readonly number[]): number {
  assertSameLength(a, b);
  return a.reduce((sum, value, index) => sum + value * b[index], 0);
}

export function norm(a: readonly number[]): number {
  return Math.sqrt(dot(a, a));
}

export function project(vector: readonly number[], direction: readonly number[]): number[] {
  const denominator = dot(direction, direction);
  if (denominator === 0) {
    throw new Error("Cannot project onto the zero vector.");
  }
  const scale = dot(vector, direction) / denominator;
  return direction.map((value) => scale * value);
}

代码中的严格相等判断只用于拒绝零向量;在带测量误差或数值迭代的程序中,应根据问题尺度选取容差。

参数实验

不用画图也可以做一个小实验。固定 u=(1,1)T\mathbf{u}=(1,1)^\mathsf{T},依次令 x=(1,0)T\mathbf{x}=(1,0)^\mathsf{T}(0,1)T(0,1)^\mathsf{T}(1,1)T(1,-1)^\mathsf{T}

  1. 计算三次内积与投影。
  2. 比较 x\mathbf{x} 平行、部分对齐和正交时投影的变化。
  3. u\mathbf{u} 换成 2u2\mathbf{u},验证投影结果不变。

第三步说明投影依赖的是方向张成的直线,而不是方向向量采用了多长的坐标表示。

练习

练习

概念检查:同一个几何向量在两组不同基下的坐标不同。哪些量一定不变?请区分“无需额外结构就不变”和“在保持同一内积时才不变”。

查看解答

向量之间的线性依赖关系不依赖坐标。长度、夹角与正交性还依赖所选内积;若换基只是同一内积下的坐标变换,这些量不变,若连度量也改变则未必不变。

练习

计算:设 a=(1,2,1)T\mathbf{a}=(1,2,-1)^\mathsf{T}b=(2,0,2)T\mathbf{b}=(2,0,2)^\mathsf{T}。计算内积、两者长度和夹角的余弦。

查看解答

aTb=0\mathbf{a}^{\mathsf T}\mathbf{b}=0a2=6\lVert\mathbf{a}\rVert_2=\sqrt6b2=22\lVert\mathbf{b}\rVert_2=2\sqrt2,所以夹角余弦为 00,两向量正交。

练习

迁移应用:一张 28×2828\times28 灰度图展平为 784 维向量。解释为什么两个图像的欧氏距离可计算,却不一定等同于人的视觉相似度。

查看解答

欧氏距离只比较对应像素的数值差。轻微平移可能让许多像素同时变化,距离很大,但人仍认为图像相似;反之,某些语义差异可能只改变少数像素。距离可算不代表它就是任务需要的度量。

与其他知识的关系

资源

lecture · 2011

MIT 18.06SC Linear Algebra

Gilbert Strang

提供线性代数核心概念的完整课程顺序、例题、习题和考试材料。

打开官方来源

MIT OpenCourseWare 18.06SC 系统覆盖向量、子空间、基、正交性和线性映射,可用于继续练习本章的线性组合与投影计算。

lecture · 2010

MIT 18.02SC Multivariable Calculus

Denis Auroux

把线性代数对象用于几何与多变量问题,并提供例题、习题和解答。

打开官方来源

MIT OpenCourseWare 18.02SC 在空间向量、点积、直线与平面以及多变量几何中使用同一套向量语言,适合核对向量运算在微积分中的具体应用。它不是抽象向量空间理论的替代材料。

后续学习

下一步阅读 线性变换,观察矩阵如何作用于整片空间;随后阅读 梯度,把向量语言用于描述多变量函数的局部变化。

作者one-forth-core
最近修订2026-07-11
审阅状态待独立人工审阅