Metoda Bogackiego-Shampine’a

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Metoda Bogackiego-Shampine'a)
Skocz do: nawigacji, wyszukiwania

Metoda Bogackiego-Shampine’ametoda numeryczna do rozwiązywania równań różniczkowych zwyczajnych w postaci y'=f(t,y) zaproponowana przez Przemysława Bogackiego i Lawrence’a Shampine’a w 1989[1]. Metoda Bogackiego-Shampine’a jest metodą Rungego-Kutty trzeciego rzędu z czterema współczynnikami k (patrz dalej) z tzw. własnością pierwszy taki jak ostatni (ang. FSAL, first same as last), dzięki której w każdej iteracji funkcja f wywoływana jest trzykrotnie. Metoda ta ma wbudowaną metodę rzędu drugiego dzięki czemu możliwa jest adaptacyjna zmiana kroku całkowania. Metoda Bogackiego-Shampine’a zaimplementowana jest jako funkcja ode23 w programie MATLAB[2].

W ogólności metody niższego rzędu są bardziej odpowiednie niż algorytmy wyższego rzędu jak np. Metoda Dormanda-Prince’a (piątego rzędu) do numerycznego rozwiązywania równań różniczkowych zwyczajnych, jeśli nie jest wymagana wysoka dokładność rozwiązania przybliżonego. Bogacki i Shampine twierdzą ponadto, że zaproponowana przez nich metoda przewyższa inne metody trzeciego rzędu z osadzonym metodami rzędu drugiego.

Tabela Butchera dla metody Bogackiego-Shampine’a wygląda następująco:

0
1/2 1/2
3/4 0 3/4
1 2/9 1/3 4/9
2/9 1/3 4/9 0
7/24 1/4 1/3 1/8

Rozważmy równanie różniczkowe w postaci y'=f(t,y). Jeśli y_n oznacza numeryczne rozwiązanie w chwili t_n, zaś h_n jest krokiem czasowym zdefiniowanym jako h_n = t_{n+1}-t_n, wtedy jeden krok metody Bogackiego-Shampine’a jest dany jako:

 \begin{align}
k_1 &= f(t_n, y_n) \\
k_2 &= f(t_n + \tfrac12 h_n, y_n + \tfrac12 h k_1) \\
k_3 &= f(t_n + \tfrac34 h_n, y_n + \tfrac34 h k_2) \\
y_{n+1} &= y_n + \tfrac29 h k_1 + \tfrac13 h k_2 + \tfrac49 h k_3 \\
k_4 &= f(t_n + h_n, y_{n+1}) \\
z_{n+1} &= y_n + \tfrac7{24} h k_1 + \tfrac14 h k_2 + \tfrac13 h k_3 + \tfrac18 h k_4.
\end{align}

gdzie z_{n+1} jest przybliżeniem drugiego rzędu rozwiązania dokładnego. Sposób obliczania y_{n+1} został wybrany za Ralstonem[3]. Z drugiej strony y_{n+1} jest przybliżeniem trzeciego rzędu, więc różnica pomiędzy y_{n+1} i z_{n+1} może być użyta do adaptacyjnej zmiany długości kroku całkowania. Właściwość FSAL (pierwszy jak ostatni) oznacza, że k_4 w danym kroku jest równa k_1 w kroku następnym, stąd tylko trzy wywołania funkcji f są potrzebne w każdej iteracji.

Przypisy

  1. P. Bogacki, L.F. Shampine, A 3(2) pair of Runge–Kutta formulas, Applied Mathematics Letters, vol. 2, iss. 4, 1989
  2. L.F. Shampine, M.W. Reichelt, The Matlab ODE Suite, SIAM Journal on Scientific Computing, vol. 18, iss. 1, 1997
  3. A. Ralston, A First Course in Numerical Analysis, McGraw-Hill, Nowy Jork, 1965