Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Czy błąd całkowity maleje gdy Dt maleje ? Czy maleje do zera?

Podobne prezentacje


Prezentacja na temat: "Czy błąd całkowity maleje gdy Dt maleje ? Czy maleje do zera?"— Zapis prezentacji:

1 Czy błąd całkowity maleje gdy Dt maleje ? Czy maleje do zera?
Jawny schemat Eulera eksperyment numeryczny problem początkowy: u’=lu, u(0)=1 z rozwiązaniem dokładnym u(t)=exp(lt) l=-100 Dt=0.001 dokładny jawny Euler e (błąd globalny) = dokładny - numeryczny

2 rząd zbieżności (dokładności)
określa jakość metody: jak szybko błąd globalny dla chwili T zmierza do zera w funkcji Dt jawna metoda Eulera = pierwszy rząd dokładności O(Dt) jest to minimalny rząd dokładności dla użytecznej metody zmniejszajmy krok czasowy, jaki wynik w chwili t=0.01 ? [1/e= ] n Dt un exp(-1)-un 10-2 10-3 10-4 10-5

3 zbieżność a błędy zaokrągleń (skończona dokładność arytmetyki
Definicja: Metody różnicowa jest zbieżna jeśli błąd globalny znika do zera w chwili T gdy z Dt do 0 zbieżność a błędy zaokrągleń (skończona dokładność arytmetyki zmiennoprzecinkowej)

4 błędy zaokrągleń a zbieżność
do tej pory zakładaliśmy, że błędy zaokrągleń nie ma (że arytmetyka dokładna) arytmetyka zmiennoprzecinkowa nie jest dokładna. pojedyncza precyzja: 32 bity podwójna : 64 bity arytmetyka 21 – bitowa błąd minimalny zmniejszanie kroku czasowego nie poprawi już wyniku

5 błędy zaokrągleń a metody różnicowe
rozwiązanie równania różniczkowego w chwili tn rozwiązanie równania różnicowego z dokładną arytmetyką rozwiązanie uzyskane z arytmetyką skończonej dokładności błąd całkowity błąd globalny (jak wcześniej zdefiniowano) błąd zaokrąglenia oszacowanie od góry błędu całkowitego

6 błędy zaokrągleń dają o sobie znać gdy wykonamy zbyt wiele kroków
błędy zaokrągleń a metody różnicowe oszacowanie od góry błędu całkowitego błąd błąd globalny dla schematu Eulera błąd zaokrągleń rzędu liczby wykonanych kroków, czyli 1/dt dt optymalny krok czasowy błędy zaokrągleń dają o sobie znać gdy wykonamy zbyt wiele kroków remedium: używać się schematów o wyższym rzędzie zbieżności niż pierwszy

7 dotyczy błędu globalnego a nie całkowitego
błędy zaokrągleń a metody różnicowe oszacowanie od góry błędu całkowitego błąd globalny dla schematu Eulera błąd całkowity błąd globalny błąd zaokrąglenia błąd zaokrągleń optymalny krok czasowy Definicja: Metody różnicowa jest zbieżna jeśli błąd globalny znika do zera w chwili T gdy z Dt do 0 uwaga: definicja zbieżności dotyczy błędu globalnego a nie całkowitego

8 wniosek: wyniki metody zbieżnej mogą eksplodować
Wróćmy do eksperymentu numerycznego i zwiększmy krok czasowy do Dt=0.05 problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp(-100t) tn un 0 1 0.1 8 do bezwzględnej stabilności zasygnalizować sztywność (do której powrócimy) wsteczny Euler sposoby iteracji dla wstecznego Eulera iteracja się rozbiega wniosek: wyniki metody zbieżnej mogą eksplodować dla zbyt dużego kroku czasowego

9 bezwzględna stabilność schematu różnicowego*
schemat różnicowy dla du/dt = f (dla danego f) i dla danego kroku czasowego jest bezwzględnie stabilny jeśli kolejne generowane przez niego wartości pozostają skończone. stabilność bezwzględna: określana zazwyczaj dla autonomicznego problemu liniowego bezwzględna stabilność jawnej metody Eulera wsp. wzmocnienia wyniki będą skończone, jeśli

10 z= lDt region bezwzględnej stabilności metody: zbiór par : krok czasowy Dt oraz zespolone wartości l dla których metoda jest bezwzględnie stabilna region bezwzględnej stabilności jawnej metody Eulera: zbiór punktów odległych od (-1,0) o nie więcej niż 1 Dt Im (l) koło o środku w (-1,0) i promieniu 1 -1 1 -2 Dt Re(l) -1 niestabilność bezwzględna metody dla prawej połowy p. Gaussa = nic dziwnego rozwiązania dokładne eksploduje do nieskończoności gdy t.

11 jawna metoda Eulera jest bezwzględnie stabilna jeśli |1+lDt|1
czyli dla rzeczywistego l <0 : Dt -2/ l Weźmy l = -1, u(0)=1, rozwiązanie u(t)=exp(-t), warunek stabilności bzwz: Dt2 Przepis Eulera: un+1=un(1-Dt) 6 Dt=1.2 Dt=2 Dt=2.5 . 6 dokładny Dt=0.5 Dt=0.9 4 ) t 2 . 4 ( ) t ( u u Dt=1 : wszędzie 0 . 2 - 2 . - 4 2 4 6 8 1 t 2 4 t 6 8 1 uwaga: rozwiązanie bezwzględnie stabilne (np. Dt=1 lub Dt=2) może być bardzo niedokładne lub wręcz - jakościowo złe = tutaj stałe i niemonotoniczne odpowiednio

12 pozbyć się ograniczenia na krok czasowy: niejawna metoda Eulera
metoda jawna niejawna jawna metoda Eulera funkcjonuje jak równanie nieliniowe (funkcjonuje jak podstawienie) „metoda odważna” „metoda ostrożna” zmiana u zgodna z prawą stroną w punkcie docelowym

13 niejawna metoda Eulera:
niejawny Euler problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp(-100t) jawny Euler tn un e(tn) 0 1 0 (6) (7) (629) tn un 0 1 0.1 8 itd.. exp(-100 tn) gaśnie znacznie szybciej niż 1/6n mało dokładne, ale zawsze to lepiej niż eksplodująca oscylacja jawnego Eulera

14 niejawna metoda Eulera:
region bezwzględnej stabilności Dt Im (l) 1 Dt Re(l) rejon bezwzględnej stabilności: dopełnienie pustego koła o środku w (1,0) i promieniu 1 -1

15 regiony stabilności metod Eulera
Dt Im (l) Dt Im (l) -1 1 1 -2 Dt Re(l) Dt Re(l) -1 -1 metoda Eulera jawna niejawna metoda Eulera

16 niejawna metoda Eulera:
region bezwzględnej stabilności Dt Im (l) 1 Re(l)<0 : niejawny Euler bezwzględnie stabilny dla dowolnego kroku czasowego takie metody: tzw. A-stabilne dla Re(l)>0, poza kołem metoda Eulera jest bezwzględnie stabilna mimo, że rozwiązania równania różniczkowego są niestabilne (patrz wyżej) w tym obszarze metoda jest nadstabilna daje skończone wartości, mimo że rozwiązania dokładne dąży do nieskończoności bezwzględna stabilność nie oznacza dobrej dokładności. W regionie stabilności dla Re(l)>0 błędy będą rosły w nieskończoność. Dt Re(l) -1

17 jak rozwiązać, gdy nie można rozwikłać równania (f nieliniowe względem u)
lub gdy f nieznane w formie wzoru iteracja funkcjonalna iterować do zbieżności jeśli się zbiegnie um=um-1 i mamy rozwiązanie równania nieliniowego

18 iteracja się nie zbiega 
iteracja funkcjonalna przykład problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp(-100t) tn un e(tn) 0 1 0 (6) (7) (629) kolejne oszacowania: 1, -4, 21, -104, 521, -2604, ... iteracja się nie zbiega  cały zysk z niejawności stracony bo nie potrafimy wykonać kroku

19 iteracja funkcjonalna przykład
iteracja się nie zbiega . zmniejszymy krok dt, zaczynając iterację od un-1 będziemy bliżej rozwiązania. Może się zbiegnie. dt=0.01 dt=0.001 1, 0.9, 0.91, 0.909, , , , (1,0,1,0,1,0) iteracja funkcjonalna się zbiega gdy Dt max|fu(t,u)| 1 (w otoczeniu u) u’=-100u, Dt 100 < 1 uwaga: w tej sytuacji jawny Euler jest bezwzględnie stabilny dla 2-krotnie większego kroku! [dla jawnego Eulera Dt 100 < 2] Z iteracją funkcjonalną stosować wstecznego Eulera nie ma sensu.

20 1, -4, 21, -104, 521, -2604, ... oscylująca rozbieżność - stłumimy ją:
problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp(-100t) 1, -4, 21, -104, 521, -2604, ... oscylująca rozbieżność - stłumimy ją: iteracja funkcjonalna – zapewniamy zbieżność modyfikując przepis iteracyjny zamiast: „mieszając” nowe i stare rozwiązania z wagą w, 0  w1 jeśli się zbiegnie – to do rozwiązania schematu niejawnego Zabieg podobny do “podrelaksacji”

21 wybierając w odpowiedni sposób wagę w: potrafimy
problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp(-100t) iterujemy u(dt) w=0.1 w=0.3 wybierając w odpowiedni sposób wagę w: potrafimy ustabilizować iterację i doprowadzić ją do zbieżności. w=0.2

22 tutaj optymalne byłoby w=1/2 (zbieżność w jednej iteracji)
dt=0.01 w=0 (1,0,1,0,1,0) dt=0.001 w=.2 (optymalne dla dt=0.05) w=1 1, 0.9, 0.91, 0.909, , , , 0.8,0.68, 0.608, , , , , , , 0.503, , , , , ..., 1/2 w=0.2 tutaj optymalne byłoby w=1/2 (zbieżność w jednej iteracji) dla w=.7 0.3,0.58,0.468,0.512,0.4948,0.5003,0.4998

23 tutaj optymalne byłoby w=.5
dt=0.01 w=0 (1,0,1,0,1,0) dt=0.001 w=.2 (optymalne dla dt=0.05) w=1 1, 0.9, 0.91, 0.909, , , , 0.8,0.68, 0.608, , , , , , , 0.503, , , , , ..., 1/2 w=0.2 tutaj optymalne byłoby w=.5 (zbieżność w jednej iteracji natychmiastowa) dla w=.7 0.3,0.58,0.468,0.512,0.4948,0.5003,0.4998 Problem: 1) w trzeba odpowiednio dobrać (mniejszy krok czasowy, w bliższe 1) 2) dla źle dobranego w iteracja może być wolnozbieżna Proces optymalizacji (np. dynamicznej) w może być kłopotliwy.

