跳轉到

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 維)。星號做的事就是「把法線找出來」:

\[ k\text{-form} \xrightarrow{*} (n-k)\text{-form} \]

在 3 維歐氏空間(定向 \(dx \wedge dy \wedge dz\) )中,這套映射的詳細規則是:

\[ *dx = dy \wedge dz, \qquad *dy = - \, dx \wedge dz, \qquad *dz = dx \wedge dy \]

記法祕訣:星號把一個基 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\) 的功形式),其散度可以寫成:

\[ \operatorname{div} F \, dx\wedge dy\wedge dz = d * \omega \]

同時,curl 對應:

\[ *(d\omega) = (\operatorname{curl} F) \text{ 的 1-form 版本} \]

更強的統一式:

\[ *( * d * ) = \operatorname{curl}, \qquad * d * = \operatorname{div} \]

直觀地說: \(*d*\) 的意思是「先搬到補集樓層,微分一次,再搬回來」。三個星號夾一個 \(d\) ,看似繁複,其實是 一個出生就該存在的公式。

Laplacian:靈魂中的算子#

把 \(*d*\) 接上 gradient,我們得到數學物理中最經典的算子 —— Laplacian:

\[ \Delta f \, dx \wedge dy \wedge dz = d * df \]

或等效地:

\[ \Delta f = * d * df \]

在座標下這正是經典式:

\[ \nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} + \frac{\partial^2 f}{\partial z^2} \]

為什麼這樣寫更「對」:經典式非常依賴直角座標(在曲面上、球面上它就不對了);而 \(*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\) )沒有內部極值點。

練習

  1. 用本節的 hodge_1form 計算 \(*df\) 對 \(f = xz^2 + y^3\) ,然後手動驗證 \(d * df\) 的係數與 \(\nabla^2 f\) 一致。
  2. 證明 \(**\omega = \omega\) (在 3 維歐氏空間中對 1-form 與 2-form 成立;一般規則是 \(** = (-1)^{k(n-k)}\) )。用一個帶係數的例子在 SymPy 中確認。
  3. (思考)在球面上,你直覺上會期望 \(\Delta f = 0\) 的解呈現什麼形狀?提示:考慮球面上的溫度分佈若沒有源,最終它會趨近什麼?(答案:常數 —— 這正是極值原理的應用。)