4.2 基底與維度:座標的真相#
本節目標#
- 理解 基底 = 最小生成集 = 一套座標系 這三重身分
- 換基底:同一個向量在不同基下的座標,實作 \([\mathbf{v}]_B = P^{-1}\mathbf{v}\)
- 畫圖看不同基底下的座標網格
- 體會 維度 = 基的大小,比較標準基與斜基
- 實驗:畫出旋轉 45° 的基底與其座標網格
基底的三重身分#
第 4.1 節我們學會判斷向量們是否「撐得起空間」。現在把條件收緊:
一組向量是子空間的 基底(basis),如果它同時滿足: 1. 張成:它們的 span 覆蓋整個子空間(夠用) 2. 線性獨立:沒有一個是多餘的(不浪費)
這兩個條件讓基底成為 最小生成集 —— 拿掉任何一個就撐不住、多加任何一個就相依。 但基底最實用的身分是第三個:一套座標系。
以標準基 \(\mathbf{e}_1 = (1,0)\) 、 \(\mathbf{e}_2 = (0,1)\) 為例,向量 \(\mathbf{v} = (3, 2)\) 其實是在說:
「座標 3 和 2」的意思是「沿第一個基方向走 3 步、沿第二個基方向走 2 步」。 換了基底,同一支箭頭不變,但「怎麼走過去」的說明書(座標)改變了。
換基底: \([\mathbf{v}]_B = P^{-1}\mathbf{v}\)#
設新基底為 \(B = \{\mathbf{b}_1, \mathbf{b}_2\}\) ,把基向量排成矩陣 \(P = [\mathbf{b}_1 \; \mathbf{b}_2]\) (每個基向量一行)。 若向量 \(\mathbf{v}\) 在標準座標下已知,求它在基 \(B\) 下的座標 \([\mathbf{v}]_B = (c_1, c_2)\) :
幾何直覺: \(P\) 是「把 \(B\) 座標翻譯成標準座標」的變換,所以反方向翻譯就用 \(P^{-1}\) 。
import numpy as np
import matplotlib.pyplot as plt
from linalg_viz import plot_vectors
v = np.array([3.0, 2.0]) # 標準座標下的同一支箭頭
# 新基底 B:b1 = (2,1), b2 = (-1,1)
P = np.array([[2.0, -1.0],
[1.0, 1.0]]) # 每行一個基向量
v_B = np.linalg.solve(P, v) # 解 P c = v,即 P^{-1} v
print("在基 B 下的座標:", v_B) # 例如 [1.667 0.333]
# 驗證:用 B 座標重建同一支箭頭
reconstructed = P @ v_B
print("重建結果:", reconstructed, " 與原向量相同:", np.allclose(reconstructed, v))
注意我們用 np.linalg.solve(P, v) 而不是明確計算 np.linalg.inv(P) @ v —— 這是數值計算的好習慣:解方程組比先求反矩陣更快更穩(第 9 章會回來談這點)。
畫圖:不同基底下的座標網格#
標準基的座標網格是正方形網格;換成斜基後,「等座標線」變成沿著基向量方向的平行線族。 同一張紙上的點沒有動,動的是你鋪在上面的格線。
def draw_basis_grid(P, lim=5):
"""畫出以 P 的行向量為基的座標網格。"""
b1, b2 = P[:, 0], P[:, 1]
for c in np.arange(-lim, lim + 1):
# c1 = c 的直線:點 = c*b1 + t*b2
line = np.outer(np.linspace(-lim, lim, 2), b2) + c * b1
plt.plot(line[:, 0], line[:, 1], color="steelblue", alpha=0.5, lw=0.8)
# c2 = c 的直線
line = np.outer(np.linspace(-lim, lim, 2), b1) + c * b2
plt.plot(line[:, 0], line[:, 1], color="salmon", alpha=0.5, lw=0.8)
plot_vectors([b1, b2], color=["blue", "red"])
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
draw_basis_grid(np.eye(2))
plt.gca().set_aspect("equal"); plt.title("標準基:正方形網格")
plt.subplot(1, 2, 2)
draw_basis_grid(P)
plt.gca().set_aspect("equal"); plt.title("斜基 B=(2,1),(-1,1):平行四邊形網格")
plt.show()
# 在右圖標出 v 的位置:它在斜基座標下是 (1.667, 0.333),
# 也就是「沿 b1 走 1.667 格、沿 b2 走 0.333 格」後到達的同一個點。
兩張圖裡,向量 \(\mathbf{v} = (3,2)\) 這支箭頭本身一模一樣,但在左圖它的地址是 \((3, 2)\) , 在右圖的斜格線下,地址變成了 \((1.667, 0.333)\) 。
維度:基的大小#
一個子空間可以有無限多組基底(同一空間可以鋪不同的格線),但有一個數字是不變的:
定理:同一個子空間的任何兩組基底,大小必定相同。 這個共同的大小就是子空間的 維度(dimension)。
這解釋了我們一直自然使用的「 \(\mathbb{R}^2\) 是二維、 \(\mathbb{R}^3\) 是三維」: 標準基 \(\{\mathbf{e}_1, \mathbf{e}_2\}\) 有 2 個、 \(\{\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3\}\) 有 3 個, 而 4.1 節的秩正好就是「行空間的基底大小」。
| 概念 | 4.1 節的語言 | 本節的語言 |
|---|---|---|
| 秩 \(r\) | span 的維度 | 行空間基底的大小 |
| 撐起空間的最少向量 | 可達區域的「最小描述」 | 一組基底 |
標準基 vs 斜基:標準基 \(\{\mathbf{e}_i\}\) 計算最方便(座標就是分量本身), 但斜基往往更「貼合問題」—— 之後會看到:特徵向量是一組讓矩陣變換變得超簡單的基底(第 5 章), 正交基底讓投影計算變簡單(第 6 章)。
實驗:旋轉 45° 的基底座標網格#
取標準基整組旋轉 45°,得到一組「只是轉了方向」的新基底。 用 2.3 節的旋轉矩陣:
theta = np.pi / 4 # 45 度
R = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
B = R @ np.eye(2) # 旋轉後的基:仍是正交單位基,只是轉向
print("新基底:\n", B)
v = np.array([3.0, 2.0])
v_B = np.linalg.solve(B, v)
print(f"v 在旋轉基下的座標: ({v_B[0]:.3f}, {v_B[1]:.3f})")
plt.figure(figsize=(6, 6))
draw_basis_grid(B)
plt.quiver(0, 0, *v, color="green", angles="xy", scale_units="xy", scale=1,
width=0.008, label="v(箭頭不變)")
plt.legend(); plt.gca().set_aspect("equal")
plt.title("旋轉 45° 的基底與座標網格")
plt.show()
有趣的觀察:旋轉基是 正交基(兩支基箭頭互相垂直、長度都是 1), 它的網格雖然斜了 45°,但仍是 正方形網格 —— 只是整組轉向。 把向量 \((3, 2)\) 的座標算出來,你會發現 \([\mathbf{v}]_B\) 正好是 \((\frac{5}{\sqrt{2}}, -\frac{1}{\sqrt{2}})\) , 而 \((\frac{5}{\sqrt{2}})^2 + (-\frac{1}{\sqrt{2}})^2 = 13 = 3^2 + 2^2\) 。 正交基不會扭曲長度 —— 這是第 6 章鍾愛正交基的第一個伏筆。
小結與練習#
本節重點 1. 基底 = 張成 + 線性獨立 = 最小生成集 = 一套座標系。 2. 換基底座標: \([\mathbf{v}]_B = P^{-1}\mathbf{v}\) ,其中 \(P\) 的行是基向量;程式上用 np.linalg.solve(P, v)。 3. 換基底不動箭頭,只動格線;維度 = 基的大小 = 不變的內在性質。 4. 正交基(如旋轉基)保持長度,是後續章節的重要工具。
練習 1. 用基 \(B = \{(1,1), (1,-1)\}\) 求 \(\mathbf{v} = (4, 2)\) 的座標,並畫圖驗證。 2. 把 draw_basis_grid 的 \(P\) 換成剪切基 \(\begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix}\) ,觀察網格如何傾斜。 3. 驗證旋轉矩陣滿足 \(R^{-1} = R^T\) (用 np.allclose),並思考這對「旋轉基下座標」的計算意味著什麼。 4. (思考題) \(\mathbb{R}^3\) 中一個通過原點的平面,它的基底可以有幾個向量?標準基 \(\{\mathbf{e}_1,\mathbf{e}_2,\mathbf{e}_3\}\) 是這個平面的基底嗎?