桿子上的問題,乾淨地寫出來
上一篇指南從能量守恆推導出了熱方程 u_t = k u_xx:溫度順著自己的梯度流動,而淨流入一塊薄片的熱量會把它加熱。現在我們不再只是欣賞這條方程,而要解它的一個具體版本。想像一根長度為 L 的細金屬桿,側面包了隔熱層,所以熱量只能沿著長度方向移動。它的兩端被夾在零度的冰裡,而在起始時刻,它的溫度分布是某個給定的形狀 f(x)。我們想要 u(x,t):每個位置、每個之後時刻的溫度。
三件資訊釘死了答案,把它們命名出來會有幫助。偏微分方程 u_t = k u_xx 在內部成立,也就是 0 < x < L 且 t > 0。邊界條件固定兩端:對所有 t 而言 u(0,t) = 0 與 u(L,t) = 0——這是齊次的 狄利克雷條件,也就是那兩盆冰水。初始條件固定起點:u(x,0) = f(x)。光有偏微分方程會有一整個函數那麼大的自由度;正是這些邊界與初始資料挑出了唯一一個物理解。這整包東西就是熱方程的初邊值問題。
猜想:空間與時間可以拆開
這裡有一個替方法命名的信心一躍。我們尋找具有特殊乘積形式的解 u(x,t) = X(x) T(t):一個固定的空間形狀 X(x),它的整體振幅由單一因子 T(t) 隨時間調大或調小。這就是乘積解擬設。並不保證真正的答案長這個樣子——而且一般來說也不會——但只要我們能找到夠多這樣的零件,疊加原理(熱方程是線性的)就能讓我們把它們加回成完整的解。所以我們先去獵捕這些積木。
把 u = X(x) T(t) 代入 u_t = k u_xx。時間導數只碰 T,空間導數只碰 X,於是我們得到 X(x) T'(t) = k X''(x) T(t)。現在兩邊同除以 k X(x) T(t),看好戲:左邊的 T'/(kT) 只依賴 t,右邊的 X''/X 只依賴 x。一個只含 t 的函數等於一個只含 x 的函數。要讓這對每個 x、每個 t 都成立,唯一的辦法就是兩邊都等於同一個常數。我們把它叫做分離常數,而把它寫成一個負數 -lambda,待會兒能替我們省下一個正負號的麻煩。
u(x,t) = X(x) T(t) into u_t = k u_xx
X T' = k X'' T
divide by k X T:
T' X''
---- = ----- = -lambda (a constant, same for both)
k T X
=> X'' + lambda X = 0 (space, with X(0)=X(L)=0)
T' + k lambda T = 0 (time)空間本徵值問題挑出形狀
看看空間方程:X'' + lambda X = 0,附帶從冰水繼承來的 X(0) = 0 與 X(L) = 0(因為 u(0,t) = X(0) T(t) = 0 必須對所有 t 成立,X(0) 就得是零,在 L 端同理)。這不是那種你隨便代入任何 lambda 都會得到答案的普通邊界問題。對大多數的 lambda 值,唯一滿足兩端的解是無聊的 X = 0,它給出 u = 0——根本沒有熱。有意思的問題是:對哪些特殊的 lambda,會有一個非零的形狀存活下來?這就是空間本徵值問題,存活下來的 lambda 是本徵值,那些形狀則是它們的本徵函數。
逐一檢查 X'' + lambda X = 0 的情形就能定案。如果 lambda 是零或負數,解會是直線或一增一減的指數,而要讓兩端都歸零的唯一辦法又是 X = 0——出局。只有 lambda > 0 行得通:那裡的解會振盪,X(x) = sin(sqrt(lambda) x)(餘弦那一項被 X(0) = 0 殺掉了),而 X(L) = 0 逼使 sin(sqrt(lambda) L) = 0。這恰好在 sqrt(lambda) L 是 pi 的整數倍時發生。於是被允許的本徵值是 lambda_n = (n pi / L)^2,其中 n = 1, 2, 3, ...,而那些形狀就是正弦模態 X_n(x) = sin(n pi x / L)。
這些正弦模態是桿子的自然形狀,正是你在一根兩端夾住的弦上會預期的駐波形態——半個波、一個整波、三個半波,以此類推,每一個都在兩端被釘成零。n 越大,形狀越皺、過零點越多。把這件事先收進口袋裡;待會兒會發現,越皺的模態正是死得最快的那些。
時間提供衰減,一個模態接一個模態
現在來到輕鬆的那一半。每個本徵值 lambda_n 把它的值交給時間方程 T' + k lambda_n T = 0,這是一條你在下兩階就見過的一階線性常微分方程。它的解是一個純指數,T_n(t) = e^(-k lambda_n t) = e^(-k (n pi / L)^2 t)。因為 lambda_n > 0,這些每一個都朝零衰減——熱量總是漏向冰冷的兩端,從不會自發地堆積起來。把相配的兩塊相乘,就給出一個基本解,一個冷卻中的模態:u_n(x,t) = sin(n pi x / L) · e^(-k (n pi / L)^2 t)。
盯著衰減率 k (n pi / L)^2 看。它像 n^2 那樣成長,所以高階模態消失的速度遠比低階的戲劇性。那些皺巴巴、高頻率的擺動——初始溫度裡尖銳、細緻的細節——幾乎立刻被抹去,而寬闊、平緩的 n = 1 隆起則逗留得最久。這就是傅立葉模態的衰減,也是熱方程著名的平滑化背後的引擎:粗糙的特徵正是那些高階模態,而它們受到的懲罰最重。有一整篇後續指南專講這件事,但你已經能在那個指數裡讀到它了。
用傅立葉級數匹配初始資料
我們有一個無窮的冷卻模態家族,每一個都是合法的解,既遵守方程也遵守冰水。但單一個模態很少能匹配給定的起點 f(x);真實的初始溫度是某個任意的隆起,而不是一個完美的正弦。疊加救了我們:解的任何線性組合仍是解。於是我們組成總和 u(x,t) = 對 n 求和 b_n · sin(n pi x / L) · e^(-k (n pi / L)^2 t),係數 b_n 仍然自由,再用這份自由去命中初始條件。
令 t = 0。所有指數都變成 1,而 u(x,0) = f(x) 的要求讀作 f(x) = b_n sin(n pi x / L) 之和。這正好就是要求把 f 寫成一個傅立葉正弦級數——恰恰是對的基底,因為這些正弦正是邊界條件強加給我們的形狀。係數來自正交性:不同的正弦模態在 [0,L] 上彼此積分為零,所以乘上 sin(m pi x / L) 再積分,就能孤立出單一個 b_m。這就是匹配初始條件,也是最終釘死每一個旋鈕的那一步。
- 分離。 代入 u = X(x)T(t),兩邊同除,讀出 X'' + lambda X = 0 與 T' + k lambda T = 0,由常數 lambda 相連。
- 解空間問題。 在 X(0)=X(L)=0 之下,只有 lambda_n = (n pi / L)^2 給出非零的形狀 X_n = sin(n pi x / L)。
- 解時間問題。 每個 lambda_n 給出衰減因子 T_n = e^(-k (n pi / L)^2 t),於是該模態是 u_n = X_n T_n。
- 疊加並匹配。 把模態以係數 b_n 相加;在 t=0 時要求 f(x) = b_n sin(n pi x / L) 之和,並讀出 b_n = (2/L) 乘以 f(x) sin(n pi x / L) 在 [0,L] 上的積分。
於是大功告成:把那些 b_n 代回總和,完整的解就建好了。注意答案的形狀——單一個任意輸入 f 被轉成了無窮多個係數,每一個都騎在自己那條衰減指數上。原本是一整個函數那麼大的初始資料自由度,已被完全吸收進 b_n 之中,而時間什麼也沒做,只是安靜地把每一項縮小。
它告訴你什麼,又在哪裡停下
這單一條公式已經揭露了擴散深層的性格。隨著 t 增大,每一項都縮小,於是 u → 0 處處皆然:桿子忘掉過去,鬆弛到冰冷的平衡。哪怕只過了一丁點時間,高 n 的項就已消失,只剩下幾個平滑正弦之和——所以鋸齒狀的初始分布瞬間變得平滑,這就是運作中的平滑化效應。而把時間倒著跑,朝負的 t:指數變成 e^(+正),高階模態爆炸,f 裡最微小的誤差也會失控放大。這就是為什麼逆向熱方程是不適定的——擴散有方向,你無法把攪散的東西攪回去。
不過要誠實面對這套設定非得多麼特殊不可。分離變數法之所以管用,是因為三件事剛好對齊:幾何是一段乾淨的區間、兩端坐落在固定的坐標上;邊界條件是齊次的、且不隨時間變化;方程有常係數,所以 X 與 T 真正解耦了。改動其中任何一項,乾淨的正弦模態故事就可能失效——一個彎彎曲曲的區域、一條移動的邊界,或同時依賴 x 和 t 的係數,都會拒絕被分離,而你就得伸手去拿別的工具。
兩條最重要的逃生路線都從這裡自然長出。把冰冷的狄利克雷兩端換成隔熱的諾伊曼兩端,正弦就變成餘弦;把正弦基底換成幾何所要求的任何本徵函數,你就踏進了後面某階更廣的斯圖姆-劉維爾理論。而要處理無窮長的桿子——那裡沒有牆把模態量子化成一份離散的清單——對 n 的求和就變成對一個連續區間的積分,那就是熱核,正是下一篇指南的主題。分離變數法是那道門;那兩者都是門後的房間。