Metoda Bogackiego-Shampine’a

Metoda Bogackiego-Shampine’a – metoda numeryczna do rozwiązywania równań różniczkowych zwyczajnych w postaci y = f ( t , y ) {\displaystyle 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 {\displaystyle 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 {\displaystyle 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 ) . {\displaystyle y'=f(t,y).} Jeśli y n {\displaystyle y_{n}} oznacza numeryczne rozwiązanie w chwili t n , {\displaystyle t_{n},} zaś h n {\displaystyle h_{n}} jest krokiem czasowym zdefiniowanym jako h n = t n + 1 t n , {\displaystyle h_{n}=t_{n+1}-t_{n},} wtedy jeden krok metody Bogackiego-Shampine’a jest dany jako:

k 1 = f ( t n , y n ) k 2 = f ( t n + 1 2 h n , y n + 1 2 h k 1 ) k 3 = f ( t n + 3 4 h n , y n + 3 4 h k 2 ) y n + 1 = y n + 2 9 h k 1 + 1 3 h k 2 + 4 9 h k 3 k 4 = f ( t n + h n , y n + 1 ) z n + 1 = y n + 7 24 h k 1 + 1 4 h k 2 + 1 3 h k 3 + 1 8 h k 4 . {\displaystyle {\begin{aligned}k_{1}&=f(t_{n},y_{n})\\k_{2}&=f(t_{n}+{\tfrac {1}{2}}h_{n},y_{n}+{\tfrac {1}{2}}hk_{1})\\k_{3}&=f(t_{n}+{\tfrac {3}{4}}h_{n},y_{n}+{\tfrac {3}{4}}hk_{2})\\y_{n+1}&=y_{n}+{\tfrac {2}{9}}hk_{1}+{\tfrac {1}{3}}hk_{2}+{\tfrac {4}{9}}hk_{3}\\k_{4}&=f(t_{n}+h_{n},y_{n+1})\\z_{n+1}&=y_{n}+{\tfrac {7}{24}}hk_{1}+{\tfrac {1}{4}}hk_{2}+{\tfrac {1}{3}}hk_{3}+{\tfrac {1}{8}}hk_{4}.\end{aligned}}}

gdzie z n + 1 {\displaystyle z_{n+1}} jest przybliżeniem drugiego rzędu rozwiązania dokładnego. Sposób obliczania y n + 1 {\displaystyle y_{n+1}} został wybrany za Ralstonem[3]. Z drugiej strony y n + 1 {\displaystyle y_{n+1}} jest przybliżeniem trzeciego rzędu, więc różnica pomiędzy y n + 1 {\displaystyle y_{n+1}} i z n + 1 {\displaystyle 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 {\displaystyle k_{4}} w danym kroku jest równa k 1 {\displaystyle k_{1}} w kroku następnym, stąd tylko trzy wywołania funkcji f {\displaystyle 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.