24 F(xn+Dx)=F(xn)+Dx F’(xn) F(xn+Dx)=0 xn+1=xn-F(xn)/F’(xn)
Na szczęście nie jesteśmy skazani na iterację funkcjonalną 2) metoda Newtona-Raphsona szukamy zera równania nieliniowego F(x) F(xn+Dx)=F(xn)+Dx F’(xn) F(xn+Dx)=0 xn+1=xn-F(xn)/F’(xn)

25 F(xn+Dx)=F(xn)+Dx F’(xn) F(xn+Dx)=0 xn+1=xn-F(xn)/F’(xn)
2) metoda Newtona-Raphsona szukamy zera równania nieliniowego F(xn+Dx)=F(xn)+Dx F’(xn) F(xn+Dx)=0 xn+1=xn-F(xn)/F’(xn)

26 niejawny schemat Eulera z metodą Newtona-Raphsona, zastosowanie
problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp(-100t) kolejne przybliżenia: Dt=0.05 (jawny Euler stabilny bezwzględnie dla Dt <0.02) 1, , zbieżność w jednej iteracji - f jest liniowa w u zakres zbieżności: w praktyce Dt znacznie większy niż w iteracji funkcjonalnej ale: niedostępne proste oszacowane przedziału zbieżności w praktyce iteracja Newtona – szybsza i szerzej zbieżna niż iteracja funkcjonalna

