跳轉到

2014:KPZ 懸案告破——Hairer 的正則結構探案#

「這條方程式人人都看過,卻沒有人能合法地寫下它的解。」——本案卷宗首頁的鉛筆批註。

案件檔案 內容
案號 KPZ-2014-001
案發時間 1986 年立案,2014 年告破
案發地點 一維界面生長的隨機世界
報案人 M. Kardar、G. Parisi、Y.-C. Zhang(1986)
偵探 Martin Hairer(華威大學,後任帝國理工)
兇器 時空白噪聲 \(\xi\) 與非線性項 $
審判 2014 年 Fields 獎(首爾國際數學家大會)
血緣 T. Lyons 粗糙路徑(1998)之嫡系後裔
狀態 已結案,奇異隨機偏微分方程時代開啟

案發現場#

1986 年的物理實驗室裡,三位報案人目睹了一樁怪事。

他們觀察紙張吸水的前緣、細菌菌落的邊界、晶體生長的表面,發現這些界面的高度 \(h\) 隨時間起伏,粗糙度不斷放大,卻又服從某種普適的標度律。

於是他們寫下了一條外觀人畜無害的方程:

\[ \partial_t h = \nu \Delta h + \lambda |\nabla h|^2 + \xi \]

其中 \(h = h(t,x)\) 是界面高度, \(\nu\) 是表面張力係數 , \(\lambda\) 是生長速率係數 ,而 \(\xi\) 是時空白噪聲。

探長的第一反應是:「這不就是熱方程加個平方項,再加點噪聲嗎?有什麼難的?」

真正的恐怖藏在證物 \(\xi\) 身上。

時空白噪聲在 \(1+1\) 維中,作為廣義函數,其正則性只有 \(-3/2 - \kappa\) 階,其中 \(\kappa > 0\) 是任意小的常數。

線性部分解出的隨機熱方程,其解的正則性僅為 \(1/2 - \kappa\) 階,是一條處處連續、卻處處不可微的鋸齒路徑。

那麼請問:對一條不可微的路徑求梯度,再平方—— \(|\nabla h|^2\) 究竟是什麼意思?

經典微積分在此當場殉職, Itô 積分也無能為力,因為這裡的噪聲不是時間一維的半鞅,而是時空分佈。

從 1986 年到 2013 年,此案被標註為「形式方程」:物理學家敢用它算標度指數,數學家卻不敢承認它的解存在。

卷宗裡還躺著另一份舊檔案——Lyons 在 1998 年留下的粗糙路徑理論。

Lyons 說過,對付 Hölder 指數小於 \(1/2\) 的路徑,必須把路徑連同它的「迭代積分」打包成一個增強對象,才能定義積分。

Hairer 注意到了這句遺言,他懷疑 KPZ 案的兇手也是同一個:問題不在方程,而在我們對「解」的定義太天真。

偵查過程#

偵探 Hairer 的辦案筆記分為四步,每一步都對應一次數學上的躍進。

第一步是驗屍:計算正則性,確認死因。

他設 \(X\) 為拋物型 Hölder 空間的正則性指標,則白噪聲 \(\xi\) 滿足 \(|\xi| \sim -3/2 - \kappa\) ,而熱核 \(K\) 能把正則性提升 \(2\) 階。

於是形式解 \(h = K \ast (\lambda |\nabla h|^2 + \xi)\) 中,先行項 \(K \ast \xi\) 的正則性為 \(1/2 - \kappa\) ,其梯度為 \(-1/2 - \kappa\) 。

兩個 \(-1/2 - \kappa\) 階的分佈相乘,在 Schwartz 廣義函數理論中是非法操作,因為正則性之和小於零時乘積必然發散。

下表是 Hairer 在黑板上寫的「屍檢報告」:

證物 正則性指標 能否定義平方 備註
時空白噪聲 \(\xi\) \(-3/2 - \kappa\) 否 太粗糙,非函數
線性解 \(K \ast \xi\) \(1/2 - \kappa\) 邊緣 連續但不可微
梯度 \(\nabla h\) \(-1/2 - \kappa\) 否 分佈,無逐點值
非線性項 \(\|\nabla h\|^2\) 發散 \(-\infty\) 否 需重整化

第二步是追查血緣:把 Lyons 的粗糙路徑從常微分方程搬到偏微分方程。

Lyons 的核心咒語是:若路徑 \(X\) 太粗糙,就不要只記錄 \(X\) 本身,而要記錄它與自身的高階交互 \(\mathbb{X}\) 。

Hairer 把這句話翻譯成場論語言:解的局部展開不應只用多項式 \(X^k\) ,而要用一組由噪聲生成的抽象符號。

