Komputerowa analiza zagadnień różniczkowych 5. Metody Rungego-Kutty (II) P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/
Metody DIRK Jeśli spodziewamy się problemów ze stabilnościa, w szczególności jeśli rozwiazujemy problemy sztywne, powinniśmy stosować metody niejawne. Sa one jednak bardzo kosztowne obliczeniowo: jeżeli przy użyciu metody s-etapowej rozwiazkujemy problem m-wymiarowy, w każdym kroku musimy rozwiazywać s m wymiarowy układ równań algebraicznych, w ogólności nieliniowych. Aby zmniejszyć ten koszt nie tracac stabilności metod niejawnych, stosuje się metody DIRK (ang. Diagonally Implicit Runge-Kutta), zwane też metodami półniejawnymi (ang. semi-implicit). W metodach tych macierz B ma niezerowe elementy diagonalne i poddiagonalne elementy ponaddiago- Copyright c 9- P. F. Góra 5
nalne sa zerowe: α β α β β..... α s β s β s β s3 β ss w w w w s Dzięki temu, stosujac s-etapowa metodę do problemu m-wymiarowego, zamiast rozwiazywać jeden układ równań algebraicznych o wymiarze s m, należy rozwiazać s układów o wymiarze m po jednym układzie na każdy etap. Jest to numerycznie prostsze. () Jeżeli dodatkowo β = β = = β ss = γ, taka metodę nazywa się metoda SDIRK (Singly Diagonally Implicit Runge-Kutta). Copyright c 9- P. F. Góra 5 3
Przykład γ γ γ γ γ, γ = 3 + 3 Sprawdzamy rzad metody. Nietrywialnymi wyrażeniami, które trzeba sprawdzić, sa: γ + ( γ) = metoda jest rzędu drugiego. γ + ( γ) = γ γ+ = 3, γ γ+ (( γ) γ+γ ( γ)) = γ +γ = 6 metoda jest rzędu trzeciego. γ3 + ( γ)3 = 3γ 3γ+ = 6 4, γ γ γ+ ( γ) (( γ) γ + γ ( γ)) = 4γ 3 5γ +γ = 6+ 3 metoda nie jest rzędu czwartego. 36 8 6 () Copyright c 9- P. F. Góra 5 4
Obszar stabilności tej metody dany jest przez {z C: G(z) < }, gdzie G(z) = 6 (+ 3)z + 3z 6 [(3+ 3)z 6]. 6 4 - -4-6 4 6 8 Obszar niezacieniony jest obszarem niestabilności. Copyright c 9- P. F. Góra 5 5
Przykład Ciagle publikuje się i bada nowe metody RK. W pracy G. Yu. Kulikov, S. K. Shindin, Appl. Num. Math. 59, 77 (9), dyskutowane sa, między innymi, własności metody c 6(c +θ) 5 θ θ 6(c +θ) 5 c 7 6(c +θ) θ θ 5 6(c +θ) c = 3 3, θ = 6 + 3 9 Copyright c 9- P. F. Góra 5 6
Adaptacyjne podwajanie/połowienie kroku Całkowanie ze stałym krokiem to numeryczne samobójstwo. Dobre algorytmy numerycznego całkowania ODE powinny, w miarę możności, same ustalać krok, z jakim przechodza zadany przedział. W tym celu algorytm musi znać oszacowanie błędu popełnionego w ciagu jednego kroku. Dla metod Rungego-Kutty najprostszym tego typu algorytmem jest algorytm adaptacyjnego podwajania/połowienia kroku. Przypuśćmy, że żadam, aby bład na jeden krok nie przekraczał max. Niech aktualny krok całkowania wynosi h. Przechodzę przedział [x n, x n + h] dwa razy: raz dwoma krokami o długości h i raz krokiem o długości h. Copyright c 9- P. F. Góra 5 7
y n y () n+ x n x n + h x n + h dwa razy z małym krokiem } {{ }} {{ } h h y n y () n+ x n x n + h raz z dużym krokiem } {{ } h Copyright c 9- P. F. Góra 5 8
W ten sposób otrzymuję dwa oszacowania wartości y n+. Dla metody rzędu p spełniaja one Różnica y(x n + h) = y () n+ + hp+ φ + O(h p+ ), (3a) y(x n + h) = y () n+ + (h)p+ φ + O(h p+ ). (3b) = y () n+ y() n+ (4) stanowi oszacowanie błędu. Zachodza dwa przypadki:. max : Wówczas przechodzę do punktu x n+ = x n + h, jako rozwiazanie przyjmuję y(x n + h) = y () n+, zwiększam krok Copyright c 9- P. F. Góra 5 9
h h i próbuję przejść następny przedział z dwa razy większym krokiem.. > max : Wówczas cofam się do punktu x n, zmniejszam krok h h/ i ponawiam cała procedurę. W tym wypadku należy się zabezpieczyć przed zmniejszeniem się kroku poniżej pewnego h min. Istotne może być jaka normę weźmiemy. Dla klasycznej metody czteroetapowej wymaga to 4 + 4 = obliczeń prawej strony. Metoda adaptacyjnego podwajania/połowienia kroku może być stosowana także przy obliczeniach za pomoca metod niejawnych. Copyright c 9- P. F. Góra 5
Przykład oscylator Duffinga i podwajanie/połowienie kroku x(t) 4... -. -4. 4. 4 6 8 4 6 ẍ + x 3 5x = x() = 3., ẋ() = x (t) h.. -. -4. 4 6 8 4 6.3.. - - -3-4 -5-6. 4 6 8 4 6 t -7-3 - - 3 Mały rysunek pokazuje potencjał Duffinga. Copyright c 9- P. F. Góra 5
Lokalna ekstrapolacja Jeśli popełniany bład nie przekracza maksymalnego błędu dopuszczalnego, można jeszcze poprawić rozwiazanie za pomoca tak zwanej lokalnej ekstrapolacji: Przyjmijmy, że lewe strony obu równań (3) sa sobie równe. Wówczas eliminujac h p+ φ otrzymujemy y(x n + h) = y () n+ + p + O(hp+ ). (5) Może to poprawić numeryczne własności rozwiazania, ale tak naprawdę zysk na rzędzie metody jest pozorny. Copyright c 9- P. F. Góra 5
Zagnieżdżone (embedded) metody Rungego-Kutty Rozważmy dwie jawne s-etapowe metody Rungego-Kutty: y () n+ = y n + h y () n+ = y n + h k i = y n + hf s i= s i= w () i k i + O(h p+ ), (6a) w () i k i + O(h p+ ), (6b) x n + α i h, y n + h i j= β ij k j (6c) Metody te sa tak skonstruowane, że różnia się jedynie wagami, maja takie same punkty pośrednie, a więc taki sam zestaw wektorów {k i }, a ich rzędy różnia się o jeden. Copyright c 9- P. F. Góra 5 3
Obliczajac jeden zestaw pochodnych w punktach pośrednich, mamy oszacowanie błędu: = y () s ( n+ y() n+ = h w () i w () ) i k i, h p+. (7) i= Skoro h p+, to max h p+ max. Mam więc oszacowanie h max = h ( max ) /(p+). (8) Jeśli > max, zmniejszam krok h h max i powtarzam bieżacy krok. Jeśli < max, zwiększam krok h h max i z powiększonym krokiem próbuję iść dalej. Metody zagnieżdżone pozwalaja zatem na bardziej precyzyjna kontrolę kroku od podwajania/połowienia, wymagaja także mniej obliczeń (s obliczeń funkcji f). Copyright c 9- P. F. Góra 5 4
Przykład: Metoda Bogackiego-Shampine a 3() 3 4 9 9 7 4 3 4 3 3 4 4 9 4 9 3 8 Puste miejsca oznaczaja zera. Uwaga: Dwa zestawy wag! Metoda typu FSAL (First Same As Last). Copyright c 9- P. F. Góra 5 5
Sprawdzamy rzędy tych metod: pierwszy zestaw wag drugi zestaw wag 9 + 3 + 4 9 3 4 + = 6 + 3 = ; 7 4 + 4 + 3 3 4 + 8 = 8 + 4 + 8 = ; 9 + 3 + 4 9 6 + 3 = jest rzędu drugiego 9 + 3 ( ) + 4 9 ( 3 4 + ) + (... ) = ( 3 4 ) + = 7 4 + 4 + 3 4 + 8 8 + 4 + 8 = jest rzędu drugiego 7 4 + 4 ( ) + 3 ( 3 4 ( 9 + 3 + 4 9 ) + 8 = ) = + 4 = 3 ; 6 + 3 6 + 8 = 3 8 3 9 + 3 + 4 9 4 9 3 8 = 6 jest rzędu trzeciego ( + 3 4 ) + = nie jest rzędu trzeciego Copyright c 9- P. F. Góra 5 6
Obszary stabilności metody Bogackiego-Shampine a dane sa przez następujace wyrażenia: Dla metody rzędu trzeciego, służacej do obliczania następnych wartości poszukiwanej funkcji: ( z 3 + 3z + 6z + 6 ) < (9a) 6 Dla metody rzędu drugiego, służacej do kontroli błędu: 48 ( z 4 + 9z 3 + 4z + 48z + 48 ) < (9b) Krok powinien być tak dobrany, aby nie wyjść poza obszar stabilności żadnej z metod. Copyright c 9- P. F. Góra 5 7
Obszary stabilności metody Bogackiego-Shampine a 3 - - nd order 3 rd order -3-5 -4-3 - - Copyright c 9- P. F. Góra 5 8
Jawnie rozpisana metoda Bogackiego-Shampine a: k = f(x n, y n ) (a) k = f ( x n + h, y n + hk k 3 = f ( x n + 3 4 h, y n + 3 4 hk ) ) (b) (c) y n+ = y n + h ( 9 k + 3 k + 4 9 k 3 (d) k 4 = f(x n + h, y n+ ) (e) z = y n + h ( 7 4 k + 4 k + 3 k 3 + 8 k ) 4 (f) k = k 4 (g) Wektor (e) staje się wektorem (a) w następnym kroku całkowania, a więc oblicza się go tylko raz. Wektor z bierze udział tylko w szacowaniu błędów. ) Copyright c 9- P. F. Góra 5 9
Metoda Fehlberga 4(5) 4 3 8 4 3 3 9 3 3 93 7 97 97 439 6 8 796 97 368 53 845 44 8 3544 7 565 859 44 4 5 6 48 565 97 44 5 6 35 6656 85 856 5643 9 5 Pierwszy zestaw wag daje rozwiazanie rzędu czwartego, drugi rzędu piatego. 55 Copyright c 9- P. F. Góra 5
Metoda Casha-Karpa 5(4) 5 3 3 5 5 3 4 54 7 8 9 4 3 9 63 5596 6 5 5 7 7 75 5 575 384 35 7 4475 59 93 496 37 378 85 7648 5 6 8575 48384 5 594 355 5596 77 4336 5 77 Pierwszy zestaw wag daje rozwiazanie rzędu piatego, drugi rzędu czwartego. Mniejsze błędy, niż Fehlberg. 4 Copyright c 9- P. F. Góra 5
Metoda Dormanda-Prince a 5(4), FSAL 5 3 4 5 8 9 5 3 4 9 4 44 56 45 5 937 536 656 87 97 355 368 33 35 384 579 576 35 384 3 9 64448 656 79 4673 547 5 3 757 6695 5 3 49 53 76 8656 5 87 9 6784 393 997 64 339 5 87 9 6784 84 87 4 84 Pierwszy zestaw wag daje rozwiazanie rzędu czwartego, drugi rzędu piatego. Taka sama złożoność, jak Cash-Karp (sześć obliczeń funkcji na krok), ale mniejsze błędy. Copyright c 9- P. F. Góra 5
State of the art Zagnieżdżone metody Rungego-Kutty wysokiego rzędu, typu metoda Dormanda-Prince a, pozwalajace na adaptacyjna zmianę kroku, kontrolujace stabilność i wyprowadzajace wyniki ze stałym krokiem, stanowia obecnie state of the art w numerycznym rozwiazywaniu zagadnień poczatkowych dla równań nie-sztywnych. Sprawdzanie stabilności na ogół odbywa się automatycznie narastajacy bład jest oznaka niestabilności, a metoda i tak zmniejsza krok, gdy bład jest za duży. Copyright c 9- P. F. Góra 5 3
Pewien wariant metody punktu środkowego Przypuśćmy, iż rozwiazuj ac pewien problem Cauchy ego decydujemy się wyprowadzać wyniki z krokiem H, krok ten jednak jest za duży do obliczeń (powodowałby zbyt duży bład). Wykonujemy więc m małych kroków o długości h = H/m. () Copyright c 9- P. F. Góra 5 4
Stosujemy metodę z y n, (a) z = z + hf(x n, z ) (Euler) (b) dla j =, 3,..., m z j = z j + hf(x n + (j )h, z j ) (c) (pochodna w punkcie środkowym) y(x n + H) y n+ = ( zm + z m + hf(x n + H, z m ) ) (d) Copyright c 9- P. F. Góra 5 5
Metoda ta wymaga m + obliczeń prawej strony równania na kroku o długości H. Można pokazać, iż bład tej metody zawiera tylko parzyste potęgi h: y(x n + H) y n+ = j= a j h j. (3) W szczególności, jeśli m jest parzyste i zastosujemy metodę () dwa razy, z m i m/ kroków, dostaniemy y(x n + H) 4y m y m/ + O(h 5 ) (4) 3 a więc jest to metoda rzędu czwartego. (y m/ oznacza końcowy wynik po zastosowaniu m/ kroków o długości H/m, nie zaś połowę kroków o długości H/m.) Wyrażenia (3) i (4) bardzo przypominaja analogiczne wyrażenia dla całkowania metodami ekstrapolacji Richardsona i Romberga, a skoro tak, narzuca się zastosowanie jakiegoś ekstrapolacyjnego algorytmu całkowania ODE. Copyright c 9- P. F. Góra 5 6
Metoda Bulirscha-Stoera Przypuśmy, iż przechodzimy przedział [x n, x n + H] przy użyciu metody () kolejno z krokami h m = H/m dla m =, 4, 8,.... Otrzymujemy w ten sposób ciag kolejnych przybliżeń wartości y(x n + H). Jeśli tak otrzymany ciag ekstrapolujemy do nieskończonej liczby kroków pośrednich lub też, w innym sformułowaniu, do h m oszacujemy jak powinno wygladać numeryczne rozwiazanie badanego ODE w granicy infinitezymalnie małych kroków. Możemy użyć ekstrapolacji wielomianowej lub poprzez funkcje wymierne. Cała ta procedura jest dość (ale nie przesadnie) kosztowna i warto ja stosować, gdy zależy nam na szczególnie dokładnych rozwiazaniach, prawa strona równania zmienia się powoli. Copyright c 9- P. F. Góra 5 7
Podobnie jak w ekstrapolacji Richardsona, w zasadzie podejście to można stosować tylko gdy ciag kolejnych przybliżeń jest monotoniczny. Proces dzielenia odcinka kończymy gdy bład ekstrapolacji jest mniejszy od zadanej tolerancji. m= m=4 m=8 m= y x n x x n+ Copyright c 9- P. F. Góra 5 8
log m obliczenie ekstrapolacja.638383458664 3.6383693358667.6378347739768 4.63796755698376.6376866943444 5.6379374346.6377733338958 6.63789533545684.6377996545856 7.637875893336.63779658574448 8.63786997378558.63779859743868 9.6378579883888.637799565367.637843895554864.6378795968.637837793985668.63783687443.637839395989.63785345948 3.637899639.6378645479896 4.63785789395.6378779444864 5.63783954638.637876434944 6.6378834355576.6378796876 Copyright c 9- P. F. Góra 5 9
.638 Graficzna ilustracja powyższych danych:.638.638.638.6379.6379.6378.6378.6377.6377 obliczone ekstrapolowane.6376.5..5..5.3 h Copyright c 9- P. F. Góra 5 3
Zbyt duży stopień wielomianu ekstrapolacyjnego:.638.638 obliczone ekstrapolowane.638.6379.6378.6377.6376 oscylacje Rungego.6375.6374.6373.5..5..5.3 h Ekstrapolacja funkcjami wymiernymi byłaby lepsza. Copyright c 9- P. F. Góra 5 3
Przykład zastosowania metody Bulirscha-Stoera:.6.5 Bulirsch-Stoer, H=/8 rozw. biblioteczne.4.3... -. -. -.3 -.4 4 6 8 4 6 x d y dx + xdy dx + (x )y = x Copyright c 9- P. F. Góra 5 3
Odpowiednik metody Bulirscha-Stoera dla układów sztywnych Jeśli spodziewamy się problemów ze stabilnościa, używamy metod niejawnych, czasami jednak dokonujemy pseudolinearyzacji celem uproszczenia obliczeń. Punktem wyjścia jest następujaca metoda niejawna: y n+ y n = hf = hf ( x n, y n+ + y n ) x n, y n + y n+ + y n y n. (5) } {{ } poprawka Copyright c 9- P. F. Góra 5 33
Rozwijam prawa stronę (5) wokół (x n, y n ) i porzadkuję wyrazy: I h f y xn,y n y n+ = I + h f y y n xn,y n + h f(x n, y n ) h f y y n xn,y n.(6) Powyższe wyrażenie jest liniowym (w odróżnieniu od nieliniowego wyrażenia (5)) równaniem na nieznana wielkość y n+. Opierajac się na (6), można skonstruować odpowiednik metody (). Będa w nim występowały Jakobiany f/ y obliczane w kolejnych punktach pośrednich. Dokonuję następnego uproszczenia: wszystkie Jakobiany wyliczam w lewym krańcu dużego przedziału. Ostatecznie dostaję (h = H/m): Dziękuję panu Piotrowi Kiełkowiczowi za wskazanie błędu. Copyright c 9- P. F. Góra 5 34
H = [ I h f y xn,y n ], (7a) z = y n, (7b) = H hf(x n, z ), (7c) z = z +, (7d) j = j + H [hf(x n + jh, z j ) j ], (7e) z j+ = z j + j, (7f) dla j =,,..., m m = H [hf(x n + H, z m ) m ], (7g) y(x n + H) z m + m. (7h) Równania H = można rozwiazać na przykład metoda rozkładu LU. Ponieważ zgodnie z przyjętym uproszczeniem macierz H jest taka sama we wszystkich krokach iteracji (7), rozkładu tego można dokonać tylko raz. Dalej postępuję tak, jak poprzednio: h. Zagęszczam podział i stosuję ekstrapolację do Copyright c 9- P. F. Góra 5 35