跳轉到

1868 - Beltrami 偽球面(非歐幾何第一次「被看見」)#

案件摘要#

1868 年,義大利數學家 Eugenio Beltrami(1835–1900) 在《數學年刊》 發表兩篇論文(Saggio di interpretazione della geometria non-euclidea、 Teoria fondamentale degli spazii di curvatura costante),完成了一件 Lobachevsky 與 Bolyai 都沒能完成的事:

\[ \boxed{\text{在歐氏空間裡「造出」雙曲幾何的具體模型}}. \]

他造出了偽球面(pseudosphere)——一個由曳物線(tractrix)旋轉而成的曲面, 其高斯曲率恆為 \(-1\) :

\[ K = -\frac{1}{R^2} \quad\text{(常負曲率)}. \]

從此,非歐幾何不再只是「邏輯上的可能性」,而是「可以被畫出來的實物」—— 這終結了「非歐幾何是否自洽」的爭論。

前因 -- 為什麼會有這個案子#

  • 非歐幾何的「可信度危機」(1829–1868): Lobachevsky(1829)與 Bolyai(1832)都只給了公理系統 + 推導, 卻沒有給出具體的模型——批評者(包括當時多數數學家)的質疑是:

    「你怎麼知道這套公理不會在某一頁推出矛盾?」

\[ \text{公理系統自洽?} \xrightarrow{\text{無模型}} \text{無法回答(只有「還沒發現矛盾」)}. \]
  • Gauss 的曲率理論(1828): Gauss 的 Disquisitiones generales circa superficies curvas 證明:
\[ \text{高斯曲率 } K \text{ 是內在量(isometric invariant)}. \]

這給了 Beltrami 鑰匙:若能找到一個 \(K<0\) 的曲面,它的內在幾何就是雙曲幾何。 - 曳物線(tractrix,1673): Huygens、Leibniz、Newton(1673)研究「曳物線」:一個被繩子拖著走的重物的軌跡:

\[ x = a\,\text{arsech}(y/a) - \sqrt{a^2 - y^2},\qquad \text{切線長恆為 } a. \]

Beltrami 的洞察(1868):把曳物線繞漸近線旋轉, 得到的曲面高斯曲率恆為負常數。 - Klein 與 Poincaré 的接力(1871/1882): Beltrami 的模型被 Felix Klein(1871) 重述為「射影圓盤模型」(Beltrami–Klein model), 被 Poincaré(1882) 重述為「共形圓盤模型」(見「1882-彭加萊圓盤模型.md」)。

線索與推理 -- 數學式、程式、理論#

第一條線索:偽球面的幾何(曳物線旋轉體)#

曳物線(半徑 \(a=1\) )繞 \(x\) 軸旋轉,得到的曲面參數化:

\[ X(u,v) = (u - \tanh u,\ \text{sech}\,u\cos v,\ \text{sech}\,u\sin v). \]

高斯曲率(直接計算):

\[ \boxed{K = -\frac{1}{a^2} = -1 \quad\text{(恆定負曲率)}}. \]

面積與體積:

\[ A = 2\pi a^2\ \text{(有限!從頂點到漸近線)},\qquad V = \frac{2\pi a^3}{3}. \]

注意:偽球面只是雙曲幾何的局部模型——它有邊界(頂點尖點), 不能覆蓋整個雙曲平面。全域模型要等 Klein(1871)與 Poincaré(1882)。

第二條線索:Beltrami 的「地圖」(Klein 模型的前身)#

Beltrami 把偽球面的測地線映到圓盤內的弦(chord):

\[ \text{偽球面上的測地線} \xrightarrow{\text{中心投影}} \text{圓盤內的直線段(弦)}. \]
  • 測地線 = 弦:圓盤內的「直線」是歐氏直線段(但距離不是歐氏距離)。
  • Beltrami–Klein 距離公式:
\[ d(P, Q) = \frac{1}{2}\ln\frac{|AQ|\,|BP|}{|AP|\,|BQ|} \quad\text{( $A,B$ 為弦與邊界圓的交點)}. \]

這個公式直接來自射影幾何的交比(見「1639-德沙格射影幾何.md」):

\[ d(P,Q) = \frac{1}{2}\ln[\,A,B;P,Q\,]. \]

第三條線索:常曲率空間的分類(Beltrami 1868 的最強結果)#

Beltrami 證明了常曲率空間的完整分類:

\[ \boxed{K>0 \Rightarrow \text{球面幾何(椭圓)},\qquad K=0 \Rightarrow \text{歐氏},\qquad K<0 \Rightarrow \text{雙曲}}. \]
  • 三種幾何的三角形內角和:
\[ \alpha+\beta+\gamma = \pi + K\cdot A \quad\text{(Gauss–Bonnet 的局部形式)}. \]
  • 這是「曲率決定幾何」的第一個嚴格證明—— 為 Riemann 幾何(1854)的「曲率即幾何」提供了具體實例。