他發明的「正則結構」是一組三元組 \((A, T, G)\) ,其中 \(A\) 是齊次度集合, \(T\) 是模型空間, \(G\) 是結構群。

每個抽象符號 \(\tau \in T\) 都有一個齊次度 \(|\tau|\) ,例如噪聲符號 \(\Xi\) 的齊次度為 \(-3/2 - \kappa\) 。

Hairer 寫下 KPZ 方程的抽象不動點問題:

\[ H = \mathcal{P} \mathbf{1}_{+} (\lambda (\mathscr{D} H)^2 + \Xi) + P h_0 \]

其中 \(\mathcal{P}\) 是抽象熱核積分算子, \(\mathscr{D}\) 是抽象導數, \(P h_0\) 是初值提升。

第三步是關鍵的審訊技巧:重整化。

Hairer 發現,光是抽象展開還不夠,因為把磨光噪聲 \(\xi_\varepsilon\) 對應的典範模型代入時,非線性項會以 \(C_\varepsilon \sim \varepsilon^{-1}\) 的速度爆炸。

他於是引入重整化群 \(M_\varepsilon\) ,對模型做一個與 \(\varepsilon\) 有關的線性變換,把發散部分系統性地減掉。

重整化後的方程多出一個反項:

\[ \partial_t h_\varepsilon = \nu \Delta h_\varepsilon + \lambda (|\nabla h_\varepsilon|^2 - C_\varepsilon) + \xi_\varepsilon \]

當 \(\varepsilon \to 0\) 時, \(h_\varepsilon\) 收斂到一個與磨光方式無關的極限 \(h\) ,只差一個有限的常數位移。

這正是物理學家在量子場論中用了半世紀的伎倆,第一次在拋物型隨機偏微分方程中被嚴格化。

第四步是收網:證明抽象解映射的連續性。

Hairer 證明了「重建定理」:只要模型 \((\Pi, \Gamma)\) 收斂,則重建出的廣義函數 \(\mathcal{R} H\) 也收斂。

下表整理了本案的辦案工具與 Lyons 舊案的對應關係:

Lyons 舊案(1998,SDE) Hairer 新案(2014,SPDE) 共同靈魂
粗糙路徑 \((X, \mathbb{X})\) 模型 \((\Pi, \Gamma)\) 增強對象攜帶交互資訊
Hölder 粗糙度 \(\alpha\) 齊次度 \(\|\tau\|\) 以指數量化粗糙
Lyons 擴張定理 重建定理 從局部展開還原整體
Wong–Zakai 修正項 重整化常數 \(C_\varepsilon\) 發散的合法減除
高階迭代積分 抽象符號乘積表 代數結構先行

至此,KPZ 方程第一次擁有了適定(well-posed)的嚴格解。

結案報告#

2014 年首爾,國際數學家大會宣佈 Hairer 榮獲 Fields 獎,頒獎詞只有一句話:對奇異隨機偏微分方程作出了變革性貢獻。

本案的直接遺產有三件。

第一,KPZ 方程從形式方程升格為嚴格數學對象,其 Cole–Hopf 解被證明正是重整化後的正則結構解,堵上了二十八年的邏輯缺口。

第二,正則結構成為通用刑具,隨後被用於 \(\Phi^4_3\) 模型、連續拋物型 Anderson 模型,以及 \(3\) 維 Navier–Stokes 的隨機版本。

第三,它與 Gubinelli 的 paracontrolled 分佈、Kupiainen 的重整化群構成三足鼎立,共同開啟了「奇異 SPDE」十年。

從血緣上看,這是 Lyons 粗糙路徑在無窮維的還魂:當年為馴服布朗運動以下粗糙路徑而發明的代數增強思想,在 Hairer 手中長成了能馴服時空白噪聲的參天大樹。

探長在結案陳詞中寫道:「我們沒有馴服噪聲,我們只是學會了用噪聲自己的語言與它談判。」

後續的目擊者稱,Hairer 辦完此案便轉向了 Yang–Mills 與隨機幾何,而 KPZ 普適類的精確分佈問題,則交給了概率論的下一代偵探。

證據與工具#

核心證物一:KPZ 方程及其磨光重整化版本,見偵查過程第三步,關鍵是發散常數 \(C_\varepsilon\) 的減除與 \(\varepsilon \to 0\) 的極限。

核心證物二:抽象不動點方程 \(H = \mathcal{P}(\lambda (\mathscr{D} H)^2 + \Xi)\) ,其重建 \(h = \mathcal{R} H\) 即為物理解。

