截尾誤差 (微分方程數值方法)

常微分方程數值方法裡的截尾誤差可以分為以下兩種:

  • 局部截尾誤差:因為一次迭代產生的誤差
  • 全域截尾誤差:因為多次迭代產生的累積誤差

定義
針對以下的微分方程

: 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) 。
相關條目
*

  • 數值積分
  • 常微分方程数值方法
  • 截尾誤差

腳註
參考資料

  • .
  • .

外部連結

评论 (0)

  • 还没有评论,来抢沙发吧。