偏微分方程的數值方法

克蘭克-尼科森格式(Crank-Nicolson scheme)

/ KRANK NIK-ol-son /

FTCS 便宜卻被微小的時間步長綁住;後向尤拉無條件穩定,但在時間上只有一階精度,因此略嫌模糊。克蘭克-尼科森是兼取兩者之長的優雅折衷:它既無條件穩定,又在空間與時間上都是二階精度。其想法很簡單——把空間部分取在新舊兩個時間層的正中間,也就是取顯式與隱式更新的平均。

對 u_t = k u_xx,把時間導數寫成前向差分 (u_new - u_old)/dt,但把空間樣板取為它在舊時間與新時間值的「平均」:(u_new - u_old)/dt = (k/2)(舊時間的 u_xx + 新時間的 u_xx)。由於新時間項把相鄰的新值混在一起,你無法再逐點計算 u_new——每一步都得解一個把所有新值耦合在一起的線性方程組。在一維空間中該方程組是三對角的,用湯瑪斯演算法可極快解出。這使該格式成為「隱式」:你每步付出一次求解的代價,卻可採用大時間步長而不爆破。

它的亮點在於:長時間的擴散問題——你想要精度,卻不想被 FTCS 的步長束縛。誠實的提醒是:「無條件穩定」並不等於「永遠表現良好」。克蘭克-尼科森對最高頻的誤差模態阻尼不強——其放大因子接近 -1——因此尖銳的跳變或不連續的初始分布,可能產生持續、緩慢衰減的振盪(有時稱為鈴振)。對於極粗糙的資料,通常的補救是先走幾步後向尤拉,或改用稍具耗散性的變體。

對一根初始分布為尖銳方波的棒加熱。FTCS 需 dt <= h^2/2 而爬行;克蘭克-尼科森讓你採用與 h 相當的 dt,以遠少的步數抵達同一終了時刻,代價是每步解一個三對角方程組——但要留意原跳變附近的輕微波紋。

二階且無條件穩定,但阻尼輕微——不連續處須提防鈴振。

無條件「穩定」不等於無條件「準確」:克蘭克-尼科森上的超大時間步長雖保持有界,卻可能相當不準。穩定性約束的是增長,而非誤差。

又称
Crank–Nicolson methodtrapezoidal scheme in time克蘭克-尼科森方法時間梯形格式