核心證物三:重建定理保證解映射關於模型連續,這是整個適定性證明的鎖鏈扣。

工具 用途 出處
正則結構 \((A, T, G)\) 描述局部展開的代數骨架 Hairer 2014
模型 \((\Pi, \Gamma)\) 把抽象符號翻譯為廣義函數 Hairer 2014
重整化群 \(M_\varepsilon\) 系統減除發散 Hairer 2014
粗糙路徑 \((X, \mathbb{X})\) 有限維先驅,思想源頭 Lyons 1998
Cole–Hopf 變換 \(h = \log Z\) 連接隨機熱方程的旁證 Bertini–Giacomin 1997

辦案守則:遇到正則性之和為負的乘積,不要硬乘,先增強結構,再重整化,最後重建。

補充:程式實作#

對應程式#

本節對應程式為 1998-fbm_hurst.py ,以分數布朗運動的 Hurst 標度示範何謂粗糙度量尺,本程式與 1998 年 Lyons 粗糙路徑篇共用,此處從奇異 SPDE 的角度重新解讀。

理論呼應#

Lyons 以 \(p\) 變差量化一路徑有多粗,Hairer 則以齊次度 \(|\tau|\) 量化一符號有多奇異,兩者是同一靈魂。 程式驗證的自相似律 \(Var B(t) = t^{2H}\) 關係說明 \(H\) 越小路徑越粗,正是粗糙度量尺的原型。 當 \(H < 1/2\) 時連 Itô 積分都不夠用,必須呼叫面積 \(\mathbb{X}\) 或模型 \((\Pi, \Gamma)\) 等增強對象。 KPZ 案把這條線推到時空分佈,梯度平方 \(|\nabla h|^2\) 非法正是 \(H\) 極小世界的無窮維版本。

執行方式#

在 隨機微積分 目錄下執行 python3 _code/1998-fbm_hurst.py 即可重現結果,只需 numpy。

實測輸出#

H = 0.1: slope = 0.2264, target 2H = 0.2000, err = 0.0264
H = 0.7: slope = 1.4560, target 2H = 1.4000, err = 0.0560
VERIFY slope_H01=0.2264 slope_H07=1.4560

\(H = 0.1\) 一組斜率緊貼 \(0.2\) 目標,示範了比布朗運動更粗的噪聲確實存在且可量測。

讀者實驗#

將取樣點 N = 256 改為 N = 512 後重跑,觀察 \(H = 0.1\) 組斜率誤差是否進一步縮小。

完整程式如下:

"""1998 分數布朗運動 Hurst 估計(Cholesky 生成)。
對應 wiki:Mandelbrot–Van Ness (1968) fBM 定義;此處驗證自相似性
  Var B(t) = t^{2H},即 log Var 對 log t 斜率 = 2H。
生成:時格 t_i = i/N (N=256,含 0 共 257 點),
  共變異 C(s,t) = (s^{2H}+t^{2H}-|t-s|^{2H})/2,Cholesky L,路徑 = L z。
實驗:H = 0.1 與 0.7,各 500 條;逐 t 樣本變異數,
  線性迴歸 log Var ~ log t 得斜率,容忍 |slope - 2H| < 0.15。
只用 numpy,固定種子,不畫圖。
"""
import numpy as np

rng = np.random.default_rng(3)
N = 256
M = 500
Hs = (0.1, 0.7)
t = np.arange(N + 1) / N  # 含 0

slopes = {}
for H in Hs:
    p = 2.0 * H
    ti = t[:, None]
    tj = t[None, :]
    C = 0.5 * (ti ** p + tj ** p - np.abs(ti - tj) ** p)
    C += 1e-12 * np.eye(N + 1)  # 數值 jitter(H=0.1 時近奇異)
    L = np.linalg.cholesky(C)
    Z = rng.standard_normal((N + 1, M))
    paths = L @ Z  # (257, 500)
    var_t = np.var(paths[1:, :], axis=1, ddof=1)  # 去掉 t=0
    logt = np.log(t[1:])
    logv = np.log(var_t)
    slope, intercept = np.polyfit(logt, logv, 1)
    slopes[H] = float(slope)
    print(f"H = {H}: slope = {slope:.4f}, target 2H = {p:.4f}, err = {abs(slope - p):.4f}")

print(f"VERIFY slope_H01={slopes[0.1]:.4f} slope_H07={slopes[0.7]:.4f}")
assert abs(slopes[0.1] - 0.2) < 0.15, f"H=0.1 斜率偏差過大: {slopes[0.1]}"
assert abs(slopes[0.7] - 1.4) < 0.15, f"H=0.7 斜率偏差過大: {slopes[0.7]}"