27 niejawny schemat Eulera z metodą Newtona-Raphsona, zastosowanie dla problemu nieliniowego
problem początkowy: dla równania: u’=u(u-1)

28 czerwone niejawny Euler z krokiem Dt=0.1 u(0)=0.8 iteracja dla u(Dt) ze startem w u(0):

29 niejawny schemat Eulera z metodą Newtona-Raphsona
gdy przepis funkcyjny nieznany (np. programujemy metodę dla dowolnego f ) można szacować z ilorazu różnicowego (poniżej centralny = dokładnie różniczkuje parabole) cena zastąpienia dokładnej pochodnej ilorazem różnicowym? przy osiągniętej zbieżności - nie zmieni rozwiązania! może tylko spowolnić iterację! dla naszego przykładu u’=u(u-1) centralny iloraz różnicowy zadziała dokładnie dla dowolnego du żeby przykład był ciekawszy: policzmy pochodną z wstecznego ilorazu różnicowego

30 u(0)=0.8, pierwszy krok t=Dt:
u’=f(u)=u(u-1) metoda Newtona dla pochodnej f liczonej numerycznie w każdej iteracji: dokładna pochodna iloraz wsteczny du=u/10 iloraz wsteczny du=u/2 przybliżenie w liczeniu pochodnej nie zmienia wyniku do którego iteracja zbiega bo: xn+1=xn-F(xn)/F’(xn) nieco spowalnia iterację numeryczne liczenie pochodnych w każdej iteracji może być kosztowne w praktyce można np. wstawić tutaj un-1 można również używać oszacowania pochodnej w wielu kolejnych iteracjach odnawiać pochodną gdy iteracja zwalnia

