Metoda Runge-Kutta-Fehlberga i sterowanie długością kroku Cel: Dla zadanej tolerancji e wybrać minimalną liczbę węzłów, wystarczającą do utrzymania globalnego błedu w ramach tolerancji. Błąd globalny trudny do badania ï zajmujemy sie błedem lokalnym ï strategia - w kazdym etapie sterować długością kroku Realizacja praktyczna Analiza: Dane są dwa algorytmy: z n = y n-1 + h FHx n-1, z n-1 L z błędem lokalnym E n T HFL = yhx n L - z n = K F h p+1 = OHh p+1 L w n = y n-1 + h GHx n-1, w n-1 L z błędem lokalnym E n T HGL = yhx n L - w n = K G h q+1 = OHh q+1 L, q p + 1 Stąd: yhx n L = z n + K F h p+1 oraz yhx n L = w n + K G h q+1. Po odjęciu Wtedy w n - z n = K G h q+1 - K F h p+1 º K F h q+1 - K F h p+1 = K F Hh q+1 - h p+1 L ï K F º wn-zn ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ h q+1 -h p+1. E n T HFL = K F h p+1 º wn-zn ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ h q+1 -h p+1 hp+1 = w n-zn ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ h q-p -1 W szczególności dla q = p + 1 E T n HFL º ÅÅÅÅÅÅÅÅÅÅÅÅÅÅ w n-zn h-1 º z n - w n dla h dostatecznie małych. Algorytm: obliczyliśmy aproksymację yhx n-1 L z krokiem h i chcemy przybliŝyć yhx n L = yhx n-1 + hl Obliczamy z n i w n z krokiem h. JeŜeli»z n - w n» e akceptujemy w n jako przybliŝenie yhx n L (albo zwiększamy krok. h Ø 2 h i sprawdzamy czy» z n - w n» e ) JeŜeli nie, to h Ø ÅÅÅÅ h i powtarzamy obliczenia, aŝ» z 2 n - w n» e. Typowy wybór metody dla z n : metoda Runge-Kutty 4 rzędu Typowy wybór metody dla w n : metoda Runge-Kutty 5 rzędu Algorytm Runge-Kutta-Fehlberga: modyfikacja metod Runge-Kutta tak, aby w metodzie 5 rzędu wykorzystać obliczone wcześniej współczynniki.
z n = y n-1 + hh25ê216 F 1 + 1408ê2565 F 3 + 2197ê4104 F 4-1ê5 F 5 L (4 rząd) w n = y n-1 + hh16ê135 F 1 + 6656ê12825 F 3 + 28561ê56430 F 4-9ê50 F 5 + 2ê55 F 6 L (5 rząd) gdzie F 1 = fhx n-1, y n-1 L F 2 = fhx n-1 + 1ê4 h, y n-1 + 1ê4 h F 1 L F 3 = fhx n-1 + 3ê8 h, y n-1 + 3ê32 h F 1 + 9ê32 h F 2 L F 4 = fhx n-1 + 12ê13 h, y n-1 + 1932ê2197 h F 1-7200ê2197 h F 2 + 7296ê2197 h F 3 L F 5 = fhx n-1 + h, y n-1 + 439ê216 h F 1-8 h F 2 + 3680ê513 h F 3-845ê4104 h F 4 L F 6 = fhx n-1 + 1ê2 h,. y n-1-8ê27 h F 1 + 2 h F 2-3544ê2565 h F 3 + 1859ê4104 h F 4-11ê40 h F 5 L Wzmianka o metodach wielokrokowych Def: JeŜeli w danej metodzie do przybliŝenia yhx n L uŝywamy poprzednio obliczonych wartości y n-1, y n-2,, y n-m, gdzie m jest ustalone to metodę nazywamy m-krokową Uwaga: Do tej pory omawialiśmy metody 1-krokowe Szkic idei: ÅÅÅÅÅÅÅ = fhx, yl ï Ÿ xn d x xn-1 xn =Ÿ xn-1 yhx n L = yhx n-1 L xn +Ÿ xn-1 fhx, yhxll d x. y n = y n-1 + h FHx n-1,..., x n-m, y n-1,..., y n-m L, n = 1, 2,... fhx, yhxll d x ï yhx n L - yhx n-1 L xn =Ÿ xn-1 fhx, yhxll d x or Do przybliŝonego obliczenia całki uzywamy np. interpolacji opartej na węzłach x n-1, x n-2,, x n-m i wartościach w węzłach 8y n-1, y n-2,, y n-m <. Przykład: metoda Adams-Bashfortha Interpolujemy fhx, yhxll = FHxL na węzłach: 8x n-1,, x n-m < przy pomocy wstecznego wzoru Newtona i całkujemy otrzymany wzór. W efekcie
y n = y n-1 + h m-1 k=0 a k k f n-1, gdzie a k stałe wyliczalne. Przypadki specjalne: m = 1: m = 2: y n = y n-1 + h fhx n-1, y n-1 L (Metoda Eulera) y n = y n-1 + h ÅÅÅÅ 2 @3 fhx n-1, y n-1 L - fhx n-2, y n-2 LD (2-krokowa m. Adams-Bashfortha) m = 3: y n = y n-1 + h ÅÅÅÅÅÅ 12 @23 fhx n-1, y n-1 L - 16 fhx n-2, y n-2 L + 5 fhx n-3, y n-3 LD (3-krokowa ) Uwaga: 1.W metodach wielokrokowych potrzebujemy więcej warunków startowych y 0, y 1,, y m. Wyliczamy je jakąś metodą 1-krokową (np. Runge-Kutta) 2. Lokalny błąd w metodzie Adams-Bashfortha jest o 1 wyŝszy od liczby kroków. Wzmianka o metodach predyktor-korektor Def: Metodę (1- lub wielokrokową) nazywamy otwartą (jawną) jeŝeli y n dane jest jawnym wzorem, np. y n = y n-1 + h m j=1 g j fhx n- j, y n- j L, odpowiednio zamkniętą (uwikłaną) jeŝeli y n dane jest przy pomocy równania, np. y n = y n-1 + h m j=0 d j fhx n- j, y n- j L. Uwaga: w metodzie zamkniętej w kaŝdym kroku musimy rozwiązać równanie (nieliniowe). Przykład metody zamkniętej dla ÅÅÅÅÅÅÅÅ d x = fhx, yl, yhx 0L = y 0 : yhx n L = yhx n-1 L xn +Ÿ xn-1 fhx, yl d x gdzie x n - x n-1 = h. Niech FHxL = fhx, yhxll i uŝywamy metody trapezów do przybliŝenia całki xn Ÿ xn-1 fhx, yl d x =Ÿ xn xn-1 FHxL d x º h ÅÅÅÅ 2 @FHx nl + FHx n-1 LD. Stąd y n = y n-1 + h ÅÅÅÅ 2 @ fhx n, y n L + fhx n-1, y n-1 LD. Błąd lokalny: E n T = - 1 ÅÅÅÅÅÅ 12 h3 F '' Hx n L Do rozwiązania równania na y n uŝywamy ciagu kolejnych przybliŝeń postaci y n HkL = y n-1 + h ÅÅÅÅ 2 @ fhx n, y n Hk-1L L + fhx n-1, y n-1 LD, k = 1, 2,.
Potrzebujemy dobrego punktu startowego: y H0L n. MoŜemy go uzyskać jaką metodą otwartą np. metodą Eulera y H0L n = y n-1 + h fhx n-1, y n-1 L. Czyli algorytm składa się z dwóch kroków: 1. Wyznaczenie y H0L n metodą otwartą (predyktor) 2. Poprawienie rozwiązania przy pomocy metody zamkniętej (korektor) i ciągu kolejnych przybliŝeń Uwagi. 1. Potrzebna analiza matemtayczna kiedy ciąg kolejnych przybliŝeń jest zbiezny. 2. Podobnie jak poprzednio moŝna zaprojektować metodę predyktor-korektor ze zmiennym krokiem. Równania wyŝszych rzędów i układy Równanie wyŝszego rzędu przekształcamy do układu 1 rzędu (równania wektorowego). Obserwacja: wiele metod przenosi się automatycznie na przypadek wektorowy (np. Runge-Kutta) (Nie)Stabilność numeryczna - ostrzeŝenie Przykład: ÅÅÅÅÅÅÅ = - y, yh0l = 2. Porównujemy metodę Eulera y d x n = y n-1 + h fhx n-1, y n-1 L, n = 1, 2, i metodę 2-krokową y n = y n-2 + 2 h fhx n-1, y n-1 L, n = 2, 3, w zadaniu przybliŝenia yh1l i yh10l. Dla y(1) mamy: n h= 10n 1 Euler Two step Error: Euler Error: Two step 1 0.1 0.697357 0.74862 0.038402 0.012861 2 0.01 0.732065 0.735889 0.0036942 0.000129771 3 0.001 0.735391 0.73576 0.000368033 1.29783 10 6 4 0.0001 0.735722 0.735759 0.0000367895 1.29783 10 8 5 0.00001 0.735755 0.735759 3.67881 10 6 1.29769 10 10 Dla yh10l. n h= 1 10 n Euler Two step Error: Euler Error: Two step 1 0.1 0.0000531228 107.514 0.0000376771 107.514 2 0.01 0.0000863425 1.10115 4.45736 10 6 1.10106 3 0.001 0.0000903467 0.011104 4.53168 10 7 0.0110132 4 0.0001 0.0000907545 0.000200932 4.53916 10 8 0.000110132
To nie jest wpływ round-off error! Aby zobaczyćto dokładniej analizujemy: ÅÅÅÅÅÅÅ d x = 30 x2 Hy - 1L, yh1l = 1. Łatwo policzyć, Ŝe yhxl ª 1. Stosujemy 2-krokową metode do x = 2. y n = y n-2 + 2 h fhx n-1, y n-1 L = y n-2 + 60 h x2 n-1 Hy n-1-1l gdzie x n = 1 + n h. y 0 = 1, niech y 1 = 1 + e gdzie»e»<< 1. Wybieramy h = 0.1 i obliczamy y 10 jakimś programem obliczeń symbolicznych k = 0 x k = 1. y k = 1. k = 1 x k = 1.1 y k = 1.+ε k = 2 x k = 1.2 y k = 1.+4.84ε k = 3 x k = 1.3 y k = 1.+28.8784ε k = 4 x k = 1.4 y k = 1.+200.058ε k = 5 x k = 1.5 y k = 1.+1597.33ε k = 6 x k = 1.6 y k = 1.+14576.1ε k = 7 x k = 1.7 y k = 1.+150856.ε k = 8 x k = 1.8 y k = 1.+1.75847 10 6 ε k = 9 x k = 1.9 y k = 1.+2.29407 10 7 ε k = 10 x k = 2. y k = 1.+3.33022 10 8 ε JeŜeli e = 10-8, to błąd:» yh10l - y 10» = 3.3302 (względny 333%!!) Metoda niestabilna numerycznie (częste zjawisko w metodach wielokrokowych) Dla porównania metoda Eulera z y 1 = 1 + e. k = 0 x k = 1. y k = 1. k = 1 x k = 1.1 y k = 1.+ε k = 2 x k = 1.2 y k = 1.+3.42ε k = 3 x k = 1.3 y k = 1.+13.2696ε k = 4 x k = 1.4 y k = 1.+58.1208ε k = 5 x k = 1.5 y k = 1.+285.955ε k = 6 x k = 1.6 y k = 1.+1572.75ε k = 7 x k = 1.7 y k = 1.+9625.23ε k = 8 x k = 1.8 y k = 1.+65259.1ε k = 9 x k = 1.9 y k = 1.+488138.ε k = 10 x k = 2. y k = 1.+4.01249 10 6 ε
Dla e = 10-8, mamy:» yh10l - y 10» = 0.04. Równania sztywne (stiff) Przykład: ÅÅÅÅÅÅÅ d x = l y, yh0l = 1, l œ. ( Rozwiązanie dokładne yhxl = el x ). Budujemy przybliŝenia metodą Eulera w 8x 0 = 1, x 1,, x N <: y n = y n-1 + h fhx n-1, y n-1 L = y n-1 + l h y n-1 =H1 + l hl y n-1, n = 1, 2,, N. Ciąg geometryczny, stąd jawny wzór : y n =H1 + l hl n, n = 0, 1, 2,, N. Niech l < 0. Rozwiązanie dokładne maleje, ale przybliŝone tylko wtedy gdy» 1 + l h» < 1 ï -1 < 1 + l h < 1. PoniewaŜ h > 0, to -1 < 1 + l h ï h < - ÅÅÅÅ 2. l Np. dla l = -100, potrzebny krok h < 0.05, przy większym ciąg rozbieŝny!. Rozwiązanie (wykres!) składa się z dwóch części: krótka, gdzie gwałtownie maleje (transient solution), a nstepnie jest prawie stałe (steady-state). Problemy, które mają tego typu rozwiązania nazywamy sztywnymi (geneza - sztywne spręŝyny). Potrzebne są specjalne metody numeryczne (na ogół ze zmiennym krokiem, aby niepotrzebnie nie tracić czasu w stanie stałym). Uwaga: zamknięta metoda Eulera jest tu stabilna bez względu na h! y n = y n-1 + h fhx n, y n L, n = 1, 2,, N. y n = y n-1 + l h y n ï y n = ÅÅÅÅÅÅÅÅÅÅÅÅ y n-1, n = 1, 2,, N. Warunek dla l < 0 1-l h 1 ÅÅÅÅÅÅÅÅÅÅÅÅÅÅ»1-l h» < 1 jest zawsze spełniony dla h > 0.