Python:偽球面的曲率與面積驗證#

import numpy as np

# 1) 曳物線與偽球面
import numpy as np
sech = lambda x: 1/np.cosh(x)   # numpy 沒有 sech,自訂
a = 1.0
u = np.linspace(0.01, 3, 50)     # 沿軸參數
r = sech(u)                       # 半徑(sech u)
x = u - np.tanh(u)                # 沿軸座標

print("曳物線旋轉體(偽球面):")
print(f"  頂點(u→0):半徑 = {sech(0.01):.4f} ≈ 1(尖端)")
print(f"  漸近(u→∞):半徑 → {sech(3):.6f} → 0")
print(f"  沿軸長度(u: 0→3)= {x[-1]:.4f}\n")

# 2) 高斯曲率驗證(用第二基本形式的數值計算)
# 參數化 X(u,v) = (u - tanh u, sech u cos v, sech u sin v)
def X(u, v):
    return np.array([u - np.tanh(u), sech(u)*np.cos(v), sech(u)*np.sin(v)])

def gauss_curvature_num(u0, v0, h=1e-4):
    """數值計算高斯曲率 K = (LN - M²)/(EG - F²)"""
    Xu = (X(u0+h, v0) - X(u0-h, v0)) / (2*h)
    Xv = (X(u0, v0+h) - X(u0, v0-h)) / (2*h)
    Xuu = (X(u0+h, v0) - 2*X(u0, v0) + X(u0-h, v0)) / h**2
    Xuv = (X(u0+h, v0+h) - X(u0+h, v0-h) - X(u0-h, v0+h) + X(u0-h, v0-h)) / (4*h**2)
    Xvv = (X(u0, v0+h) - 2*X(u0, v0) + X(u0, v0-h)) / h**2
    n = np.cross(Xu, Xv)
    n = n / np.linalg.norm(n)
    E, F, G = Xu@Xu, Xu@Xv, Xv@Xv
    L, M, N = Xuu@n, Xuv@n, Xvv@n
    return (L*N - M**2) / (E*G - F**2)

print("高斯曲率驗證(應 = -1):")
for u0 in [0.3, 0.5, 1.0, 1.5, 2.0]:
    K = gauss_curvature_num(u0, 0.7)
    print(f"  u={u0}: K = {K:.4f}")
print("→ 各處 K ≈ -1(常負曲率)✓\n")

# 3) 面積驗證:A = 2πa²(有限)
# 數值積分:A = ∫∫ |Xu × Xv| du dv
def area_element(u, v):
    Xu = (X(u+1e-5, v) - X(u-1e-5, v)) / 2e-5
    Xv = (X(u, v+1e-5) - X(u, v-1e-5)) / 2e-5
    return np.linalg.norm(np.cross(Xu, Xv))

us = np.linspace(0.001, 8, 200)
vs = np.linspace(0, 2*np.pi, 100)
A = 0.0
for i in range(len(us)-1):
    du = us[i+1] - us[i]
    for j in range(len(vs)-1):
        dv = vs[j+1] - vs[j]
        A += area_element((us[i]+us[i+1])/2, (vs[j]+vs[j+1])/2) * du * dv

print(f"偽球面面積(u: 0→8,一整圈)= {A:.4f}")
print(f"理論值 2πa² = {2*np.pi*a**2:.4f}(u→∞ 的極限)")
print("→ 偽球面面積有限!(u→∞ 收斂到 2π)\n")

# 4) Beltrami–Klein 距離(交比公式)
def klein_distance(p, q, boundary=1.0):
    """Beltrami–Klein 距離:d = ½ ln(|AQ||BP| / |AP||BQ|)"""
    # 沿 p-q 方向求與邊界圓的交點
    d = q - p
    t_sq = p@p - (p@d)**2/(d@d)   # 垂直距離平方
    disc = np.sqrt(boundary**2 - t_sq) if t_sq < boundary**2 else 0
    center = p - (p@d)/(d@d) * d
    # 交點參數
    t1 = -(p@d)/(d@d) - disc/np.sqrt(d@d)
    t2 = -(p@d)/(d@d) + disc/np.sqrt(d@d)
    A_pt, B_pt = p + t1*d, p + t2*d
    AP, AQ = np.linalg.norm(A_pt - p), np.linalg.norm(A_pt - q)
    BP, BQ = np.linalg.norm(B_pt - p), np.linalg.norm(B_pt - q)
    return 0.5*np.log((AQ*BP)/(AP*BQ))

print("Beltrami–Klein 距離(交比公式):")
for q in [0.2, 0.5, 0.8, 0.95]:
    d = klein_distance(np.array([0.0, 0.0]), np.array([q, 0.0]))
    print(f"  P=(0,0), Q=({q},0): d = {d:.4f}")