31 iteracja Newtona z pochodną
liczoną w poprzednim kroku (nieiterowaną) zamiast dla naszego przykładu: f(u)=u(u-1) z dt=0.1 dt=1 iterowana pochodna pochodna brana z punktu tn-1, un-1 dt=0.5 z poprzedniego kroku iterowana stara 0.8 0.4 iterowana brak zbieżności  bez różnicy! wolniej w mianowniku: 1-dt(2u-1) stara: 0.94 , doiterowana stara: 0.7 doiterowana: 0.806 stara 0.4 doiterowana 0.89

32 jawny schemat Eulera [globalny błąd O(Dt)]
niejawny schemat Eulera [globalny błąd O(Dt)] u(t) f(t,u) u(t) [t,u(t)] dokładne f(t,u) [t+ Dt,u(t+Dt)] [t+ Dt,u(t+Dt)] Dt t Dt t t u(t) f(t,u) Dt [t,u(t)] dokładne [t+ Dt,u(t+Dt)] przesunięcie wyliczane na podstawie średniej arytmetycznej z chwil t i t+Dt [wzór trapezów]

33 Punkt t2=0.5 u2 = ? [dokładnie: 1.1331]
dokładność wzóru trapezów a jawnego schematu Eulera: eksperyment Równanie: Warunek początkowy: u1=u(t1=0)=1 Rozwiązanie: Punkt t2=0.5 u2 = ? [dokładnie: ] jawny Euler Euler jawny jeden krok: u2=u1+Dt t1u1=u1= 1 u2 wzór trapezów u2=u1+(t1u1+t2u2) Dt /2 = u1+t2u2 Dt /2 u2:= u1+u2 /8 iteracja funkcjonalna wynik 8/7 TR wygląda na bardziej dokładny od E: niejawny Euler: 4/3=1.333 (pokazać) nieco gorzej niż jawny

34 Oszacować błąd lokalny wzoru trapezów
1. rozw. Taylora wstecz 2. dla dowolnej funkcji ciągłej f(t)=f(t+Dt)+O(Dt) (wstawimy, rząd błędu pozostanie trzeci) 3. Rozwiązać na u(t+Dt) Euler miał rząd obcięcia Dt2 pozbyć się go.

35 3. Rozwiązać na u(t+Dt) [przepisane]
4. Uśrednić z rozwinięciem Taylora do przodu 5. Wynik 6. Korzystamy z równania jawny i niejawny Euler – lokalny błąd rzędu drugiego (rząd dokładności 1) wzór trapezów – lokalny błąd rzędu trzeciego (rząd dokładności 2)

36 rozwiązanie u=exp(lt)
stabilność bezwzględną wzoru trapezów problem modelowy: WP: u(t=0)=1. rozwiązanie u=exp(lt) zbiór punktów na p. Gaussa, które są nie dalej od (-2,0) niż od (0,2)

37 Implementowana np. w SPICE.
region bzwz. stabilności wzoru trapezów Dt Im (l) Dt Re(l) Wniosek: dla l<0 wzór trapezów bezwzględnie stabilny dla dowolnego kroku czasowego ! A-stabilny druga bariera Dahlquista: maksymalny rząd dokładności metody A-stabilnej =2 schemat trapezów jest najdokładniejszą metodą A-stabilną spośród liniowych metod wielokrokowych Implementowana np. w SPICE.

