常微分方程數值方法裡的截尾誤差可以分為以下兩種:
- 局部截尾誤差:因為一次迭代產生的誤差
- 全域截尾誤差:因為多次迭代產生的累積誤差
定義
針對以下的微分方程
: y' = f(t,y), \qquad y(t_0) = y_0, \qquad t \geq t_0
想要計算在離散時間 t_1,t_2,\ldots,t_N 下,精確解 y(t_n) 的近似值y_n。為了簡單起見,假設時間間隔都相等:
: h = t_n - t_{n-1}, \qquad n=1,2,\ldots,N.
接著用以下的單步法計算數列 y_n
: y_n = y_{n-1} + h A(t_{n-1}, y_{n-1}, h, f).
函數 A 稱為遞增函數,可以解釋為斜率 \frac{y(t_n)-y(t_{n-1})}{h} 的估計值。
局部截尾誤差
局部截尾誤差 \tau_n是遞減函數 A 在一次迭代時所產生的誤差,假設已知前次迭代時,精確解的所有資訊。
以正式的定義,第 n 步的局部截尾誤差 \tau_n 可以用由方程 y_n \approx y_{n-1} + h A(t_{n-1}, y_{n-1}, h, f) 等號左側和右側值的差相減而得:
: \tau_n = y(t_n) - y(t_{n-1}) - h A(t_{n-1}, y(t_{n-1}), h, f).
若局部截尾誤差為 o(h) (意思是針對每個 \varepsilon > 0 ,存在 H 使得 |\tau_n| ,針對所有 h ,可參考大O符号),則此數值方法具有一致性。若遞減函數 A 連續,則此方法具有一致性当且仅当 A(t,y,0,f) = f(t,y) 。
若針對此初值問題中任何夠光滑的解,局部截尾誤差都為 O(h^{p+1}) (意思是存在常數 C 和 H ,使得對於所有 h , |\tau_n| 都成立),則此數值方法的階數為 p 。
全域截尾誤差
全域截尾誤差是在經過所有迭代以後,所有局部截尾誤差的累計值,假設初始時間下精確解的所有資訊都已知。
以正式的定義,時間 t_n 的全域截尾誤差 e_n 定義為:
:
\begin{align}
e_n &= y(t_n) - y_n \\
&= y(t_n) - \Big( y_0 + h A(t_0,y_0,h,f) + h A(t_1,y_1,h,f) + \cdots + h A(t_{n-1},y_{n-1},h,f) \Big).
\end{align}
若隨著時間步階趨近於0時,全域誤差也會趨近於0,此數值方法即為收斂的。數值解會收斂到精確知解: \lim_{h\to0} \max_n |e_n| = 0
局部截尾誤差和全域截尾誤差之間的關係
若已經知道局部截尾誤差,有時可以計算全域截尾誤差的上界。這需要遞減函數有足夠良態的性質。
全域截尾誤差會滿足以下遞迴關係式:
: e_{n+1} = e_n + h \Big( A(t_n, y(t_n), h, f) - A(t_n, y_n, h, f) \Big) + \tau_{n+1}.
這可以用定義求得。假設遞減函數對於第二個自變數,有利普希茨連續特性,也就是存在常數L,使得針對所有t、 y_1和y_2,可得:
: | A(t,y_1,h,f) - A(t,y_2,h,f) | \le L |y_1-y_2|.
因此全域截尾誤差滿足以下關係式
: | e_n | \le \frac{\max_j \tau_j}{hL} \left( \mathrm{e}^{L(t_n-t_0)} - 1 \right).
由上述的全域誤差界限可知,若微分方程中的函數 f 在第一個引數上連續,且在第二個引數上滿足李普希茲連續(柯西-利普希茨定理的條件),同時增量函數 A 在所有引數上皆連續,且在第二個引數上滿足李普希茲連續,則當步長 h 趨近於零時,全域誤差亦會趨近於零(換言之,該數值方法收斂至精確解)。
延展到線性多步法
接著,考慮下式的線性多步法
: \begin{align}
& y_{n+s} + a_{s-1} y_{n+s-1} + a_{s-2} y_{n+s-2} + \cdots + a_0 y_n \\
& \qquad {} = h \bigl( b_s f(t_{n+s},y_{n+s}) + b_{s-1} f(t_{n+s-1},y_{n+s-1}) + \cdots + b_0 f(t_n,y_n) \bigr),
\end{align}
數值解的下一個值可以由下式計算
: y_{n+s} = - \sum_{k=0}^{s-1} a_{k} y_{n+k} + h \sum_{k=0}^s b_k f(t_{n+k}, y_{n+k}).
線性多步法的下次迭代和前s次迭代的值有關。因此,計算局部截尾誤差時,會假設前s次迭代的值都是精確值:
: \tau_n = y(t_{n+s}) + \sum_{k=0}^{s-1} a_{k} y(t_{n+k}) - h \sum_{k=0}^s b_k f(t_{n+k}, y(t_{n+k})).
此方法有一致性的條件為 \tau_n = o(h) ,其階數為p的條件是 \tau_n = O(h^{p+1}) 。而全域截尾誤差的定義不變。
在線性多步法中,局部截尾誤差和全域截尾誤差有些不同。需要引入一個「零穩定法」的概念來解釋兩者之間的關係。滿足零穩定性條件的線性多步法,其局部截尾誤差和全域截尾誤差之間的關係和單步法相同。換句話說,若線性多步法滿足零穩定性,且一致,則其收斂。若線性多步法滿足零穩定性,且局部誤差階數 \tau_n = O(h^{p+1}) ,則其全域誤差滿足 e_n = O(h^p) 。
相關條目
*
- 數值積分
- 常微分方程数值方法
- 截尾誤差
腳註
參考資料
- .
- .
外部連結
- [https://web.archive.org/web/20110727035223/http://livetoad.org/Courses/Documents/03e0/Notes/truncation_error.pdf Notes on truncation errors and Runge-Kutta methods]
- [https://web.archive.org/web/20140308022426/http://www.math.unl.edu/~gledder1/Math447/EulerError Truncation error of Euler's method]
评论 (0)