print("→ 靠近邊界時距離 → ∞(邊界圓是「無窮遠」)")
輸出:
曳物線旋轉體(偽球面):
  頂點(u→0):半徑 = 1.0000 ≈ 1(尖端)
  漸近(u→∞):半徑 → 0.099328 → 0
  沿軸長度(u: 0→3)= 2.0049

高斯曲率驗證(應 = -1):
  u=0.3: K = -1.0000
  u=0.5: K = -1.0000
  u=1.0: K = -1.0000
  u=1.5: K = -1.0000
  u=2.0: K = -1.0000
→ 各處 K ≈ -1(常負曲率)✓

偽球面面積(u: 0→8,一整圈)= 6.2794
理論值 2πa² = 6.2832(u→∞ 的極限)
→ 偽球面面積有限!(u→∞ 收斂到 2π)

Beltrami–Klein 距離(交比公式):
  P=(0,0), Q=(0.2,0): d = 0.2027
  P=(0,0), Q=(0.5,0): d = 0.5493
  P=(0,0), Q=(0.8,0): d = 1.0986
  P=(0,0), Q=(0.95,0): d = 1.8318
→ 靠近邊界時距離 → ∞(邊界圓是「無窮遠」)

結案 -- 後果與影響#

  • 非歐幾何的「除魅」(1868): Beltrami 的偽球面把「非歐幾何是否自洽」從邏輯問題變成幾何事實:
\[ \text{「公理會矛盾嗎?」} \xrightarrow{\text{模型存在}} \text{「不會——模型就在這裡」}. \]

這是數學史上「用模型證明一致性」的第一個重大案例—— 也是 希爾伯特計畫(1899)「用模型證公理自洽」 的先聲。 - 三個模型的時代(1868–1882):

\[ \text{Beltrami(1868):弦模型(Klein 型)} \to \text{Klein(1871):射影模型} \to \text{Poincaré(1882):共形模型}. \]
模型 「直線」 「角度」 優點
Beltrami–Klein 歐氏弦 被扭曲 距離公式簡潔(交比)
Poincaré 圓盤 與邊界正交的圓弧 保持不變 保角、便於複分析
Poincaré 半平面 垂直圓弧與垂直線 保持不變 最常用於雙曲三角
- Klein 的 Erlangen 綱領(1872):
Beltrami 的模型直接啟發 Klein 用變換群分類幾何
(見「1872-克萊因艾爾朗根計畫.md」)——
\[ \text{雙曲幾何 = 射影群的一個子群的幾何}. \]
  • 物理學的回響(1908–1915):
  • Minkowski(1908):狹義相對論的時空幾何就是偽歐氏幾何( \(K<0\) 的符號差)—— Beltrami 的「負曲率」思想延伸到「負號度規」。
  • Einstein(1915):廣義相對論把重力化為時空曲率—— Beltrami 的「曲率即幾何」成為物理學的核心原理 (見「1908-閔考斯基時空.md」)。
  • 現代應用:
  • 雙曲幾何的視覺化(Escher 的《圓極限》系列直接使用 Poincaré 圓盤模型);
  • 網路科學(2010s):複雜網路的隱空間(hidden metric space)是雙曲平面—— 網路的「小世界 + 無尺度」性質自然湧現於負曲率空間;
  • 機器學習(2019–):雙曲嵌入(hyperbolic embeddings)—— 層次結構(樹、知識圖譜)在雙曲空間中可以用更少維度表示。
\[ \text{偽球面(1868)} \xrightarrow{} \text{雙曲模型} \xrightarrow{} \text{AI 的雙曲嵌入(2019)}. \]
  • 歷史定位:Beltrami 是「把抽象變成具體」的大師—— Lobachevsky 說「這個幾何存在」,Beltrami 畫出了它。
\[ \text{邏輯(1829/1832)} \xrightarrow{\text{Beltrami 1868}} \text{幾何(可視)} \xrightarrow{\text{Klein/Poincaré}} \text{數學的通用語言}. \]

關鍵人物與文獻#

  • E. Beltrami:Saggio di interpretazione della geometria non-euclidea(1868); Teoria fondamentale degli spazii di curvatura costante(1868);偽球面。
  • N. I. Lobachevsky:Imaginäre Geometrie(1829)——被 Beltrami「除魅」。
  • F. Klein:Über die sogenannte Nicht-Euklidische Geometrie(1871)——射影模型。
  • H. Poincaré:Théorie des groupes fuchsiens(1882)——共形模型(見「1882-彭加萊圓盤模型.md」)。
  • C. F. Gauss:Disquisitiones generales circa superficies curvas(1828)——內在曲率。
  • 相關案件:1829-羅巴切夫斯基非歐幾何.md、1854-黎曼幾何.md、1882-彭加萊圓盤模型.md、1639-德沙格射影幾何.md。