38 region bzwz. stabilności Eulera: koło o promieniu 1 i środku (-1,0)
Dt Im (l) Dt Re(l) region bzwz. stabilności wzoru trapezów Dt Im (l) Dt Re(l) niejawna metoda Eulera: region bezwzględnej stabilności Dt Im (l) między metodami można przechodzić w sposób ciągły 1 Dt Re(l) q=0,1,1/2 – Euler jawny, niejawny i wzór trapezów odpowiednio w wykładzie na temat niejawnych formuł RK zobaczymy, że dokładność rzędu 2 uzyskana tylko dla q=1/2 region stabilności ? -1

39 wzór trapezów = używa prawej strony z poprzedniego kroku czasowego
iteracja funkcjonalna a wzór trapezów problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp(-100t) Dt=0.01 = graniczny dla zbieżności IF dla niejawnego Eulera 1,0, 0.5, 0.25, 0.375, , , , , , , ... , wzór trapezów = używa prawej strony z poprzedniego kroku czasowego z wagą 0.5 – co nieco stabilizuje iterację. niestety iteracja funkcjonalna dla Dt=0.02 już przestaje być zbieżna (+1,-1,+1,-1,itd..) wzór trapezów zwiększa zakres zbieżności iteracji dwukrotnie (wyraz podkreślony stabilizuje iteracje) ale to wciąż mało metoda Newtona-Raphsona pozostaje

40 ) jawne metody różnicowe wysokiej dokładności ?? poznane metody: 1) 2)
3) ) Poznane metody: jednokrokowe (1-3), jawna (1) i niejawne (2-3), pierwszego (1-2) i drugiego (3) rzędu dokładności Metody (2-3) A stabilne, metoda (2) nadstabilna jawne metody różnicowe wysokiej dokładności ??

41 jawne metody jednokrokowe wyższego rzędu dokładności niż jawny Euler
u’=f(t,u), u(0)=u0 rozwinięcie Taylora ponownie: liczymy pochodne: z RR. RR różniczkujemy po czasie czyli podobnie Zależnie od tego gdzie się zatrzymamy uzyskamy błąd lokalny zadanego rzędu

42 Zależnie od tego gdzie się zatrzymamy uzyskamy błąd lokalny zadanego rzędu np.
pomysł: mało przydatny w praktyce ze względu na konieczność analitycznego wyliczenia pochodnych cząstkowych f. Dla metod ogólnych: nie powinniśmy liczyć, że f jest dane wzorem

43 podejście alternatywne: inspirowane całkowaniem
prawa strona = funkcja tylko t z rozwiązaniem: jeśli zastąpimy całkę kwadraturą prostokątów z wywołaniem funkcji w lewym końcu przedziału u(tn)=u(tn-1)+Dt f(tn-1) + O(Dt2) - rozpoznajemy jawny schemat Eulera tn-1 tn kwadratura prostokątów z wywołaniem funkcji w prawym końcu przedziału u(tn)=u(tn-1)+Dt f(tn) + O(Dt2) - rozpoznajemy niejawny schemat Eulera tn-1 tn kwadratura trapezów u(tn)=u(tn-1)+Dt f(tn)/2+ Dt f(tn-1)/2 + O(Dt3) - rozpoznajemy niejawny schemat trapezów tn-1 tn

44 reguła punktu środkowego
wzór prostokątów z wywołaniem funkcji w środku przedziału (dokładny dla funkcji liniowej, znoszenie błędów) tn tn-1/ tn uogólniony wzór na równanie równania u’=f(t,u) ale - skąd rozwiązanie w środku przedziału? np. ze schematu Eulera: błąd lokalny Eulera O(Dt2), czy reguła punktu środkowego zachowa trzeci rząd błędu lokalnego?

45 sprawdźmy to rozważając bardziej ogólny schemat:
obliczone na początku kroku obliczone gdzieś w środku przedziału (tn-1,tn) z odpowiednio oszacowanym rozwiązaniem u dla tego t (wzór typu Eulera) jest to jawny dwustopniowy schemat Rungego-Kutty. potencjalna wyższa dokładność od jawnego Eulera kosztem dwóch wywołań f (podobnie jak we wzorze trapezów, ale RK: jawny) b1,b2,a,c – parametry metody –jakie muszą być aby RK2 (2 = rząd dokładności) reguła punktu środkowego: należy do tej klasy z b1=0, b2=1, c=1/2, a =1/2

