剛性
想像一個化學反應,其中一種物種在微秒內消失,而另一種在一小時內緩緩漂移,兩者由同一組方程支配。快過程幾乎瞬間就安定下來,然後就停在那裡、無關緊要——然而顯式方法卻被逼著在整整一小時裡都以微秒的步長躡手躡腳,懼怕著它早已看不見的那個快模態。這個令人抓狂的情形——天差地別的時間尺度並存、而最快的那個在早已消逝之後仍強加一個小到懲罰人的步長——就是剛性。
精確地說,一個問題是剛性的,當它的解分量在差異懸殊的時間尺度上衰減——在數學上,當系統(或局部的雅可比矩陣)的特徵值橫跨巨大的數量級範圍、其中有些強烈為負時。麻煩純粹是數值上的:顯式方法狹小的絕對穩定區域要求 h*lambda 待在裡面,所以最負的 lambda(衰減最快的模態)強加一個小步長,「即使在」解中緩慢平滑、準確度本來樂於用大步的那部分。約束變成穩定性而非準確度。
剛性是科學計算中最重要的實務事實之一,也是隱式方法存在的理由。對剛性問題用 RK4,它要麼走上百萬個無謂的小步,要麼若你把 h 推高就炸成振盪的垃圾。解藥是隱式方法——後向尤拉或 BDF 家族——其巨大的穩定區域讓你跨過死掉的快模態,以大而穩定的步追隨緩慢的解。剛性無關方程難不難寫或解狂不狂野;它特指那種時間尺度的衝突癱瘓顯式方法。
y' = -1000(y - cos t) - sin t 的真解很快安定到平緩曲線 cos t 上,但 -1000 這個因子讓顯式尤拉法除非 h < 0.002 否則不穩定——儘管 cos t 本身完全平滑、用 h = 0.1 就很好。後向尤拉在 h = 0.1 就能穩定處理它。
快速死掉的模態逼出極小的顯式步——這種時間尺度的衝突就是剛性。
剛性不等於解變化快或解很難。一個完全平滑、緩慢變動的解,也可能坐在一個剛性方程上;剛性關乎穩定性約束,而非答案可見的行為。