1841 — Jacobi 行列式#
案件摘要#
1841 年,Carl Gustav Jacob Jacobi 在 Crelle's Journal 發表拉丁文論文〈De determinantibus functionalibus〉(論函數行列式),把 Cauchy 的行列式從「數字陣列」升級為「函數陣列」:定義了函數行列式(今日稱 Jacobian),證明它在多重積分變數變換中的核心地位,並用它重述隱函數定理。行列式從線性代數的內部證物,變成連接多元微積分的關鍵橋樑。
前因 -- 為什麼會有這個案子#
- 1812–1815 年 Cauchy 建立行列式理論:定義、記法、 \(\det(AB)=\det(A)\det(B)\) ——工具已備,但只用於線性方程組。
- 多重積分的變數變換早在 Euler、Lagrange 時代就有零散處理:二重積分換極座標時憑直覺多乘一個 \(r\) (即 \(dx\,dy = r\,dr\,d\theta\) )。這個 \(r\) 從哪來?為什麼三維換球座標是 \(r^2\sin\varphi\) ?——沒有人給出統一的「偵查公式」。
- Jacobi 本人是橢圓函數大師(1829 年《Fundamenta nova theoriae functionum ellipticarum》),在橢圓函數的變數變換中反覆遇到「一組函數對一組變數」的偏導數陣列,深深感到需要系統理論。
- 1830 年代 Gauss、Ostrogradsky 的散度定理也需要嚴格的變數變換理論支撐。
- 案件核心疑問: \(n\) 個函數 \(f_1,\dots,f_n\) 對 \(n\) 個變數 \(x_1,\dots,x_n\) 的「偵測儀」是什麼?它何時可逆?何時壓縮面積?
線索與推理 -- 數學式、程式、理論#
線索一:Jacobian 的定義#
Jacobi 定義函數行列式(他稱之為 functional determinant,記號 \(\frac{\partial(f_1,\dots,f_n)}{\partial(x_1,\dots,x_n)}\) 後世沿用):
注意 Jacobi 的記法中行對應函數、列對應變數(今日教科書多半行對應變數、列對應函數,即轉置;因 \(\det(A^T)=\det(A)\) ,數值相同)。在單變數情形退化為導數 \(J = df/dx\) ——Jacobian 就是導數的高維推廣。
線索二:多重積分變數變換#
Jacobi 證明的核心定理:若變數變換 \(y_i = f_i(x_1,\dots,x_n)\) 是 \(C^1\) 且可逆,則:
關鍵在 \(|J|\) :Jacobian 的絕對值就是「區域面積(體積)的放大率」。把區域切成無窮小平行六面體,每個小塊的體積由各偏導數向量張成的平行六面體給出——這正是 Gram 行列式的幾何意義。極座標 \(x = r\cos\theta,\ y = r\sin\theta\) 時:
球座標同理得 \(J = r^2\sin\varphi\) 。困擾數學家一百多年的「神祕係數」正式結案:它們都是 Jacobian。
線索三:隱函數定理與鏈鎖法則#
Jacobi 用 Jacobian 重述隱函數定理:給定方程組 \(F_1=\cdots=F_n=0\) ,若在某點處
則在該點附近可局部解出 \(x_1,\dots,x_n\) 為其餘變數的光滑函數。 \(J \neq 0\) 是「局部可逆」的判據——這就是線性代數中 \(\det(A)\neq 0 \Leftrightarrow A\) 可逆的非線性推廣。他還證明 Jacobian 滿足鏈鎖法則:
這正是 \(\det(AB)=\det(A)\det(B)\) 的微積分化身——Cauchy 1812 年的乘法規則在三十年後換了一個戰場再次現身。
程式碼範例:Jacobi 行列式與座標變換面積#
import numpy as np
def jacobian(fs, x, h=1e-6):
"""數值 Jacobian:第 i 列為 df_i/dx_j(函數對變數)"""
n = len(fs)
J = np.zeros((n, n))
for j in range(n):
xp, xm = x.copy(), x.copy()
xp[j] += h; xm[j] -= h
for i, f in enumerate(fs):
J[i, j] = (f(*xp) - f(*xm)) / (2*h)
return J
# 極座標:x = r cosθ, y = r sinθ
polar = [lambda r, t: r*np.cos(t), lambda r, t: r*np.sin(t)]
r, t = 2.0, np.pi/6
Jp = jacobian(polar, np.array([r, t]))
print("polar J =", np.linalg.det(Jp), " 理論 r =", r)
# 球座標:x = ρ sinφ cosθ, y = ρ sinφ sinθ, z = ρ cosφ
sph = [lambda R, p, th: R*np.sin(p)*np.cos(th),
lambda R, p, th: R*np.sin(p)*np.sin(th),
lambda R, p, th: R*np.cos(p)]
Js = jacobian(sph, np.array([3.0, np.pi/4, np.pi/6]))
print("sphere J =", np.linalg.det(Js), " 理論 ρ²sinφ =", 9*np.sin(np.pi/4))
# 鏈鎖法則驗證:polar -> cart -> 再度縮放 (u,v) = (2x, 3y)
scale = [lambda x, y: 2*x, lambda x, y: 3*y]
x0 = np.array([r, t])
cart0 = np.array([f(*x0) for f in polar])
Jsc = jacobian(scale, cart0)
print("det(J_scale·J_polar) =", np.linalg.det(Jsc)*np.linalg.det(Jp))
comp = [lambda r, t: 2*r*np.cos(t), lambda r, t: 3*r*np.sin(t)]
print("det(J_composite) =", np.linalg.det(jacobian(comp, x0)))
# Monte Carlo 驗證:單位圓面積 = ∫∫_D 1·|J| dr dθ
N = 200000
rs = np.sqrt(np.random.rand(N)) # 面積均勻抽樣
ts = 2*np.pi*np.random.rand(N)
est = np.mean(rs * (np.pi*1**2)) # ∫ r dr dθ over 半徑1圓 ≈ π
print("圓面積估計 ≈", est, " 理論 π ≈", np.pi)
輸出中:polar 的 \(J=r\) 、sphere 的 \(J=\rho^2\sin\varphi\) ,且 \(\det(J_{\text{scale}})\det(J_{\text{polar}})=\det(J_{\text{composite}})\) 完美吻合鏈鎖法則;Monte Carlo 積分印證 \(|J|\) 就是面積放大率。
結案 -- 後果與影響#
- 多元微積分獲得堅實地基:變數變換、隱函數定理、反函數定理全部以 \(J \neq 0\) 為樞紐。
- Jacobian 成為連接線性代數與微積分的橋樑:局部線性化的最佳工具,微分幾何的切空間、流形上的體積形式都由它生出。
- 1841 年 Jacobi 還發表姊妹篇〈De formatione et proprietatibus determinantium〉(論行列式的形成與性質),把 Cauchy 理論推向教科書化的高峰。
- 後世影響:Lagrangian/Hamiltonian 力學的正則變換、廣義相對論的座標變換、機器學習中的 normalizing flows(變數變換機率密度公式 \(p_Y(y)=p_X(x)|J|\) )皆源於此。
關鍵人物與文獻#
| 人物 | 角色 |
|---|---|
| Carl Gustav Jacob Jacobi | 定義函數行列式、證明變數變換定理 |
| Augustin-Louis Cauchy | 行列式理論的奠基者 |
| Leonhard Euler / Joseph-Louis Lagrange | 變數變換的早期直覺處理 |
| Mikhail Ostrogradsky | 散度定理(同期) |
- C. G. J. Jacobi, De determinantibus functionalibus, J. reine angew. Math. (Crelle) 22, 319–355 (1841)。
- C. G. J. Jacobi, De formatione et proprietatibus determinantium, J. reine angew. Math. 22, 285–318 (1841)。