46 u’=f(t,u) jak dobrać b1,b2,c,a ? – metodą brutalnej siły -
Jawne metody Rungego-Kutty dwustopniowe: wybór parametrów (*) jak dobrać b1,b2,c,a ? – metodą brutalnej siły - tak aby rozwinięcie Taylora metody zgadzało się z rozwinięciem Taylora dokładnego równania różniczkowego do wyrazów tak wysokiego rzędu jak to tylko możliwe u’=f(t,u) przypominamy: rozwinięcie Taylora dla funkcji dwóch zmiennych wstawiamy rozwiązanie dokładne u(tn), u(tn-1) do (*) i rozwijamy względem tn-1, un-1

47 to trzeba rozwinąć wstawmy k2 do rozwinięcia. Zachowajmy człony do Dt2: (wszystko liczone w tn-1,un-1) rozwinięcie Taylora rozwiązania dokładnego uzyskaliśmy kilka slajdów wcześniej czyli: rząd Dt: b1+b2=1, rząd Dt2: b2c=b2a=1/2 czyli reguła punktu środkowego: b1=0, b2=1, c=1/2, a =1/2 ma błąd lokalny rzędu O(Dt3) mamy metodę równie dokładną co wzór trapezów – ale jawną (co ma swoje zalety i wady) Wyższy rząd błędu do uzyskania tylko w metodach o większej niż 2 liczbie stopni

48 cztery parametry i trzy równania
b1+b2=1 b2c=b2a=1/2 - pozostaje swoboda w wyborze parametrów reguła punktu środkowego RK2 b1=0, b2=1, c=1/2, a =1/2 dwa zastosowania jawnego schematu Eulera oszacowanie wstępne w punkcie pośrednim (błąd lokalny rzędu drugiego) oszacowanie docelowe (błąd lokalny oszacowania: rzędu trzeciego) albo (przesunięty indeks) u(t) [t,u(t)] dokładne 1) Szacujemy metodą Eulera punkt środkowy [t+Dt/2,u(t+Dt/2)] korzystając z f(t,u) w lewym końcu przedziału 2) Wykorzystujemy wartość f w tym punkcie do wyliczenia zmiany y na całym przedziale Dt [t+Dt/2,y(t+Dt/2)] Dt t

49 inny wybór: b1=b2=1/2, wtedy musi a=c=1
RK punktu środkowego:b1+b2=1, b2c=b2a=1/2 inny wybór: b1=b2=1/2, wtedy musi a=c=1 metoda podobna do wzoru trapezów (ale jawna) u(t) 1) Szacujemy metodą Eulera punkt końcowy [t+Dt,u(t+Dt)] korzystając z f(t,u) w lewym końcu przedziału 2) krok z t do t+Dt wykonujemy biorąc średnią arytmetyczną z f na początku i końcu [t,u(t)] dokładne Dt t metoda RK2 trapezów

50 punkt środkowy b2=1, b1=0 [b1+b2]=1 czy ma sens b1=1, b2=0 ?
dla błędu lokalnego O(Dt3) potrzeba aby, rząd Dt: b1+b2=1, rząd Dt2: b2c=b2a=1/2 punkt środkowy b2=1, b1=0 [b1+b2]=1 czy ma sens b1=1, b2=0 ?

51 Metody Rungego-Kutty, forma ogólna
są to metody jednokrokowe, czyli można zapisać: metoda RK w s-odsłonach (stage) (unikamy słowa „krok”) z c A b wzory przedstawiane w formie tabel Butchera

52 Metody Rungego-Kutty, forma ogólna
czasem zapisywane w postaci: tutaj Ui – przybliżone rozwiązanie w chwili tn-1+ciDt zazwyczaj niższej dokładności niż rozwiązanie końcowe

53 jawne metody Rungego-Kutty
aij=0 dla ji obcięte sumowanie: odsłona i-ta wyliczana na podstawie tylko wcześniejszych odsłon historycznie wszystkie RK były jawne, uogólnienie okazało się przydatne dla problemów sztywnych

