常微分方程的數值方法

絕對穩定區域

準確度關乎你離真相有多近;穩定性關乎你的計算究竟有沒有規矩,還是失控變成胡言。即使在真解安靜衰減到零的問題上,一個步長過大的數值方法也可能產生成長、振盪、爆炸的結果——純粹的數值垃圾,與現實毫無關係。絕對穩定區域正是哪些步長能讓方法守規矩、哪些會讓它爆炸的精確地圖。

精確地說,你用一個基準方程 y' = lambda y 測試每個方法,它的精確解 e^(lambda t) 在 lambda 實部為負時衰減。套用一個方法得到 y_(n+1) = R(z) * y_n,其中 z = h * lambda,R 是由方法固定的函數。數值解保持有界(吻合衰減的真相),恰恰在 R(z) 的絕對值至多為 1 時。使這成立的複數 z = h*lambda 的集合,就是絕對穩定區域——複平面上的一個形狀。對給定的 lambda,你必須選 h 使得 h*lambda 落在那個區域內。

這個形狀就是剛性的全部故事。像尤拉法與 RK4 這樣的顯式方法有「小」而有界的穩定區域,所以一個強烈為負的 lambda 逼得 h 必須極小才能待在裡面——這正是剛性的詛咒。像後向尤拉這樣的隱式方法有「巨大」的穩定區域(後向尤拉對整個左半平面都穩定,稱為 A 穩定),所以它們在剛性問題上走大步而不爆炸。讀一個方法的穩定區域,能在你計算任何東西之前就告訴你它能撐住多大的步——以及它究竟能不能處理剛性。

前向尤拉套用到 y' = lambda y 得 y_(n+1) = (1 + z) y_n,z = h*lambda;穩定需 |1 + z| <= 1,即以 -1 為心的單位圓盤。對實數 lambda = -100 這要求 h <= 0.02。後向尤拉得 y_(n+1) = y_n / (1 - z),對整個左半平面都穩定——任何 h 皆可。

穩定需 h*lambda 落在區域內——顯式的小、隱式的大。

絕對穩定性與準確度、與收斂性是分開的。步長落在穩定區域內只保證解保持有界,不保證它準確;而固定 h 的穩定性與 h -> 0 的收斂性是不同的問題。

又稱
stability regionabsolute stability穩定域絕對穩定性