歡迎來到向量的世界!

在本章中,我們將一起探索向量 (Vectors)。或許你在物理或數學課中聽過向量,但在計算機科學領域中,它是儲存及處理數據的強大工具。無論是在 3D 遊戲中呈現坐標點、處理影像像素,甚至是 Netflix 如何向你推薦電影,向量都在背後發揮著關鍵作用。

如果一開始覺得數學的部分有點深奧,別擔心——我們會透過簡單的類比一步步拆解這些概念!

1. 什麼是向量?

簡單來說,向量就是一組數字列表。在計算機科學中,我們將向量視為一種抽象數據類型 (Abstract Data Type, ADT)。要成為一個標準的向量,其中的所有數字都必須來自同一個「域」(field),例如實數集 (Real Numbers)(符號為 \( \mathbb{R} \))。

向量的表示方式

AQA 課程大綱要求你掌握以下三種主要的向量表示法:

  1. 列表式 (As a List): 簡單的一組數字,例如 \( [2.0, 3.14, -1.0, 2.71] \)。
  2. 數學符號 (Mathematical Notation): 如果一個向量包含 4 個實數,我們稱之為定義在 \( \mathbb{R} \) 上的 4-維向量,記作 \( \mathbb{R}^4 \)。
  3. 函數解釋 (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 度角(垂直)。
- 它有助於電腦理解兩組數據的「對齊」程度。

常見錯誤: 學生常試圖給出一個向量作為點積的答案。請記住:點積的結果永遠是一個單一數字(標量),而不是一個列表!

重點複習表

向量加法: 結果為向量。用於移動(平移)。
標量乘法: 結果為向量。用於調整大小(縮放)。
點積: 結果為數字。用於找出角度。
凸組合: 結果為向量。用於找出兩點之間的位置。

核心要點

向量不僅僅是數字列表;它們是計算機科學中表達空間與關係的語言。只要你能熟練進行加法、標量乘法以及點積運算,你就已經掌握了本章的核心內容!