跳轉到

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) \;\subset\; \operatorname{Sim}(2) \;\subset\; \operatorname{Aff}(2) \;\subset\; \operatorname{PGL}(3) \]
名稱 中文 形式 保持不變
\(\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\) 不變」的那個子群。用齊次矩陣看,仿射變換恰好長這樣:

\[ \begin{pmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{pmatrix} \qquad \text{而一般的射影矩陣沒有這個結構。} \]

用 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]\) ,這是一個仿射不變概念)。