54 (dla każdej jawnej RK, zaczynamy – k1
Wyprowadzanie formuł RK (a,b,c) Rozwijamy rozwiązanie dokładne w szereg Taylora względem tn-1 Podstawiamy rozwiązanie dokładne do ogólnej formy RK i rozwijamy względem tn-1 Wartości parametrów a,b,c uzyskujemy z porównania. zazwyczaj w sposób niejednoznaczny najbardziej popularne: jawne formuły 4-etapowe RK4: o 4-tym stopniu zbieżności (4-tym rzędzie dokładności) i 5-tym rzędzie błędu lokalnego ogólna tabela Butchera: dla jawnych RK4 c1=0 (dla każdej jawnej RK, zaczynamy – k1 od wyliczenia prawej strony w kroku początkowym)

55 klasyczna formuła RK4: k2 u’ u(t) k3 k1 k4 4 wywołania f na krok, błąd lokalny O(Dt5) gdy f tylko funkcja czasu RK4 redukuje się do formuły Simpsona (dokładnie całkuje wielomiany trzeciego stopnia):

56 Jawne schematy RK dla układu równań różniczkowych
2 zmienne zależne u1, u2, 2 prawe strony f1, f2 2 równania, s-odsłon (i=1,2,...,s) zapis wektorowy un-1, un , f, U1, U2, ... UN są wektorami o 2 składowych

57 Tabela Butchera dla klasycznej jawnej RK4
1/2 1 1/6 1/3

58 Liczba kroków a rząd zbieżności jawnych metod RK: rząd 1 2 3 4 5 6 7 8
Dlaczego RK4 najbardziej popularna: Liczba kroków a rząd zbieżności jawnych metod RK: rząd minimalna liczba odsłon RK4 – wyjątkowo opłacalna RK1 – metoda RK w jednej odsłonie b1+b2=1, przy b1=1, b2=0 dostaniemy jawnego Eulera warunek a*b2=c*b2 =1/2 nie będzie spełniony jawny schemat Eulera to jawna metoda RK1

59 jawny Euler tabela Butchera b1=b2=1/2, a=c=1 RK2 trapezów 1/2 1
RK2 punktu środkowego 1/2 1

60 Szacowanie błędu lokalnego w metodach jednokrokowych
Po co? 1) W rachunkach numerycznych musimy znać oszacowanie błędu Aby ustawić krok czasowy tak, aby błąd był akceptowalny Gdy oszacowanie jest w miarę dokładne: można poprawić wynik

61 Oszacowanie błędu lokalnego w metodach jednokrokowych
W każdym kroku generujemy nowy błąd w rachunkach. Znamy jego rząd. dla RK: wstawialiśmy rozwiązanie dokładne do schematu i je rozwijaliśmy w szereg T. wybór b1=0, b2=1, c=1/2, a =1/2 dawał RK2 punktu środkowego Rozwijając do jednego rzędu wyżej z Dt uzyskamy oszacowanie błędu lokalnego dn= u(tn) - un [przy założeniu, że u(tn-1) = un-1] świetny wzór choć mało praktyczny

62 Oszacowanie błędu (lokalnego) w metodach jednokrokowych
metodą rzędu p z chwili tn-1 wykonujemy krok do tn może zależeć od tn-1 oraz un-1, ale nie zależy od Dt folia wcześniej szacowanie błędu: ekstrapolacja Richardsona (step doubling) osadzanie (embedding)

63 ekstrapolacja Richardsona
dwa kroki Dt: dostaniemy lepsze oszacowanie u(tn+1) tn-1 tn tn+1 Dt Dt jeden krok 2Dt: dostaniemy gorsze oszacowanie u(tn+1) tn-1 tn+1 2Dt szacujemy Cn z porównania obydwu rozwiązań

64 (lub, ze w jednym kroku zmienia się o O(Dt)]
ekstrapolacja Richardsona błąd lokalny u(tn)-un=dn jest: wykonujemy krok następny od tn do tn+1 odchylenie wyniku numerycznego od dokładnego u(tn+1)-un+1= g dn +dn+1 zakładamy, że krok jest na tyle mały, że stała błędu się nie zmienia Cn Cn+1 (lub, ze w jednym kroku zmienia się o O(Dt)] wtedy błąd lokalny popełniony w chwili tn+1 jest dn+1  dn. 2) gdy krok mały: współczynnik wzmocnienia błędu g  1 [np. du/dt=-lu jawny E. (1-lDt)] (błąd popełniony w kroku pierwszym nie jest istotnie wzmacniany) Przy tym założeniu: błąd po drugim kroku – suma błędów g dn+dn+1  2dn,

