欢迎来到向量的世界!
在本章中,我们将一起探索向量 (Vectors)。或许你在物理或数学课中听过向量,但在计算机科学领域中,它是存储及处理数据的强大工具。无论是在 3D 游戏中呈现坐标点、处理图像像素,甚至是 Netflix 如何向你推荐电影,向量都在背后发挥着关键作用。
如果一开始觉得数学的部分有点深奥,别担心——我们会通过简单的类比一步步拆解这些概念!
1. 什么是向量?
简单来说,向量就是一组数字列表。在计算机科学中,我们将向量视为一种抽象数据类型 (Abstract Data Type, ADT)。要成为一个标准的向量,其中的所有数字都必须来自同一个“域”(field),例如实数集 (Real Numbers)(符号为 \( \mathbb{R} \))。
向量的表示方式
AQA 课程大纲要求你掌握以下三种主要的向量表示法:
- 列表式 (As a List): 简单的一组数字,例如 \( [2.0, 3.14, -1.0, 2.71] \)。
- 数学符号 (Mathematical Notation): 如果一个向量包含 4 个实数,我们称之为定义在 \( \mathbb{R} \) 上的 4-维向量,记作 \( \mathbb{R}^4 \)。
- 函数解释 (Function Interpretation): 我们可以将向量视为一个将索引 (index) 映射到数值 (value) 的函数。
函数解释示例:
如果我们有一个向量 \( [5.0, 12.0] \):
0 \( \mapsto \) 5.0 (第一个位置映射到 5.0)
1 \( \mapsto \) 12.0 (第二个位置映射到 12.0)
符号 \( \mapsto \) 的意思就是“映射至”。
重点回顾: 向量就是来自同一个数集(如实数集)的数字列表。如果它有 3 个数字,它就是一个 3-维向量。
2. 在代码中呈现向量
根据你使用的编程语言,你可以用不同的方式来表示向量:
列表 (List) 或一维数组 (1-D Array)
这是最常见的方法。在 Python 中,你会使用列表:[2.0, 3.0]。在 VB.Net 中,你可能会声明一个一维数组:Dim example(3) As Single。
字典 (Dictionary)
如果你想使用上述的“函数”概念,字典会非常有用。
Python 示例: {0: 2.0, 1: 3.14, 2: -1.0}
这里,键 (key) 是索引 (0, 1, 2),而值 (value) 则是向量中的实际数字。
你知道吗? 字典非常适合处理“稀疏向量 (sparse vectors)”——即大部分数字都为零的向量。你只需要存储那些实际有数值的位置即可!
3. 可视化向量
对于 A-Level 计算机科学,你需要能够将 2-维向量(如 [2.0, 3.0])想象成图表上的一个箭头。
- 箭头的起点 (tail) 在原点 (0,0)。
- 箭头的顶点 (head) 指向坐标 (x, y)。
类比: 把向量想成海盗藏宝图的指令。“[2, 3]”的意思就是“向东走 2 步,再向北走 3 步”。箭头展示了从起点到终点的直接路径。
4. 向量运算
我们可以对向量进行“运算”来改变它们所代表的含义。你必须掌握以下两种主要运算:
向量加法 (平移)
将两个向量相加,只需将对应位置的数字相加即可。
若 \( u = [1, 5] \) 且 \( v = [2, 1] \),则 \( u + v = [1+2, 5+1] = [3, 6] \)。
核心概念: 在计算机图形学中,向量加法用于平移 (Translation)。这是一个专业术语,意指在不旋转物体的情况下,将它从一个地方移动到另一个地方。
标量-向量乘法 (缩放)
标量 (scalar) 是一个单纯的数字(不是列表)。要将向量乘以标量,只需将列表中的每个数字都乘以该标量。
若 \( k = 2 \) 且 \( v = [3, 4] \),则 \( 2 \times v = [6, 8] \)。
核心概念: 这用于缩放 (Scaling)。它会让“箭头”变长或变短。如果你乘以 2,就是在“放大”或者将移动的幅度增加一倍。
总结: 加法 = 移动。标量乘法 = 改变大小。
5. 向量的凸组合 (Convex Combination)
这听起来很复杂,但基本上它是一种找出位于两个点之间某个位置的方法。
两个向量 \( u \) 和 \( v \) 的凸组合写作:
\( \alpha u + \beta v \)
但有两个严格的规则:
1. \( \alpha \) 和 \( \beta \) 必须大于或等于 0。
2. \( \alpha + \beta \) 必须严格等于 1。
类比: 想象一下调色。如果 \( u \) 是红漆,\( v \) 是蓝漆,凸组合就是你可以通过混合它们所调出的任何颜色(比如紫色)。你不能使用“负数”的油漆,且混合后的总比例必须加起来等于 100%(即 1)。
6. 点积 (标量积)
点积 (Dot Product) 是一种将两个向量相乘并得到一个单一数字作为结果的方法。
如何计算:
将对应的项目相乘,然后将它们全部加起来。
若 \( u = [u_1, u_2] \) 且 \( v = [v_1, v_2] \),则:
\( u \cdot v = (u_1 \times v_1) + (u_2 \times v_2) \)
步骤示例:
求 \( [2, 3] \) 和 \( [4, 5] \) 的点积:
1. 将第一对相乘: \( 2 \times 4 = 8 \)
2. 将第二对相乘: \( 3 \times 5 = 15 \)
3. 将结果相加: \( 8 + 15 = 23 \)
点积结果为 23。
为什么要使用它?
对考试而言,最重要的应用是找出两个向量之间的夹角。
- 如果点积为 0,则两个向量呈 90 度角(垂直)。
- 它有助于电脑理解两组数据的“对齐”程度。
常见错误: 学生常试图给出一个向量作为点积的答案。请记住:点积的结果永远是一个单一数字(标量),而不是一个列表!
重点复习表
向量加法: 结果为向量。用于移动(平移)。
标量乘法: 结果为向量。用于调整大小(缩放)。
点积: 结果为数字。用于找出角度。
凸组合: 结果为向量。用于找出两点之间的位置。
核心要点
向量不仅仅是数字列表;它们是计算机科学中表达空间与关系的语言。只要你能熟练进行加法、标量乘法以及点积运算,你就已经掌握了本章的核心内容!