仍能道盡全貌的最簡單資料
到這裡,你已看過純量守恆律的光滑初始資料變陡、在有限時間內形成震波,接著需要蘭金-雨貢尼歐條件來讓它移動,需要熵條件從一群弱解中把它挑出來。下一個自然的問題殘酷地簡單:對最乾淨不過的問題,整個解在所有時間裡究竟長什麼樣?黎曼問題問的正是這個。取 u_t + f(u)_x = 0,並以僅僅兩個常數作為初始資料——x < 0 時 u = u_L、x > 0 時 u = u_R,在原點處只有單一一道跳躍。
為何要在意這麼一張被剝得精光的圖?因為這個小問題是整個雙曲理論的原子。它的資料沒有長度尺度——沒有寬度、沒有平滑的斜坡,除了一個台階什麼都沒有——所以解只能依賴於 x/t 這個組合。這就是這裡所謂的自相似性:在原點附近放大或縮小,解看起來都一模一樣,每個常數狀態沿著一條射線 x =(速度)t 鋪開。解黎曼問題,就是找出哪些射線會出現、它們之間夾著什麼。
兩種答案:一道震波,或一把扇子
對凸通量 f(想想 柏格斯方程,f(u) = u^2/2,其特徵速度為 f'(u) = u),答案乾淨地分成兩種情形,由哪一邊較快來決定。若左狀態跑得比右狀態快——對柏格斯而言即 u_L > u_R——特徵線彼此撞作一團,唯一自洽的圖像是單一一道跳躍:一道以蘭金-雨貢尼歐速度 s = (f(u_L) - f(u_R)) / (u_L - u_R) 行進的震波。兩個常數維持不變;一道鋒利的懸崖在它們之間滑動。
反之,若左狀態較慢——對柏格斯而言即 u_L < u_R——特徵線向外散開,留下一個其中沒有任何資訊的楔形。用一道震波去填那個楔形雖為蘭金-雨貢尼歐所允許,卻為熵條件所禁止(那會是一道被禁止的稀疏震波,特徵線從不連續處冒出,而非撞進去)。物理的填法是一道稀疏波:一把平滑的扇子,其中 u 由 u_L 連續地滑向 u_R,每條射線 x/t 上的值由反解特徵速度 f'(u) = x/t 得到。扇子之外,兩個常數依舊。
Burgers: u_t + (u^2/2)_x = 0, speed f'(u) = u
case u_L > u_R (compression) case u_L < u_R (expansion)
SHOCK, one ray x = s t RAREFACTION FAN
s = (u_L + u_R)/2 u = x/t for u_L < x/t < u_R
t | u_L \ u_R t | u_L | / / / | u_R
| \ | |/ / /|
| \ | / / /
+---------\------ x +-----/-/-/------ x
one jump, characteristics IN smooth fan, characteristics OUT為何我們仍不信任那道震波:消失的黏性
熵條件告訴了我們該保留哪些跳躍,但它可能讓人覺得像是上面頒下來的一條規則。有一種更物理的方式看出它從何而來,而這正是本指南最深刻的想法。真實的流體或車流從不是完美無黏的;總有一點點擴散把東西抹開。所以,與其研究 u_t + f(u)_x = 0,不如研究正則化的方程 u_t + f(u)_x = epsilon u_xx,其中 epsilon 是一個小的正數。那多出來的 u_xx 項,正是熱方程的平滑作用——它禁止真正的不連續,讓每個解都保持光滑。
現在取極限 epsilon -> 0。黏性方程的光滑解收斂到無黏方程的某個特定弱解——而了不起的是,這個 消失黏性 極限總是落在熵解上,從不落在那道虛假的稀疏震波上。黏性替你選出了物理的答案。一道貨真價實的震波在極限中以一層薄薄的光滑過渡層(寬度約為 epsilon)塌縮成一道跳躍而倖存;一道被禁止的稀疏震波無法倖存,因為沒有任何小黏性的剖面能把它撐住。這就是熵條件誠實的來源:它是一個已消失的擴散所留下的指紋。
兩個同名者,一個想法:黏性解
黏性解 這個詞有兩種相關但不同的用法,值得誠實地把它們的重疊講清楚。第一種是上面那個基本的:作為黏性正則化在 epsilon -> 0 極限下所得的弱解——守恆律的消失黏性解,它與熵解一致且唯一。這就是替黎曼故事收尾的那個意思。
第二種是一個更廣的現代概念,同樣稱為黏性解,適用於完全非線性的一階與二階方程,例如哈密頓-雅可比方程。在那裡,想法不是加上擴散再取極限,而是用平滑函數從上方或下方去碰觸這個(可能不光滑的)解,並在每個接觸點要求正確的不等式。這是一個出色的推廣,為那些古典導數根本不存在的方程提供了存在性與唯一性。這個名字向同一位祖先——消失黏性——致敬,儘管實際的定義已不再提及 epsilon。
一步步解一個黎曼問題
以下是凸通量單一守恆律的整套方法,也就是模擬中每一個單元邊界都會跑的配方。它用上了本梯級的一切:特徵速度、蘭金-雨貢尼歐跳躍條件、熵規則,以及自相似的 x/t 結構。
- 讀出兩個狀態 u_L 與 u_R,並算出它們的特徵速度 f'(u_L) 與 f'(u_R)。接下來的一切只取決於比較這兩個速度。
- 若左特徵較快,f'(u_L) > f'(u_R),波會壓縮:使用單一一道震波。由蘭金-雨貢尼歐算出它的速度 s = (f(u_L) - f(u_R)) / (u_L - u_R),並把跳躍放在射線 x = s t 上。
- 若左特徵較慢,f'(u_L) < f'(u_R),波會膨脹:使用一把稀疏扇。在楔形 f'(u_L) < x/t < f'(u_R) 之內,藉由解 f'(u) = x/t 求出 u 來定值;在楔形之外,左側保持 u_L、右側保持 u_R。
- 對你保留的任何震波檢查熵條件:特徵線必須撞進它(f'(u_L) > s > f'(u_R))。若它們會跑出來,你寫下的就是被禁止的解——那裡的物理答案是稀疏波,而非震波。
在你到處信任這個配方之前,有兩個誠實的告誡。第一,這乾淨的兩情形二分法仰賴一個凸(或凹)通量;一個帶有反曲點的通量——像某些交通與油流模型中的三次式——能產生混合了震波與扇子的複合波,其構造需要更加小心。第二,對一個包含數個方程的一階雙曲系統,單一道跳躍會變成一串波,每個特徵場一道,由中間的常數狀態接合;求解器會找出那些狀態,但只有嚴格雙曲系統的弱熵解,在本梯級所假設的條件下,才被保證唯一。系統在大資料下的整體理論至今確實艱難。