7.1 愛爾蘭根綱領:用變換定義幾何(1872 年)#
學習動機#
到了十九世紀後期,幾何學正面臨一場「身分危機」。
兩千多年來,「幾何」幾乎等於歐幾里得的《幾何原本》:一組公理、一套圖形、一門研究點、線、面與它們之間長度角度關係的學問。但到了 1870 年前後,這個優雅的單一圖景已經崩解成一片群雄割據的戰國時代:
- 歐氏幾何:研究長度、角度、全等。
- 射影幾何(第 5 章):研究共線、共點、交比——卻完全不在乎長度。
- 非歐幾何(第 6 章):球面幾何與雙曲幾何,三角形內角和不再是 \(180°\) 。
- 仿射幾何:研究平行性、比例;平行線不會相交,但長度可以亂改。
- 反演幾何:把圓翻成直線的怪異變換。
這些幾何研究的對象與方法各不相同。它們之間有什麼關係?哪一個是「真正」的幾何?還是說,它們都只是同一個更抽象架構下的不同側面?
解決這個問題的,是一位年僅 23 歲的數學家:菲利克斯·克萊因(Felix Klein, 1849–1925)。1872 年,他剛到愛爾蘭根大學(Universität Erlangen)任教,依德國大學傳統,新任教授需提出一份研究綱領(Programm zum Eintritt),這份文件後世稱為愛爾蘭根綱領(Erlangen Programm)。其核心宣言只用一句話就能說完:
一門幾何學,就是一個變換群加上該群之下的不變量研究。
這一句話,把當時所有已知的幾何重新組織成一座優雅的階梯式大廈。本章我們將用 SymPy 實際操作這句話:造出各個變換群、檢驗哪些量在群作用下不變,並親眼看到「幾何 = 群」這個定義如何運作。
一、前因:克萊因的兩位導師——Plücker 與 Lie#
要理解愛爾蘭根綱領為何長成那個樣子,必須知道克萊因的學術血統。他一生受兩個人影響最深。
1. Plücker:「直線」也能是基本元素#
克萊因的老師是尤利烏斯·普呂克(Julius Plücker, 1801–1868)。Plücker 做了一件在當時相當激進的事:他主張射影幾何不必以「點」為基本元素,也可以以「直線」為基本元素——在三維空間中,一條直線由 4 個參數決定,因此可以引入「直線座標」,把直線空間當作一個四維的「空間」來研究。
這個訊息對克萊因影響深遠:
- 幾何的基本「元素」不是天賦的,是可以選擇的。
- 選不同元素、選不同變換,就得到不同的幾何。
- 幾何之間的關係,比幾何本身更值得研究。
克萊因 1868 年從 Plücker 手上接下老師未完成的《新幾何學系統》未完成的稿件,並完成出版——這是他的第一篇重要工作,那年他 19 歲。
2. Lie:「群」是變換的結構#
第二位關鍵人物是挪威數學家索菲斯·李(Sophus Lie, 1842–1899)。1870 年,克萊因與 Lie 一起在柏林遊學,兩人租屋相鄰,天天討論。Lie 當時正在發展他後來可以立名的「連續變換群」理論(今日的 Lie 群):把微分方程的對稱性組織成群。
對 Lie 而言,群是用來研究微分方程的工具;對克萊因而言,這些「變換群」恰恰是用來給幾何分類的鑰匙。兩人日後分別把「李群」推向分析學與幾何學兩個方向——這段友誼是十九世紀數學最著名的雙人舞之一。
一個有趣的註腳:1870 年普法戰爭爆發,克萊因必須離開巴黎返德。Lie 是挪威人不必參戰,他揹著行囊徒步穿越法國,被誤認為德國間諜逮捕,多虧法國數學家 Darboux 出面營救。數學友誼,有時需要跨越槍林彈雨。
3. 伏筆:凱萊的「群」定義#
此外,英國數學家阿瑟·凱萊(Arthur Cayley, 1821–1895)在 1854 年首次給出「群」的抽象定義(滿足封閉性、結合律、單位元、反元素)。克萊因綱領正建立在這個抽象概念之上——只是他是在「變換」的具體脈絡下使用群,而不是在任何集合上使用。反過來,我們在第 3.4 節學過的矩陣,正是變換群最方便的具體代表。
二、綱領的核心:幾何 = 群 + 不變量#
1. 正式定義#
把愛爾蘭根綱領寫成現代數學語言:
設 \(S\) 是一個「空間」(例如平面上所有點的集合), \(G\) 是一個作用在 \(S\) 上的變換群。 則一門幾何學 = 對( \(S\) , \(G\) )中,在 \(G\) 作用下不變的那些性質與量的研究。
我們把這個安排叫做一個 Klein 幾何 \(\left(S, G\right)\) 。其中:
- \(S\) 稱為底空間;通常 \(S = \mathbb{R}^2\) 或其齊次化 \(\mathbb{P}^2\) 。
- \(G\) 是 \(S\) 的對稱群(變換群),包含所有「允許的運動」。
- 在 \(G\) 下不變的性質,就是該幾何中「合法討論」的性質。
一切的關鍵在「不變」這兩個字。想一想:歐氏幾何中為什麼可以談三角形全等?因為全等的意思正是「存在一個等距變換(旋轉+平移+反射)把一個映到那個」。為什麼射影幾何不能談長度?因為射影變換會把長度變得面目全非——長度不是射影群的不變量。
換句話說:每一門幾何都在問一個問題——「在哪些變換下,哪些量不變?」 這也是物理學的基本提問方式(第 10 章會再回來),也是諾特定理與現代規範場論的祖母級思想。
2. 幾何的「包含 staircase」:子群給出更細的幾何#
克萊因綱領最漂亮的一大推論,是「幾何之間的關係可以被群之間的關係完全表示」:
若 \(G_1 \subseteq G_2\) (群 \(G_1\) 是群 \(G_2\) 的子群), 則 \(G_2\) 的不變量集合 \(\subseteq\) \(G_1\) 的不變量集合。 允許的變換越多,能保持不變的量越少,幾何就越「粗糙」。
常用的一組嵌套群(平面上)#
針對平面 \(\mathbb{R}^2\) ,從「管得最嚴」到「管得最鬆」:
| 名稱 | 中文 | 形式 | 保持不變 |
|---|---|---|---|
| \(\mathcal{I}(2)\) | 等距群(歐氏幾何) | \(\mathbf{x} \mapsto R\mathbf{x} + \mathbf{t}\) , \(R\) 為正交矩陣 | 距離、角度、面積 |
| \(\operatorname{Sim}(2)\) | 相似群 | \(\mathbf{x} \mapsto sR\mathbf{x} + \mathbf{t}\) , \(s > 0\) | 角度、比例;距離與面積不再不變 |
| \(\operatorname{Aff}(2)\) | 仿射群 | \(\mathbf{x} \mapsto A\mathbf{x} + \mathbf{t}\) , \(A\) 可逆 | 共線、平行、有向面積比、線段之中點;角度與距離皆不變 |
| \(\operatorname{PGL}(3)\) | 射影群 | 齊次座標 \(\mathbf{X} \mapsto M\mathbf{X}\) , \(M \in GL(3)\) | 共線、交比;平行性也不保 |
| \(\operatorname{Inv}(2)\) | 反演幾何(補充) | 圓反演 \(z \mapsto 1/\bar z\) (Möbius) | 角度、圓與線(保形) |
(此表其實是本章 7.2 節的主題,下面先用一個小程式把這個「包含關係」用矩陣實做出來消化一下。)
3. 幾何愈「小」的群,定理愈多——「粗幾何是細幾何的推廣」#
把包含關係用日常語言翻譯:
- 等距變換是最嚴格的,所以歐氏幾何的定理最多(可以講長度!全等!)。
- 仿射變換不保長度不保角度,但保平行。所以仿射幾何的定理少一些,但更「通用」:凡是歐氏幾何的定理,若其陳述只用仿射不變量,則同時也是仿射幾何定理。
- 舉例來說:「三角形三內角和為 \(180°\) 」用的是角度,在仿射幾何中沒意義;但「三角形三中線共點」只用到共線與中點(皆仿射不變量),所以它既是歐氏幾何定理,也是仿射幾何定理——我們在第 4.3 節用 SymPy 算過的重心,正是個仿射事實!
這就是綱領的殺傷力:定理不需要一門門重新證明,只要證明一次在「最大允許群」下成立,就自動在所有子群幾何中成立。 反之,要證一個命題在某幾何中不成立,只需找一個群中的變換把它破壞掉即可。
4. 用 SymPy 把綱領跑起來:看一個量的「幾何級下降」#
我們以一棵具體的例子:由三點 \(A=(0,0)\) , \(B=(2,0)\) , \(C=(0,1)\) 構成的三角形,檢驗各種量在各群之下是否不變。首先要能「偽裝」各群的變換。
我方策略:用 SymPy 把各群的一位「生成元」寫出來,再對三角形施加該變換,看哪些量改變、哪些量不變。
from sympy import Matrix, Rational, sqrt, symbols, simplify
# 原始資料
A = Matrix([0, 0])
B = Matrix([2, 0])
C = Matrix([0, 1])
def area2(P, Q, R):
"2 倍有向面積(用 2x2 行列式;對 2 維向量 SymPy 不支援 cross)"
return Matrix([[Q[0]-P[0], Q[1]-P[1]],
[R[0]-P[0], R[1]-P[1]]]).det()
def perimeter(P, Q, R):
return (P - Q).norm() + (Q - R).norm() + (R - P).norm()
def apply_affine(M, t, P):
"仿射變換 x -> M x + t"
return M * P + t
# (1) 等距變換:旋轉 90 度
R90 = Matrix([[0, -1], [1, 0]])
Ap, Bp, Cp = [apply_affine(R90, Matrix([5, 2]), p) for p in (A, B, C)]
print("旋轉+平移後的面積2倍 =", area2(Ap, Bp, Cp)) # 2 (原本 2)
print("旋轉+平移後的周長 =", perimeter(Ap, Bp, Cp)) # sqrt(5) + 3
print(" 原周長 =", perimeter(A, B, C)) # sqrt(5) + sqrt(2) + 3
print()
# (2) 相似變換:放大 3 倍
s = 3
Ap, Bp, Cp = [apply_affine(s * Matrix.eye(2), Matrix([5, 2]), p) for p in (A, B, C)]
print("放大 3 倍後的面積2倍 =", area2(Ap, Bp, Cp)) # 18 (原 2 :面積×9)
print("放大 3 倍後的周長 =", perimeter(Ap, Bp, Cp)) # 3(sqrt(5)+sqrt(2)+3)
print()
# (3) 仿射變換:剪力
Shear = Matrix([[1, Rational(1, 2)], [0, 1]])
Ap, Bp, Cp = [apply_affine(Shear, Matrix([0, 0]), p) for p in (A, B, C)]
print("剪力仿射後的面積2倍 =", area2(Ap, Bp, Cp)) # 2 (有向面積仍為 2!)
print("含剪力仿射後的周長 =", perimeter(Ap, Bp, Cp)) # 2 + sqrt(13)/2 + sqrt(5)/2
print()
# (4) 射影變換:作用在齊次座標上
Bm = Matrix([[1, 0, 0], [0, 1, 0], [symbols('c'), 0, 1]]) # x -> x/(c x + 1)
def projective(B, P):
Ph = Matrix([P[0], P[1], 1])
Qh = B * Ph
return Matrix([Qh[0]/Qh[2], Qh[1]/Qh[2]])
c = 1
Bp1, Bp2, Bp3 = [projective(Bm, p) for p in (A, B, C)]
print("射影變換後的三點 =", Bp1, Bp2, Bp3)
print("射影變換後的面積2倍 =", simplify(area2(Bp1, Bp2, Bp3))) # 2/(2*c + 1),非不變量!
執行後(取 c = 1),觀察幾件事:
- 等距變換:面積、周長都沒變。這就是「歐氏幾何可以談全等」的代碼版。
- 相似變換:周長乘了 3 倍,面積乘了 \(9 = 3^2\) 倍。長度與面積都不是相似不變量,但它們之間比例關係不變(面積跟 \(s^2\) 走、長度跟 \(s\) 走,規則嚴格)。
- 剪力仿射變換:周長變了、形狀歪了,但有向面積竟然完全沒變——這不是巧合,讀完整章 7.2 之後你會知道為什麼(提示:仿射變換的行列式因子會在對平行四邊形的剖分中抵消自己)。
- 射影變換:連有向面積都守不住了。剩什麼?共線性(當然,這是線性映射的關係),以及交比(下一節有講)。
5. 不變量的「可見度」隨群變大而逐一熄滅#
把剛才的實驗總結成表。注意:從左往右,我們「熄滅」的不變量依次是多寡,而不是「先小後大」的長度,而是整個幾何的分類。
| 不變量 | 等距 | 相似 | 仿射 | 射影 |
|---|---|---|---|---|
| 距離(長度) | ✔ | ✘ | ✘ | ✘ |
| 角度 | ✔ | ✔ | ✘ | ✘ |
| 面積 | ✔ | ✘ | ✔* | ✘ |
| 三點共線 | ✔ | ✔ | ✔ | ✔ |
| 兩線平行 | ✔ | ✔ | ✔ | ✘ |
| 線段中點 | ✔ | ✔ | ✔ | ✘ |
| 線段比例(同線上) | ✔ | ✔ | ✔ | ✔ |
| 交比 | ✔ | ✔ | ✔ | ✔ |
(* 仿射不保一般「面積」,但保有向面積的比值;三人共構的有向面積本身會乘一個 \(\det A\) 的因子。)
這張表正是愛爾蘭根綱領的核心產物:給一個幾何,就等於給一張「熄滅清單」。 我們在 7.2 節將逐一驗證每一列。
三、如何用綱領統一歐氏/仿射/射影幾何?#
1. 歐氏幾何是仿射幾何加一個「正交結構」#
在泛化光譜上,往仿射群 \(\operatorname{Aff}(2)\) 送進來的歐氏幾何如何定位?答案是:
歐氏幾何 = 仿射幾何 + 「正交群 \(\operatorname{O}(2)\) 被選中」這個額外結構。
白話說:仿射幾何的世界裡,座標軸應該可以歪斜任何方向、任何長度刻度,但只要有「一個特殊的內積/一條特殊的在無窮遠處的圓(絕對圓 absolute)」被鎖定,我們就自動升級回歐氏幾何。這正是克萊因在愛爾蘭根綱領中花了最多篇幅的亮點。
更具體地:每一門 Klein 幾何,都可以看作在同一個底空間 \(\mathbb{R}^2\) (或 \(\mathbb{P}^2\) )上,由「挑一個子群」來定義。不同的幾何,不是不同的世界,而是同一世界、不同的特權階層(可以執行哪些變換)。
2. 射影幾何是仿射幾何的「完備化」:無窮遠直線的命運#
在第 5 章的齊次座標中,我們已經熟悉一件事:射影平面 \(\mathbb{P}^2\) 把平行線的交點放在「無窮遠直線」上。那麼仿射幾何在 Klein 分類中的定位就非常清楚了:
仿射幾何 = 射影幾何 + 保留一條特殊的直線(無窮遠直線)不動。
形式上, \(\operatorname{Aff}(2)\) 是 \(\operatorname{PGL}(3)\) 中「使直線 \(z = 0\) 不變」的那個子群。用齊次矩陣看,仿射變換恰好長這樣:
用 SymPy 驗證這個關鍵事實——「仿射矩陣總是保持 \(z=0\) 直線不變」:
from sympy import Matrix, symbols
a, b, c, d, tx, ty, u, v = symbols('a b c d tx ty u v')
# 仿射變換的齊次矩陣
M_aff = Matrix([[a, b, tx],
[c, d, ty],
[0, 0, 1 ]])
# 無窮遠直線上的點,形如 (u, v, 0)
P_inf = Matrix([u, v, 0])
Q_inf = M_aff * P_inf
print("仿射變換後的第三座標 =", Q_inf[2]) # 0 ——仍在無窮遠直線上!
# 反例:真射影變換(第三列有非零元素)
M_proj = Matrix([[1, 0, 0],
[0, 1, 0],
[symbols('r'), symbols('s'), 1]])
Q = M_proj * P_inf
print("射影變換後的第三座標 =", Q[2]) # r*u + s*v ——離開無窮遠了
注意第二個輸出:一般射影變換會把無窮遠點「拉近」有限位置(這正是日常透視法在做的事:鐵軌的「交點在無窮遠」被攝影機「拉到」相片上一個有限的滅點)。這就是「射影幾何管得比仿射幾何鬆」的原因。
3. 雙曲幾何何嘗不在 Klein 家族裡?#
愛爾蘭根綱領的成就甚至延伸到第 6 章的非歐幾何。克萊因本人指出:雙曲幾何可以構造成「射影幾何 + 保一個二次曲線(絕對形 absolute)不變」的幾何。龐加萊圓盤裡的「雙曲距離」在克萊因語言中,是保一個圓(克萊因模型中的圓盤邊界)那個子群下的不變量。
這是非歐幾何從「反叛者」變成「公民」的關鍵一步:它與歐氏幾何的差別,不過是選了不同的不變結構——不同的群,則產生不同的「距離」的定義。
用第 6 章的話重述:「所有的非歐幾何不是被踢出幾何家族,而是被 Klein 依『群』重新接回家族樹。」
4. 幾何之間還能「互相資助」:新的證明方式#
上段說到,群鏈 \(\mathcal{I}(2) \subset \operatorname{Sim}(2) \subset \operatorname{Aff}(2) \subset \operatorname{PGL}(3)\) 不但使我們能升降幾何,還給出一種「升幾何證明法」:
想證歐氏幾何中之命題 \(P\) ?若 \(P\) 只牽涉某幾何的不變量, 嘗試把 \(P\) 表述成更粗幾何的命題,在更粗幾何中證明之(粗幾何往往更簡單)。
一個教科書級的例子是笛沙格定理(第 5 章):它是純射影定理;我們不需要「找特定三角形的具體座標」來證它,在射影座標下甚至只需設定一堆 0 與 1 就能證——因為射影群大到可把大部分點移到標準位置。也就是:群越大,標準化越徹底,證明越省事。
四、群論的「小字典」:從代數語言翻回幾何語言#
以下是本章後續與 7.3 節會不斷使用的對照表。
| 群論語言 | 幾何語言 |
|---|---|
| 群 \(G\) | 一種幾何的全部「允許運動」 |
| 群元素 \(g \in G\) | 一個變換(例如一次旋轉) |
| 乘法 \(g \cdot h\) | 先做 \(h\) 、再做 \(g\) 的複合 |
| 單位元 \(e\) | 不動的變換(全等不動) |
| 反元素 \(g^{-1}\) | 撤銷這個變換 |
| 子群 \(H \le G\) | 一門「更精細」的幾何藏身在 \(G\) 中 |
| 共軛 \(g h g^{-1}\) | 同型的變換,換參考點 |
| 商群 / 軌道 | 某一模組下「等價的點」 |
特別提一下「共軛」,因為它將在 7.2、7.3 節承擔「分類」的角色。例:所有以點 \(P\) 為中心的旋轉,與以原點為中心的旋轉,共軛地相同;共軛類即「同型變換」的幾決。這也將在 7.3 節以矩陣特徵值的方式表現出來:等距變換按其「共軛型」被分成平移、旋轉、反射、滑移反射四大類。
五、愛爾蘭根綱領的產出與後續影響#
1. 綱領當年其實沒有立刻走紅#
有趣(而且合理)的歷史事實:1872 年的愛爾蘭根綱領並沒有立即洗改整個數學界。它初始只是一份教授就任文件,流通量很小,數學界花了二十年以上才慢慢消化它。真正推動它流行的是:
- Lie 群論在微分方程中的巨大成功;
- Klein 自己在哥廷根的影響力(他日後把哥廷根變成數學重鎮);
- 達爾布(Darboux)與法國射影幾何學派的引介;
- 以及 1880 年代之後龐加萊對雙曲幾何與 Klein 群(離散變換群)的研究。
時至今日,「群作用下的不變量」已成為數學與物理最基本的心智模型:諾特定理(守恆量與對稱群的關係)、規範場論、乃至一般相對論的座標協變性,都可以視為愛爾蘭根綱領的血親。
2. Klein 的遠見與綱領的界限#
誠實一点:愛爾蘭根綱領並不是幾何的「終極理論」,它有其極限:
- 它依賴「均勻空間」的假設,適用於許多 Klein 幾何,但黎曼幾何(第 6、9 章)研究的是曲率隨位置改變的空間,那裡只有局部對稱性。克萊因幾何是黎曼幾何的「平坦特例」——日後 Cartan 的廣義幾何(廣義廣度空間)才把兩者統合。
- 拓撲學、代數幾何中重要的「形」與覆盖映射等,也也不完全在 Klein 幾何框架內。
但對一本開始幾何學的教科書而言,綱領的分類法功能是無價的:它告訴我們,無窮多種幾何中,每一門都對應一個變換群,而幾何與幾何之間的位置關係可以由群之間的包含關係完全決定。
3. Klein 之後:我們在本書的餘下旅程#
把本書與克萊因綱領做一個對照:
- 第 1–4 章:歐氏/座標幾何(群 \(\mathcal{I}(2)\) 、 \(\operatorname{Sim}(2)\) )。
- 第 4 章圓錐曲線:實際是射影幾何的群下分類(5 種二次曲線,即射影幾何中的不變性分類)。
- 第 5 章:射影幾何(群 \(\operatorname{PGL}(3)\) )。
- 第 6 章:非歐幾何(保「絕對形」的子群)。
- 第 7 章(本章):把以上所有幾何重組為 Klein 階梯。
- 第 8 章計算幾何:許多演算法(凸包、Delaunay)本質上是「對變換類不變」的結構——如凸包在仿射變換下有可預測的行為。
- 第 9 章微分幾何:局部化、放棄全域群——離開 Klein 世界,走向 Cartan。
也就是說,你能用愛爾蘭根綱領這把鑰匙,重新閱讀本書前六章,並預見後三章。這正是克萊因留給幾何學教育最有價值的遺產。
六、SymPy 的「不變量偵測器」:把綱領寫成一個函式#
我們把本章所談的「某量在某群下是否不變」寫成一個小小的偵測函式,並對幾組典型的幾何量跑跑看。
from sympy import Matrix, symbols, simplify, sqrt, Rational
def is_invariant(f, transforms, *points):
"""
檢驗 f(*points) 是否在 transforms 中每一個變換下不變。
transforms:形如 (M, t) 的仿射變換串列(M 為 2x2 矩陣、t 為 2x1 平移)。
回傳:全部保持不變 -> True,否則 False(並印出違反的例子)。
"""
val = f(*points)
for i, (M, t) in enumerate(transforms):
pts2 = tuple(M * p + t for p in points)
if simplify(f(*pts2) - val) != 0:
return False
return True
# 三個測試點,含符號,鎖定變數自由
P = Matrix([symbols('x1'), symbols('y1')])
Q = Matrix([symbols('x2'), symbols('y2')])
R = Matrix([symbols('x3'), symbols('y3')])
# 待測的量
d_PQ = lambda A, B: (A - B).norm() # 距離
area = lambda A, B, C: Matrix([[B[0]-A[0], B[1]-A[1]],[C[0]-A[0], C[1]-A[1]]]).det() # 有向面積
parallel_det = lambda A, B, C, D: (B[0]-A[0])*(D[1]-C[1]) - (B[1]-A[1])*(D[0]-C[0]) # AB ∥ CD 之判別式
# 測試群:等距(旋轉)、相似(放大 2)、仿射(剪力、鏡射+伸縮)
rot = (Matrix([[0, -1], [1, 0]]), Matrix([0, 0]))
sim = (2 * Matrix.eye(2), Matrix([1, 1]))
shear = (Matrix([[1, Rational(1, 2)], [0, 1]]), Matrix([0, 0]))
genaff = (Matrix([[2, 1], [Rational(1, 2), 3]]), Matrix([5, -2]))
print(is_invariant(d_PQ, [rot], P, Q)) # True :距離是等距不變量
print(is_invariant(d_PQ, [sim], P, Q)) # False :距離不是相似不變量
print(is_invariant(area, [rot, sim, shear], P, Q, R)) # False:面積在剪力下不保?
print(is_invariant(parallel_det, [shear, genaff], P, Q, P, R)) # 練習用,見習題
(輸出:True / False / False / 請你自己跑步看看!)之所以把 area 利用 shear 做出「False」,是因為我們的 area 用的是符號座標的自由三角形;你要是在第 2 節的固定三角形上用剪力,它似乎「不變」是因為 \(\det(\text{shear}) = 1\) 這個特例。把一般性握在手上(用符號座標),才能看到真相:面積乘上 \(\det A\) 。這就是抽符號搜規律的正確使用方法,也是本書一貫的原則。
第七章剩下兩節,將分別為 resh:
- 7.2 細看這些群本身——等距、相似、仿射的矩陣標準形、分類定理(剛體運動四型)、以及每個不變量的證明與驗證;
- 7.3 從群論的角度反攻——用 SymPy 的矩陣類型、自由符號與群公理,實作「變換群」本身,並研究 \(\operatorname{SO}(2)\) 這個最小、最優雅的連續群範例。
習題#
7.1.1 給定三角形 \(A=(0,0)\) 、 \(B=(4,0)\) 、 \(C=(1,3)\) 。分別找出:(a) 一個剪力仿射變換,使各點完整一新位置後,有向面積仍為 \(6\) ,但周長增大;(b) 一個射影矩陣( \(3\times 3\) 齊次),使這三點在變換後不再共構一個面積為 \(6\) 的三角形,但三點仍共線不成(其積成)。請用 SymPy 計算所有量驗證。
7.1.2 利用本節的 is_invariant,檢驗:(a) 三點的面積是否為相似不變量;(b) 三點所圍的角度(用內積公式)是否為相似不變量。請分別從理論(矩陣行為)與程式(輸出)兩面驗證你的結論。
7.1.3(理論)證明:若 \(G_1 \subseteq G_2\) 是 \(S\) 上的兩個變換群,則 \(G_2\) 的每一個不變量都是 \(G_1\) 的不變量。並舉出一個 \(G_1\) 的不變量不是 \(G_2\) 的不變量的具體例子(提示:平行性)。
7.1.4(歷史)查詢克萊因在愛爾蘭根綱領的原始文件(或其德文原書、概述)、以及其與 Lie 群論的關係,寫下 300 字的中文摘要,重點放在:(a) 綱領發表時的「小眾性」;(b) 其後起之秀 Poincaré 對雙曲幾何的群論化陳述;(c) Cartan 把 Klein 之「點幾何」與 Riemann 之「線幾何」統合的廣義幾何。
7.1.5(挑戰)歐幾里得幾何中,「兩點之間線段最短」在等距群下是一個不變的性質(這是兩點距離的最小值定義)。但在仿射幾何中,「最短線段」這句話是否還有意義?若不然,找出等價仿射版本的陳述(提示:靠「段的仿射參數化」 \(\left(1-t\right)A + tB\) , \(t \in \left[0,1\right]\) ,這是一個仿射不變概念)。