Jawne i niejawne metody rozwiązywania równań różniczkowych
Transkrypt
Jawne i niejawne metody rozwiązywania równań różniczkowych
Zadanie 1: Schematy jawne i niejawne dla równa« ró»niczkowych zwyczajnych 20 kwietnia 2016 Równanie ró»niczkowe o ogólnej postaci du = f (t, u) dt (1) rozwi¡»emy prostymi schematami ró»nicowymi i porównamy dokªadno±¢ uzyskanych rozwi¡za«. Zadanie 1 Nale»y znale¹¢ numerycznie rozwi¡zanie rówanania: 1 dy = f (t) = −ay + 2a + e−at cos(t/2) dt 2 (2) przy u»yciu metod 10pkt) a) jawnej Eulera ( 10pkt) b) niejawnej Eulera ( c) trapezów ( 10pkt) d) Rungego-Kutty 2 rz¦du ( 10pkt) e) Rungego-Kutty 4 rz¦du ( 10pkt) Rozwi¡zanie nale»y znale¹¢ dla nast¦puj¡cych parametrów: poczatkowego y(0) = 2. a = 0.1, t ∈ [0; 40], ∆t = 0.5, 0.005 i warunku Rozwi¡zanie dokªadne: y(t) = e−at sin(t/2) + 2 (3) Jako wyniki nale»y przedstawi¢ wykresy: a) rozwi¡zania numerycznego (ynum (t)) i b) bª¦du metody liczonego jako δ(t) = ydok (t)−ynum (t) dla ka»dej z metod. Dla danej warto±ci ∆t nale»y: i) zrobi¢ jeden wykres zbiorczy przedstwiaj¡cy uzyskane rozwi¡zania numeryczne (wszystkie metody), ii) jeden wykres bª¦du dla jawnej i p = 1), iii) jeden wykres bª¦du dla metody trapezów i RK2 (ten p = 2) oraz iv) oddzielny wykres bª¦du dla RK4 (rz¡d zbie»no±ci p = 4). W sumie b¦dzie niejawnej metody Eulera (rz¡d zbie»no±ci sam rz¡d zbie»no±ci 8 wykresów. Uwaga 1: wszystkie metody najlepiej zaimplementowa¢ w tej samej p¦tli i zapisywa¢ wyniki (rozwi¡zania + bª¡d) do jednego pliku (dla okre±lonego Uwaga 2: multiplot ∆t) - pozwoli to na ªatw¡ kontrol¦/podgl¡d uzyskanych danych. wszystkie wykresy mo»na przedstawi¢ na jednym rysunku (1 plik zamiast 8) korzystaj¡c z opcji w Gnuplocie. Szkielet skryptu realizuj¡cego takie zadanie (wykresy s¡ umieszczane kolejno od lewej do prawej ): set term postscript color enhanced solid size 20cm,40cm set out 'z1.eps' set multiplot layout 4,2 rowsfirst plot .............. #rozwiazania dla dt=0.1 plot .............. #rozwiazania dla dt=0.01 plot .............. #bª¡d metod Eulera dt=0.1 plot .............. #bª¡d metod Eulera dt=0.01 1 font 12 plot .............. plot .............. plot .............. plot .............. unset multiplot #bª¡d #bª¡d #bª¡d #bª¡d metod trapezów metod trapezów metody RK4 dla metody RK4 dla i RK2 dla dt=0.1 i RK2 dla dt=0.01 dt=0.1 dt=0.01 jawna metoda Eulera Po dyskretyzacji zmiennej czasowej jako un tn = n · ∆t, n = 0, 1, 2, . . . , tmax /∆t aktualne un+1 . Do znalezienia un+1 a rozwi¡zanie w chwili nast¦pnej (tn+1 ) przez rozwi¡zanie oznaczymy wykorzystujemy proste podstawienie (metoda jawna): un+1 = un + ∆tf (tn , un ) Powy»szy wzór stosujemy a» osiagniemy warunek (4) tn = tmax . niejawna metoda Eulera Do znalezienia un+1 wykorzystujemy formuª¦: un+1 = un + ∆tf (tn+1 , un+1 ) w której warto±¢ f (tn+1 , un+1 ) (5) jest nieznana (dlatego metoda niejawna). Aby znale¹¢ un+1 wykorzystujemy metod¦ Newtona poszukiwania pierwiastków równania nieliniowego: F (un+1 ) = un+1 − un − ∆tf (tn+1 , un+1 ) (6) Wykorzystujemy wzór iteracyjny: uk+1 n+1 = ukn+1 − F (ukn+1 ) ∂F (uk n+1 ) ∂uk n+1 = ukn+1 − un − ∆t −aukn+1 + 2a + 21 e−atn+1 cos(tn+1 /2) − 1 + ∆ta ukn+1 K = 20 razy startuj¡c K oblicze« un+1 = un+1 . Wzór (7) iterujemy do dalszych od przybli»enia u1n+1 = un , (7) a ostatnie przybli»enie zachowujemy metoda trapezów W metodzie trapezów rozwi¡zanie w kolejnym kroku wyznaczamy wedªug wzoru: ∆t [f (tn , un ) + f (tn+1 , un+1 )] (8) 2 Poniewa» warto±ci f (tn , un+1 ) nie znamy (metoda niejawna) wi¦c un+1 znajdujemy w identyczny sposób jak w metodzie niejawnej Eulera. Rozwi¡zanie w chwili tn+1 znajdujemy korzystaj¡c z metody Newtona. Czyli un+1 = un + najpierw deniujemy równanie nieliniowe: F (un+1 ) = un+1 − un − ∆t [f (tn , un ) + f (tn+1 , un+1 )] 2 (9) a nast¦pnie znajdujemy jego miejsce zerowe korzystaj¡c z formuªy iteracyjnej: uk+1 n+1 = ukn+1 − ukn+1 − un − ∆t 2 (−aun + 2a + 12 e−atn cos(tn /2)) + (−aukn+1 + 2a + 21 e−atn+1 cos(tn+1 /2)) 1+ ∆t 2 a (10) metoda Rungego-Kutty 2 rz¦du (jawna) W jawnej metodzie RK2 rozwi¡zanie w chwili tn+1 wyznaczamy korzystaj¡c z dwóch etapów po±rednich: un+1 = un + gdzie wielko±ci k1 i k2 ∆t [k1 + k2 ] 2 (11) s¡ zdeniowane w nast¦puj¡cy sposób: k1 = f (tn , un ) (12) k2 = f (tn+1 , un + ∆tk1 ) (13) (14) 2 metoda Rungego-Kutty 4 rz¦du (jawna) W jawnej metodzie RK4 rozwi¡zanie w chwili tn+1 un+1 = un + gdzie wielko±ci ki wyznaczamy korzystaj¡c z czterech etapów po±rednich: ∆t [k1 + 2k2 + 2k3 + k4 ] 6 (15) s¡ zdeniowane w nast¦puj¡cy sposób: k1 = f (tn , un ) k2 = f (tn+1/2 , un + k3 k4 (16) ∆t k1 ) 2 ∆t = f (tn+1/2 , un + k2 ) 2 = f (tn+1 , un + ∆tk3 ) (17) (18) (19) (20) oraz tn+1/2 = tn + ∆t 2 Zadanie 2 - problem sztywny, ekstrapolacja Richardsona Nale»y rozwi¡za¢ numerycznie problem oscylatora van der Pola tj. znale¹¢ rozwi¡zanie jego równania ruchu: d2 u du − λ(1 − u2 ) +u=0 dt2 dt (21) Powy»sze RRZ 2 rz¦du zamieniamy na ukªad 2 RRZ 1 rz¦du: du dt dv dt Przyjmujemy λ = 0.35. = f (t, u, v) = v (22) = g(t, u, v) = λ(1 − u2 )v − u (23) Poniewa» problem jest sztywny (czyli mamy do czynienia z ró»nymi skalami cza- sowymi) zastosujemy automatyczn¡ kontrol¦ kroku czasowego. Sposób post¦powania jest nast¦puj¡cy. Je±li znamy rozwi¡zanie w chwili tn to rozwi¡zanie w chwili tn+2 mo»emy uzyska¢ na dwa sposoby. sposób to oczywi±cie wykonanie jednego dªugiego kroku o dªugo±ci 2∆t Pierwszy które daje nam rozwi¡zanie (1) un+2 ró»n¡ce od dokªadnego o pewien bª¡d lokalny: (1) udok (tn+2 ) = un+2 + C(2∆t)N + O(∆tN +1 ) Mo»emy te» wykona¢ dwa krótsze kroki co ∆t (24) i otrzyma¢ lepsze rozwi¡zanie (2) un+2 co da nam inny bª¡d lokalny: (2) udok (tn+2 ) = un+2 + 2C(∆t)N + O(∆tN +1 ) (25) Staª¡ bª¦du C wyznaczamy odejmuj¡c od (25) rozwi¡zanie (24). Nast¦pnie mo»emy okre±li¢ bª¡d rozwi¡zania uzyskanego w dwóch krokach: (2) E = 2C∆tN = (1) un+2 − un+2 2N −1 − 1 (26) i wykorzysta¢ go do modykacji kroku czasowego: ∆tnowy = S · tol |E| 1/N ∆t (27) N oznacza bª¡d lokalny metody. Algorytm numerycznego rozwi¡zywania równania ró»niczkowego z doborem kroku czasowego: 1. dysponuj¡c rozwi¡zaniem un znajdujemy (2) (1) (1) un+2 −un+2 jak i 2N −1 −1 jemy ten o wi¦kszej warto±ci bezwzgl¦dnej 2. obliczamy zarówno bª¡d Eu = (2) un+2 i un+2 (2) Ev = 3 (1) vn+2 −vn+2 i jako 2N −1 −1 E do dalszych oblicze« przyjmu- 3. zmieniamy krok czasowy wg (27) 4. je±li jest speªniony warunek |E| < tol to akceptujemy lepsze rozwi¡zanie kolejny krok, w przeciwnym wypadku wykonujemy algorytm dla zmienionym krokiem ∆tnowy Nale»y przyj¡¢ parametry: startowy krok czasowy v(0) = 0, parametr antystagnacyjny tol S = 0.75, ∆t(t). ∆t = 0.002, warunki pocz¡tkowe u(0) = 1 i tol = 10−3 , 10−8 , t ∈ [0, tmax ], tmax = 20. przedstawiaj¡ce rozwi¡zanie w postaci v(u) oraz tolerancja bª¦du nale»y sporz¡dzi¢ wykresy pokazuj¡ce zmiany czasowe kroku i wykonujemy zaczynaj¡c od punktu 1 ze (który automatycznie si¦ zmniejszy) Uwaga Dla obu warto±ci parametru un+2 (2) un+2 = un+2 Bonus za komplet wyników - 4 wykresy - ( 50pkt). jawna metoda RK4 Rozwi¡za¢ problem przy u»yciu jawnej metody RK4. Poniewa» mamy do czynienia z ukªadem dwóch równa« ró»niczkowych wi¦c musimy zmodykowa¢ wzory podane w zadaniu 1. Aby znale¹¢ rozwi¡zania Przyj¡¢ N = 5 un+1 i vn+1 obliczamy ±ci±le w podanej kolejno±ci: ku1 = f (un , vn ) (28) kv1 = g(un , vn ) (29) ku2 = kv2 = ku3 = kv3 = ∆t ∆t ku1 , vn + kv1 ) 2 2 ∆t ∆t g(un + ku1 , vn + kv1 ) 2 2 f (un + ∆t ∆t ku2 , vn + kv2 ) 2 2 ∆t ∆t g(un + ku2 , vn + kv2 ) 2 2 f (un + (30) (31) (32) (33) ku4 = f (un + ∆tku3 , vn + ∆tkv3 ) (34) kv4 = g(un + ∆tku3 , vn + ∆tkv3 ) (35) un+1 = un + vn+1 = ∆t (ku1 + 2ku2 + 2ku3 + ku4 ) 6 ∆t vn + (kv1 + 2kv2 + 2kv3 + kv4 ) 6 (36) (37) przy obliczaniu (26) i (27) - rz¡d bª¦du lokalnego jest wi¦kszy o 1 w stosunku do bª¦du globalnego metody (N = p + 1). 4