5.3 Hodge 星號 \(*\) 與拉普拉斯算子#
本節目標#
- 理解 Hodge 對偶 \(*\) :把 \(k\) -form 映到 \((n-k)\) -form,用「補集 = 餘維度」的直覺
- 記住 3 維歐氏空間的配方: \(*dx = dy \wedge dz\) 、 \(*dy = -dx \wedge dz\) 、 \(*dz = dx \wedge dy\)
- 看懂 \(*d*\) 如何把旋度與散度寫成同一個形式的動作
- 用 Hodge 語言寫出 Laplacian: \(\Delta f = *d*df\) ,並與經典 \(\nabla^2 f\) 對照
- 動手實驗:在 3D 中用 SymPy 驗證 \(*d*df = \nabla^2 f\)
直覺:星號是「補集行者」#
Hodge 星號 \(*\) 回答一個自然問題:在一個 \(n\) 維空間裡,量一個 \(k\) 維小盒子,能不能只用一個 \((n-k)\) 維小盒子把它 完全補滿?
類比:在 3 維房間裡,垂直豎起一片牆(2 維),唯一「不可分割地相配」的東西是它的法線方向(1 維)。星號做的事就是「把法線找出來」:
在 3 維歐氏空間(定向 \(dx \wedge dy \wedge dz\) )中,這套映射的詳細規則是:
記法祕訣:星號把一個基 1-form 補足到整個體積形式 \(dx \wedge dy \wedge dz\) ,且零缺後的符號由 定向(決定正負的握手方式)給出。你可以這樣想:把剩下的因子擺好後做交換使順序正確,交換次數的奇偶決定正負號。
注意到 \(*\) 摺疊了樓層:
| 對象 | 形式階 | \(*\) 之後 | 階 |
|---|---|---|---|
| \(f\) (函數) | 0 | \(f \, dx \wedge dy \wedge dz\) | 3 |
| \(df\) (1-form) | 1 | 2-form | 2 |
| 2-form | 2 | 1-form | 1 |
| 3-form | 3 | 0-form(標量) | 0 |
在 3 維,「向量場」與「2 形式通量片」互相一一對應,這正是第 3 章我們能在向量與通量之間自由切換的 背後原理。
\(*d*\) :旋度與散度終於握手#
記住第 5.2 節的表格:curl 是 \(1\) -form 上的 \(d\) 、div 是 \(2\) -form 上的 \(d\) 。它們看起來是兩種事,但透過 \(*\) 我們可以把兩者寫成 同一種動作:
對應 1-form \(\omega = F_1\,dx + F_2\,dy + F_3\,dz\) (向量場 \(F\) 的功形式),其散度可以寫成:
同時,curl 對應:
更強的統一式:
直觀地說: \(*d*\) 的意思是「先搬到補集樓層,微分一次,再搬回來」。三個星號夾一個 \(d\) ,看似繁複,其實是 一個出生就該存在的公式。
Laplacian:靈魂中的算子#
把 \(*d*\) 接上 gradient,我們得到數學物理中最經典的算子 —— Laplacian:
或等效地:
在座標下這正是經典式:
為什麼這樣寫更「對」:經典式非常依賴直角座標(在曲面上、球面上它就不對了);而 \(*d*df\) 是 座標無關 的:無論空間被怎麼彎曲、非直角,這個表達式都以同樣的意義存在,只要你手上有度量(決定 \(*\) 的行為)。這是通往 Riemann 幾何的路(第 6 章起)。
數學調和函數的極值原理(一句話):若 \(\Delta f = 0\) 在某區域處處成立,則 \(f\) 在該區域內部 不可能有嚴格的局部最大值或最小值(除非它是常數)—— 調和函數是一張沒有隆起或凹陷的彈性膜。
SymPy 實作:自己寫一個 Hodge 星號#
sympy.diffgeom 沒有內建 Hodge 星號。這不妨礙我們:在 3 維歐氏空間中,星號作用在 1-form 上就是把基 1-form 依 \(*dx = dy\wedge dz\) 等規則線性替換。我們手寫它:
from sympy.diffgeom.rn import R3
from sympy.diffgeom import Differential, WedgeProduct
from sympy import simplify, expand, Function
dx, dy, dz = R3.base_oneforms()
ex, ey, ez = R3.base_vectors()
x, y, z = R3.coord_functions()
# 讀取 1-form a dx + b dy + c dz 的係數
def coeffs_1form(w):
return (simplify(w(ex)), simplify(w(ey)), simplify(w(ez)))
# 3D 歐氏 Hodge 星號(作用在 1-form 上)
def hodge_1form(w):
a, b, c = coeffs_1form(w)
return a * WedgeProduct(dy, dz) - b * WedgeProduct(dx, dz) + c * WedgeProduct(dx, dy)
# 讀取 2-form 的係數(作用在 (ex,ey), (ex,ez), (ey,ez))
def coeffs_2form(w):
return (simplify(w(ex, ey)), simplify(w(ex, ez)), simplify(w(ey, ez)))
# 3D 歐氏 Hodge 星號(作用在 2-form 上 => 1-form)
def hodge_2form(W):
Wxy, Wxz, Wyz = coeffs_2form(W)
# *(dx∧dy) = dz, *(dx∧dz) = -dy, *(dy∧dz) = dx
return Wyz * dx - Wxz * dy + Wxy * dz
# 檢查配方
print(hodge_1form(dx) == WedgeProduct(dy, dz)) # True
print(coeffs_1form(hodge_1form(dy))) # 對應 -dx∧dz ...
動手實驗:驗證 \(*d*df = \nabla^2 f\)#
選一個够複雜的三維函數,例如 \(f = x^2 y + \sin(z)\) :
from sympy.diffgeom.rn import R3
from sympy.diffgeom import Differential, WedgeProduct
from sympy import simplify, Function, diff
dx, dy, dz = R3.base_oneforms()
ex, ey, ez = R3.base_vectors()
x, y, z = R3.coord_functions()
def coeffs_1form(w):
return (simplify(w(ex)), simplify(w(ey)), simplify(w(ez)))
def hodge_1form(w):
a, b, c = coeffs_1form(w)
return a * WedgeProduct(dy, dz) - b * WedgeProduct(dx, dz) + c * WedgeProduct(dx, dy)
def coeffs_2form(W):
return (simplify(W(ex, ey)), simplify(W(ex, ez)), simplify(W(ey, ez)))
def hodge_2form(W):
Wxy, Wxz, Wyz = coeffs_2form(W)
return Wyz * dx - Wxz * dy + Wxy * dz
f = x**2 * y + Function('g')(z) # 保留 g(z) 讓對照更說服力
# ① 梯度:df
df = Differential(f)
print(coeffs_1form(df))
# (2*x*y, x**2, Derivative(g(z), z)) —— 梯度與經典 ∇f 一致
# ② Hodge:df 的星號(2-form 通量片)
star_df = hodge_1form(df)
# ③ 外微分再讀係數:得到 3-form 的純量 = div of grad
d_star = Differential(star_df)
laplacian_form = simplify(d_star(ex, ey, ez))
print(laplacian_form)
# ④ 經典座標式直接計算,對照
from sympy import sin
f2 = x**2 * y + sin(z)
print(diff(f2, x, 2) + diff(f2, y, 2) + diff(f2, z, 2))
# 2*y - sin(z)
# 用正確座標下的形式語言重算 f2 的 *d*df
star_form_f2 = Differential(hodge_1form(Differential(f2)))
print(simplify(star_form_f2(ex, ey, ez)))
# 2*y - sin(z) ✅ 兩種語言完全一致
觀察重點: 1. \(df\) 的三個係數就是經典梯度分量。 2. \(d * df\) 作用在 \((ex, ey, ez)\) 上得到的 純量係數 就是 \(\nabla^2 f\) 的值(以 \(dx \wedge dy \wedge dz\) 為單位)。 3. 對 \(f = x^2 y + \sin z\) :形式語言 \(*d*df\) 與座標式 \(\sum f_{ii}\) 同為 \(2y - \sin z\) —— 這不是巧合,是定理。
小結與練習#
小結
- Hodge 星號 \(*\) 把 \(k\) -form 映到 \((n-k)\) -form,本質是「幾何補集」。
- \(3\) 維中 \(*dx = dy\wedge dz\) 、 \(*dy = -dx\wedge dz\) 、 \(*dz = dx\wedge dy\) 。
- \(*d*\) 統一了 curl 與 div;接上 gradient 就得到 Laplacian \(\Delta f = *d*df\) 。
- 形式版的 Laplacian 是座標無關的,因此自然推廣到彎曲空間;調和函數( \(\Delta f = 0\) )沒有內部極值點。
練習
- 用本節的
hodge_1form計算 \(*df\) 對 \(f = xz^2 + y^3\) ,然後手動驗證 \(d * df\) 的係數與 \(\nabla^2 f\) 一致。 - 證明 \(**\omega = \omega\) (在 3 維歐氏空間中對 1-form 與 2-form 成立;一般規則是 \(** = (-1)^{k(n-k)}\) )。用一個帶係數的例子在 SymPy 中確認。
- (思考)在球面上,你直覺上會期望 \(\Delta f = 0\) 的解呈現什麼形狀?提示:考慮球面上的溫度分佈若沒有源,最終它會趨近什麼?(答案:常數 —— 這正是極值原理的應用。)