65 ekstrapolacja Richardsona
tn-1 tn tn+1 Dt Dt to chwili tn+1 dojdziemy z tn-1 w pojedynczym kroku 2Dt tn-1 tn+1 2Dt dostaniemy gorsze oszacowanie u(tn+1) chcemy poznać Cn (to + znajomość p da nam oszacowanie błędu): odejmujemy niebieskie wzory tak aby wyeliminować rozwiązanie dokładne (nam niedostępne)

66 ekstrapolacja Richardsona
błąd wykonany po dwóch krokach Dt wynosi więc: pierwszy wniosek: jeśli znamy rząd metody p to potrafimy go podnieść o jeden

67 ekstrapolacja Richardsona
podnosimy rząd dokładności metody „algorytm”

68 Euler (p=1) błąd lokalny O(Dt2)
Przykład: ekstrapolacja Richardsona r. dokładne: Euler (p=1) błąd lokalny O(Dt2) Euler po poprawce: błąd lokalny O(Dt3) kreski: RK2 punktu środkowego (p=2), b.lok. O(Dt3) znając rząd dokładności możemy radykalnie poprawić dokładność metody przy natdatku (50 procent) numeryki

69 ekstrapolacja Richardsona
Euler RK2 RK2 z odciętym błędem

70 Oszacowanie błędu lokalnego w metodach jednokrokowych
ekstrapolacja Richardsona (step doubling) osadzanie (embedding) cel: szacujemy błąd lokalny metody rzędu p przy pomocy lepszej metody, np. rzędu p obydwie metody szacują rozwiązanie w tych samych chwilach czasowych co daje oszacowanie błędu gorszej metody nie nadaje się do poprawiania schematu p po cóż zresztą poprawiać gdy mamy p+1

71 celem szacowania błędu nie jest poprawa wyniku,
(dla poprawy zawsze można Dt zmienić) lecz adaptacja Dt : stały krok zawsze może okazać się zbyt wielki albo zbyt mały. JAKI KROK CZASOWY SYMULACJI USTAWIĆ gdy coś ciekawego zdarza się tylko czasem ?

72 Dt(nowy)=(tol/E)1/(p+1) Dt
Automatyczna kontrola kroku czasowego dla metod jednokrokowych Program może sam dobierać krok czasowy w zależności od tego co dzieje się w symulacji. Chcemy utrzymać błąd na poziomie zbliżonym do parametru tol. nie większy aby zachować wymaganą dokładność, nie mniejszy aby nie tracić czasu na rachunki zbyt dokładne Szacujemy błąd lokalny E (ekstrapolacja Richardsona lub metody embedding) E=C[Dt]p+1 chcemy zmienić krok odpowiednio do naszych wymagań z Dt do Dt(nowy) tol=C[Dt(nowy)]p+1 Dt(nowy)=(tol/E)1/(p+1) Dt Dt(nowy)=(S tol /E)1/(p+1) Dt dla bezpieczeństwa S<1 wzór zwiększy zbyt mały krok i vice versa uwaga: błąd jest szacowany, zawsze warto dorzucić sztywne ograniczenia na Dt

73 do { } while ( t<T) Dt:=(S tol /E)1/(p+1) Dt
Automatyczna kontrola kroku czasowego dla metod jednokrokowych symulacja ustawiająca krok czasowy może wyglądać np. tak: u0= warunek początkowy t0=0 n=1 do { jeśli E<tol { tn:=tn+Dt n:=n+1 (oznacza akceptację wyniku) } Dt:=(S tol /E)1/(p+1) Dt } while ( t<T)

74 RK2 Dt x2 V2 Przykład: oscylator harmoniczny
używane oszacowanie błędu z RK2 Uwaga: tutaj rozwiązania nie poprawiamy przez ekstrapolacje tolerancja błędu obcięcia tol=0.1 RK2 start Dt x2 V2 tol=1e-2 tol=1e-3 algorytm ustawia minimalny krok czasowy gdy zmiany prędkości lub położenia są maksymalne

75 wyniki Konrada Rekiecia
RK4 – spirala się skręca zamiast rozkręcać E(t) tol=.1 RK2 RK4 przy założonej tolerancji RK4 wcale nie jest dokładniejsze od RK2

76 ... tylko pozwala stawiać dłuższe kroki
dt


Pobierz ppt "Czy błąd całkowity maleje gdy Dt maleje ? Czy maleje do zera?"

Podobne prezentacje


Reklamy Google