Jawny schemat Eulera Czy błąd całkowity maleje gdy t maleje ? Czy maleje do zera? eksperyment numeryczny problem początkowy: u’= u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp( t) t=0.001 dokładny jawny Euler e (błąd globalny) = dokładny - numeryczny
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 t jawna metoda Eulera = pierwszy rząd dokładności O( t) 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 t u n exp( ) u n 10 -5
Definicja: Metody różnicowa jest zbieżna jeśli błąd globalny znika do zera w chwili T gdy z t do 0 zbieżność a błędy zaokrągleń (skończona dokładność arytmetyki zmiennoprzecinkowej)
błędy zaokrągleń a zbieżność pojedyncza precyzja: 32 bity podwójna : 64 bity arytmetyka 21 – bitowa do tej pory zakładaliśmy, że błędy zaokrągleń nie ma (że arytmetyka dokładna) arytmetyka zmiennoprzecinkowa nie jest dokładna. błąd minimalny zmniejszanie kroku czasowego nie poprawi już wyniku
błędy zaokrągleń a metody różnicowe rozwiązanie równania różniczkowego w chwili t n 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
błąd zaokrągleń rzędu liczby wykonanych kroków, czyli 1/dt błąd globalny dla schematu Eulera błędy zaokrągleń a metody różnicowe oszacowanie od góry błędu całkowitego optymalny krok czasowy remedium: używać się schematów o wyższym rzędzie zbieżności niż pierwszy błędy zaokrągleń dają o sobie znać gdy wykonamy zbyt wiele kroków dt błąd
Definicja: Metody różnicowa jest zbieżna jeśli błąd globalny znika do zera w chwili T gdy z t do 0 błąd zaokrągleń błąd globalny dla schematu Eulera błędy zaokrągleń a metody różnicowe oszacowanie od góry błędu całkowitego optymalny krok czasowy błąd całkowity błąd globalny błąd zaokrąglenia uwaga: definicja zbieżności dotyczy błędu globalnego a nie całkowitego
Wróćmy do eksperymentu numerycznego i zwiększmy krok czasowy do t=0.05 do bezwzględnej stabilności zasygnalizować sztywność (do której powrócimy) wsteczny Euler sposoby iteracji dla wstecznego Eulera problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp( t) t n u n iteracja się rozbiega wniosek: wyniki metody zbieżnej mogą eksplodować dla zbyt dużego kroku czasowego
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
region bezwzględnej stabilności metody: zbiór par : krok czasowy t oraz zespolone wartości dla których metoda jest bezwzględnie stabilna region bezwzględnej stabilności jawnej metody Eulera: z= t t Re( ) t Im ( ) zbiór punktów odległych od (-1,0) o nie więcej niż 1 koło o środku w (-1,0) i promieniu 1 niestabilność bezwzględna metody dla prawej połowy p. Gaussa = nic dziwnego rozwiązania dokładne eksploduje do nieskończoności gdy t . -2 1
jawna metoda Eulera jest bezwzględnie stabilna jeśli |1+ t| 1 czyli dla rzeczywistego <0 : t -2/ Weźmy = -1, u(0)=1, rozwiązanie u(t)=exp(-t), warunek stabilności bzwz: t 2 Przepis Eulera: u n+1 =u n (1- t) u ( t ) dokładny t=0.5 t=0.9 t=1 : wszędzie u ( t ) t=1.2 t=2 t=2.5 uwaga: rozwiązanie bezwzględnie stabilne (np. t=1 lub t=2) może być bardzo niedokładne lub wręcz - jakościowo złe = tutaj stałe i niemonotoniczne odpowiednio tt
pozbyć się ograniczenia na krok czasowy: niejawna metoda Eulera metoda jawna.... niejawna jawna metoda Eulerafunkcjonuje jak równanie nieliniowe (funkcjonuje jak podstawienie) „metoda odważna”„metoda ostrożna” zmiana u zgodna z prawą stroną w punkcie docelowym
niejawna metoda Eulera: problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp( t) t n u n jawny Euler niejawny Euler t n u n e(t n ) (6) (7) (629) itd.. exp(-100 t n ) gaśnie znacznie szybciej niż 1/6 n mało dokładne, ale zawsze to lepiej niż eksplodująca oscylacja jawnego Eulera
niejawna metoda Eulera: region bezwzględnej stabilności t Re( ) t Im ( ) 1 rejon bezwzględnej stabilności: dopełnienie pustego koła o środku w (1,0) i promieniu 1
t Re( ) t Im ( ) 1 t Re( ) t Im ( ) -2 1 metoda Eulera jawna niejawna metoda Eulera regiony stabilności metod Eulera
t Re( ) t Im ( ) 1 niejawna metoda Eulera: region bezwzględnej stabilności Re( )<0 : niejawny Euler bezwzględnie stabilny dla dowolnego kroku czasowego takie metody: tzw. A-stabilne dla Re( 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( błędy będą rosły w nieskończoność.
jak rozwiązać, gdy nie można rozwikłać równania (f nieliniowe względem u) lub gdy f nieznane w formie wzoru 1)iteracja funkcjonalna iterować do zbieżności jeśli się zbiegnie u =u -1 i mamy rozwiązanie równania nieliniowego
problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp( t) iteracja funkcjonalna przykład 1, -4, 21, -104, 521, -2604,... kolejne oszacowania: iteracja się nie zbiega cały zysk z niejawności stracony bo nie potrafimy wykonać kroku t n u n e(t n ) (6) (7) (629)
iteracja funkcjonalna przykład dt=0.01 (1,0,1,0,1,0) dt= , 0.9, 0.91, 0.909, , , , iteracja funkcjonalna się zbiega gdy t max|f u (t,u)| 1 (w otoczeniu u) iteracja się nie zbiega . zmniejszymy krok dt, zaczynając iterację od u n-1 będziemy bliżej rozwiązania. Może się zbiegnie. u’=-100u, t 100 < 1 uwaga: w tej sytuacji jawny Euler jest bezwzględnie stabilny dla 2-krotnie większego kroku! dla jawnego Eulera t 100 < 2] Z iteracją funkcjonalną stosować wstecznego Eulera nie ma sensu.
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 1, -4, 21, -104, 521, -2604,... problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp( t) oscylująca rozbieżność - stłumimy ją: Zabieg podobny do “podrelaksacji”
problem początkowy: u’=-100u, u(0)=1, dt=0.05 z rozwiązaniem dokładnym u(t)=exp( t) iterujemy u(dt) w=0.1 w=0.2 w=0.3 wybierając w odpowiedni sposób wagę w: potrafimy ustabilizować iterację i doprowadzić ją do zbieżności.
dt=0.01 (1,0,1,0,1,0) dt= , 0.9, 0.91, 0.909, , , , w=0 w=1 0.8,0.68, 0.608, , , , , , , 0.503, , , , ,..., 1/2 w=.2 (optymalne dla dt=0.05) 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, w=0.2
dt=0.01 (1,0,1,0,1,0) dt= , 0.9, 0.91, 0.909, , , , w=0 w=1 0.8,0.68, 0.608, , , , , , , 0.503, , , , ,..., 1/2 w=.2 (optymalne dla dt=0.05) 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, w=0.2 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.
Na szczęście nie jesteśmy skazani na iterację funkcjonalną 2)metoda Newtona-Raphsona szukamy zera równania nieliniowegoF(x) F(x n + x)=F(x n )+ x F’(x n ) F(x n + x)=0 x n+1 =x n -F(x n )/F’(x n )
2)metoda Newtona-Raphsona szukamy zera równania nieliniowego F(x n + x)=F(x n )+ x F’(x n ) F(x n + x)=0 x n+1 =x n -F(x n )/F’(x n )
niejawny schemat Eulera z metodą Newtona-Raphsona, zastosowanie problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp( t) kolejne przybliżenia: t=0.05 (jawny Euler stabilny bezwzględnie dla t <0.02) 1, , zbieżność w jednej iteracji - f jest liniowa w u zakres zbieżności: w praktyce t 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
niejawny schemat Eulera z metodą Newtona-Raphsona, zastosowanie dla problemu nieliniowego problem początkowy: dla równania: u’=u(u-1)
czerwone niejawny Euler z krokiem t=0.1 u(0)=0.8 iteracja dla u( t) ze startem w u(0):
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
dokładna pochodna u’=f(u)=u(u-1) metoda Newtona dla pochodnej f liczonej numerycznie w każdej iteracji: u(0)=0.8, pierwszy krok t= t: iloraz wsteczny du=u/10 iloraz wsteczny du=u/ numeryczne liczenie pochodnych w każdej iteracji może być kosztowne przybliżenie w liczeniu pochodnej nie zmienia wyniku do którego iteracja zbiega bo: x n+1 =x n -F(x n )/F’(x n ) nieco spowalnia iterację w praktyce można np. wstawić tutaj u n-1 można również używać oszacowania pochodnej w wielu kolejnych iteracjach odnawiać pochodną gdy iteracja zwalnia
dla naszego przykładu: f(u)=u(u-1) z dt=0.1 iterowana pochodna pochodna brana z punktu t n-1, u n bez różnicy! dt=0.5 iterowana z poprzedniego kroku dt=1 iterowana stara wolniej brak zbieżności iteracja Newtona z pochodną liczoną w poprzednim kroku (nieiterowaną) w mianowniku: 1-dt(2u-1) stara: 0.94, doiterowana stara: 0.7 doiterowana: stara 0.4 doiterowana 0.89 zamiast
t u(t) f(t,u) tt [t,u(t)] dokładne [t+ t,u(t+ t)] jawny schemat Eulera [globalny błąd O( t)] t u(t) f(t,u) tt [t+ t,u(t+ t)] niejawny schemat Eulera [globalny błąd O( t)] t u(t) f(t,u) tt [t,u(t)] dokładne [t+ t,u(t+ t)] przesunięcie wyliczane na podstawie średniej arytmetycznej z chwil t i t+ t [wzór trapezów]
dokładność wzóru trapezów a jawnego schematu Eulera: eksperyment Równanie: Warunek początkowy: u 1 =u(t 1 =0)=1 Rozwiązanie: Punkt t 2 =0.5 u 2 = ? [dokładnie: ] Euler jawny jeden krok: u 2 =u 1 + t t 1 u 1 =u 1 = 1 jawny Euler u2u2 wzór trapezów u 2 =u 1 +(t 1 u 1 +t 2 u 2 ) t /2 = u 1 +t 2 u 2 t /2 u 2 := u 1 +u 2 /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
Oszacować błąd lokalny wzoru trapezów 1. rozw. Taylora wstecz 2. dla dowolnej funkcji ciągłej f(t)=f(t+ t)+O( t) (wstawimy, rząd błędu pozostanie trzeci) 3. Rozwiązać na u(t+ t) Euler miał rząd obcięcia t 2 pozbyć się go.
3. Rozwiązać na u(t+ t) [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)
stabilność bezwzględną wzoru trapezów problem modelowy: WP: u(t=0)=1. rozwiązanie u=exp( t) zbiór punktów na p. Gaussa, które są nie dalej od (-2,0) niż od (0,2)
Wniosek: dla <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. t Re( ) t Im ( ) region bzwz. stabilności wzoru trapezów
t Re( ) t Im ( ) region bzwz. stabilności Eulera: koło o promieniu 1 i środku (-1,0) t Re( ) t Im ( ) region bzwz. stabilności wzoru trapezów t Re( ) t Im ( ) 1 niejawna metoda Eulera: region bezwzględnej stabilności =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 =1/2 region stabilności ? między metodami można przechodzić w sposób ciągły
problem początkowy: u’=-100u, u(0)=1 z rozwiązaniem dokładnym u(t)=exp( t) iteracja funkcjonalna a wzór trapezów t=0.01 = graniczny dla zbieżności IF dla niejawnego Eulera 1,0, 0.5, 0.25, 0.375, , , , , , ,..., niestety iteracja funkcjonalna dla t=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 wzór trapezów = używa prawej strony z poprzedniego kroku czasowego z wagą 0.5 – co nieco stabilizuje iterację.
jawne metody różnicowe wysokiej dokładności ?? 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 poznane metody: )
rozwinięcie Taylora ponownie: jawne metody jednokrokowe wyższego rzędu dokładności niż jawny Euler u’=f(t,u), u(0)=u 0 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
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
podejście alternatywne: inspirowane całkowaniem prawa strona = funkcja tylko t z rozwiązaniem: t n-1 t n jeśli zastąpimy całkę kwadraturą prostokątów z wywołaniem funkcji w lewym końcu przedziału u(t n )=u(t n-1 )+ t f(t n-1 ) + O( t 2 ) - rozpoznajemy jawny schemat Eulera t n-1 t n kwadratura prostokątów z wywołaniem funkcji w prawym końcu przedziału u(t n )=u(t n-1 )+ t f(t n ) + O( t 2 ) - rozpoznajemy niejawny schemat Eulera t n-1 t n kwadratura trapezów u(t n )=u(t n-1 )+ t f(t n )/2+ t f(t n-1 )/2 + O( t 3 ) - rozpoznajemy niejawny schemat trapezów
t n-1 t n-1/2 t n wzór prostokątów z wywołaniem funkcji w środku przedziału (dokładny dla funkcji liniowej, znoszenie błędów) uogólniony wzór na równanie równania u’=f(t,u) reguła punktu środkowego ale - skąd rozwiązanie w środku przedziału? np. ze schematu Eulera: błąd lokalny Eulera O( t 2 ), czy reguła punktu środkowego zachowa trzeci rząd błędu lokalnego?
sprawdźmy to rozważając bardziej ogólny schemat: obliczone gdzieś w środku przedziału (t n-1,t n ) 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) reguła punktu środkowego:należy do tej klasy z b 1 =0, b 2 =1, c=1/2, a =1/2 b1,b2,a,c – parametry metody –jakie muszą być aby RK2 (2 = rząd dokładności) obliczone na początku kroku
Jawne metody Rungego-Kutty dwustopniowe: wybór parametrów jak dobrać b 1,b 2,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 przypominamy: rozwinięcie Taylora dla funkcji dwóch zmiennych u’=f(t,u) wstawiamy rozwiązanie dokładne u(t n ), u(t n-1 ) do (*) i rozwijamy względem t n-1, u n-1 (*)
to trzeba rozwinąć (wszystko liczone w t n-1,u n-1 ) wstawmy k 2 do rozwinięcia. Zachowajmy człony do t 2: rozwinięcie Taylora rozwiązania dokładnego uzyskaliśmy kilka slajdów wcześniej czyli: rząd t: b 1 +b 2 =1, rząd t 2 : b 2 c=b 2 a=1/2 czyli reguła punktu środkowego: b 1 =0, b 2 =1, c=1/2, a =1/2 ma błąd lokalny rzędu O( t 3 ) 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
cztery parametry i trzy równania b 1 +b 2 =1 b 2 c=b 2 a=1/2- pozostaje swoboda w wyborze parametrów reguła punktu środkowego RK2 albo (przesunięty indeks) t u(t) tt [t,u(t)] dokładne [t+ t/2,y(t+ t/2)] 1) Szacujemy metodą Eulera punkt środkowy [t+ t/2,u(t+ t/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 t dwa zastosowania jawnego schematu Eulera b 1 =0, b 2 =1, c=1/2, a =1/2 oszacowanie wstępne w punkcie pośrednim (błąd lokalny rzędu drugiego) oszacowanie docelowe (błąd lokalny oszacowania: rzędu trzeciego)
inny wybór: b 1 =b 2 =1/2, wtedy musi a=c=1 RK punktu środkowego:b 1 +b 2 =1, b 2 c=b 2 a=1/2 metoda podobna do wzoru trapezów (ale jawna) t u(t) tt [t,u(t)] dokładne 1) Szacujemy metodą Eulera punkt końcowy [t+ t,u(t+ t)] korzystając z f(t,u) w lewym końcu przedziału 2) krok z t do t+ t wykonujemy biorąc średnią arytmetyczną z f na początku i końcu metoda RK2 trapezów
punkt środkowy b2=1, b1=0 [b1+b2]=1 czy ma sens b1=1, b2=0 ? dla błędu lokalnego O( t 3 ) potrzeba aby, rząd t: b 1 +b 2 =1, rząd t 2 : b 2 c=b 2 a=1/2
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 wzory przedstawiane w formie tabel Butchera c A b
czasem zapisywane w postaci: tutaj U i – przybliżone rozwiązanie w chwili t n-1 +c i t zazwyczaj niższej dokładności niż rozwiązanie końcowe Metody Rungego-Kutty, forma ogólna
jawne metody Rungego-Kutty a ij =0 dla j i jawne: 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
Wyprowadzanie formuł RK (a,b,c) 1)Rozwijamy rozwiązanie dokładne w szereg Taylora względem t n-1 2)Podstawiamy rozwiązanie dokładne do ogólnej formy RK i rozwijamy względem t n-1 3)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 c 1 =0 (dla każdej jawnej RK, zaczynamy – k 1 od wyliczenia prawej strony w kroku początkowym)
klasyczna formuła RK4: u(t) k1k1 k2k2 k3k3 k4k4 u’ 4 wywołania f na krok, błąd lokalny O( t 5 ) gdy f tylko funkcja czasu RK4 redukuje się do formuły Simpsona (dokładnie całkuje wielomiany trzeciego stopnia):
Jawne schematy RK dla układu równań różniczkowych 2 zmienne zależne u 1, u 2, 2 prawe strony f 1, f 2 2 równania, s-odsłon (i=1,2,...,s) zapis wektorowy u n-1, u n, f, U 1, U 2,... U N są wektorami o 2 składowych
/ /61/3 1/6 Tabela Butchera dla klasycznej jawnej RK4
Liczba kroków a rząd zbieżności jawnych metod RK: rząd minimalna liczba odsłon RK4 – wyjątkowo opłacalna Dlaczego RK4 najbardziej popularna: RK1 – metoda RK w jednej odsłonie b1+b2=1, przy b 1 =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
jawny Euler RK2 trapezów tabela Butchera b 1 =b 2 =1/2, a=c=1 RK2 punktu środkowego 000 1/2 0 01
Szacowanie błędu lokalnego w metodach jednokrokowych Po co? 1)W rachunkach numerycznych musimy znać oszacowanie błędu 2)Aby ustawić krok czasowy tak, aby błąd był akceptowalny 3)Gdy oszacowanie jest w miarę dokładne: można poprawić wynik
Oszacowanie błędu lokalnego w metodach jednokrokowych wybór b 1 =0, b 2 =1, c=1/2, a =1/2 dawał RK2 punktu środkowego 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. Rozwijając do jednego rzędu wyżej z t uzyskamy oszacowanie błędu lokalnego d n = u(t n ) - u n [przy założeniu, że u(t n-1 ) = u n-1 ] świetny wzór choć mało praktyczny
Oszacowanie błędu (lokalnego) w metodach jednokrokowych 1)ekstrapolacja Richardsona (step doubling) 2)osadzanie (embedding) może zależeć od t n-1 oraz u n-1, ale nie zależy od t metodą rzędu p z chwili t n-1 wykonujemy krok do t n folia wcześniej szacowanie błędu:
t n-1 t n t n+1 t n-1 t n+1 tt tt t ekstrapolacja Richardsona dwa kroki t: dostaniemy lepsze oszacowanie u(t n+1 ) jeden krok 2 t: dostaniemy gorsze oszacowanie u(t n+1 ) szacujemy C n z porównania obydwu rozwiązań
błąd lokalny u(t n )-u n =d n jest: wykonujemy krok następny od t n do t n+1 1)zakładamy, że krok jest na tyle mały, że stała błędu się nie zmienia C n C n+1 (lub, ze w jednym kroku zmienia się o O( t)] wtedy błąd lokalny popełniony w chwili t n+1 jest d n+1 d n. 2) gdy krok mały: współczynnik wzmocnienia błędu 1 [np. du/dt=- u jawny E. (1- t)] (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 d n +d n+1 2d n, ekstrapolacja Richardsona odchylenie wyniku numerycznego od dokładnego u(t n+1 )-u n+1 = d n +d n+1
to chwili t n+1 dojdziemy z t n-1 w pojedynczym kroku 2 t t n-1 t n t n+1 t n-1 t n+1 tt tt t chcemy poznać C n (to + znajomość p da nam oszacowanie błędu): odejmujemy niebieskie wzory tak aby wyeliminować rozwiązanie dokładne (nam niedostępne) dostaniemy gorsze oszacowanie u(t n+1 ) ekstrapolacja Richardsona
błąd wykonany po dwóch krokach t wynosi więc: pierwszy wniosek: jeśli znamy rząd metody p to potrafimy go podnieść o jeden
ekstrapolacja Richardsona podnosimy rząd dokładności metody „algorytm”
Przykład: Euler po poprawce: błąd lokalny O( t 3 ) kreski: RK2 punktu środkowego (p=2), b.lok. O( t 3 ) ekstrapolacja Richardsona znając rząd dokładności możemy radykalnie poprawić dokładność metody przy natdatku (50 procent) numeryki r. dokładne: Euler (p=1) błąd lokalny O( t 2 )
Euler RK2 RK2 z odciętym błędem ekstrapolacja Richardsona
Oszacowanie błędu lokalnego w metodach jednokrokowych 1)ekstrapolacja Richardsona (step doubling) 2)osadzanie (embedding) cel: szacujemy błąd lokalny metody rzędu p przy pomocy lepszej metody, np. rzędu p+1 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
JAKI KROK CZASOWY SYMULACJI USTAWIĆ gdy coś ciekawego zdarza się tylko czasem ? celem szacowania błędu nie jest poprawa wyniku, (dla poprawy zawsze można t zmienić) lecz adaptacja t : stały krok zawsze może okazać się zbyt wielki albo zbyt mały.
Automatyczna kontrola kroku czasowego dla metod jednokrokowych t(nowy)=(S tol /E) 1/(p+1) t dla bezpieczeństwa S<1 t(nowy)=(tol/E) 1/(p+1) t Program może sam dobierać krok czasowy w zależności od tego co dzieje się w symulacji. Szacujemy błąd lokalny E (ekstrapolacja Richardsona lub metody embedding) 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 E=C[ t] p+1 chcemy zmienić krok odpowiednio do naszych wymagań z t do t(nowy) tol=C[ t(nowy)] p+1 wzór zwiększy zbyt mały krok i vice versa uwaga: błąd jest szacowany, zawsze warto dorzucić sztywne ograniczenia na t
Automatyczna kontrola kroku czasowego dla metod jednokrokowych jeśli E<tol { tn:=tn+ t n:=n+1 (oznacza akceptację wyniku) } t:=(S tol /E) 1/(p+1) t do { } while ( t<T) symulacja ustawiająca krok czasowy może wyglądać np. tak: u 0 = warunek początkowy t 0 =0 n=1
Przykład: oscylator harmoniczny używane oszacowanie błędu z RK2 Uwaga: tutaj rozwiązania nie poprawiamy przez ekstrapolacje tol=1e-2 tol=1e-3 start x2x2 V2V2 tt algorytm ustawia minimalny krok czasowy gdy zmiany prędkości lub położenia są maksymalne RK2 tolerancja błędu obcięcia tol=0.1
wyniki Konrada Rekiecia RK2 tol=.1 RK4 E(t) RK4 – spirala się skręca zamiast rozkręcać przy założonej tolerancji RK4 wcale nie jest dokładniejsze od RK2
dt... tylko pozwala stawiać dłuższe kroki
u(0)=0 proste równanie traktowane jawnym schematem Eulera
niech >> 0 szybkozmienna składowa wolnozmienna prosty problem nieco skomplikujemy
rozwiązanie krok dt=0.02 jest bardzo drobny w porównaniu ze skalą zmienności składowej parabolicznej
rozwiązanie dokładne dt=0.019 dt=0.02 dt=0.021 krok dt=0.02 okazuje się zbyt długi gdy włączyć składową szybkozmienną nawet tam, gdy znika ona z rozwiązania
rozwiązanie dokładne dt=0.019 dt=0.02 dt=0.021 część szybkozmienna gaśnie szybko, ale w schemacie jawnym Eulera nakłada ograniczenie na krok czasowy : u’=- u =100 dt<0.02, gdy szybkozmienna składowa zaniknie dt jest bardzo mały w porównaniu do skali zmienności u(t)
t Re( ) t Im ( ) 1 t Re( ) t Im ( ) -2 1 metoda Eulera jawna niejawna metoda Eulera regiony stabilności metod Eulera w metodzie niejawnej problemu ze stabilnością bezwzględna nie ma...
niejawna metoda Eulera: zastosowanie do problemu sztywnego dokładny dt=0.02 dt=0.04 rozwiązania są stabilne i dokładne dla dużych t nawet gdy dt duże dla małych t można wstawić mniejsze dt, potem krok zwiększyć
Problemy sztywne (drętwe) (stiff, stiffness) Problem jest praktyczny i ścisłej definicji, która byłaby użyteczna, nie ma. Jedna z możliwych: problem jest sztywny, gdy stosując schemat jawny musimy przyjąć krok czasowy bardzo mały w porównaniu ze skalą zmienności funkcji. RRZ jest problemem sztywnym gdy: 1.Problem jest charakteryzowany bardzo różnymi skalami czasowymi 2.Stabilność bzwz nakłada silniejsze ograniczenia na krok czasowy niż dokładność. 3.Metody jawne się nie sprawdzają. niech >> 0 szybkozmienna składowa wolnozmienna
Problemy sztywne (drętwe) (stiff) Ogólna postać układu równań pierwszego rzędu wektor R n fcja R R n R Tylko niekiedy można podać rozwiązanie w zamkniętej formie analitycznej. Można, np. dla jednorodnego problemu liniowego problem najczęściej spotykany dla układ równań różniczkowych opisujących sprzężone procesy o bardzo różnych skalach czasowych
gdzie np. problem rozpadu promieniotwórczego Izotop 2 o stałej rozpadu 2 rozpada się promieniotwórczo na inny izotop 1 o stałej rozpadu 1 c j liczone z warunku początkowego y 1 (0)=0 y 2 (0)=1 dla niezdegenerowanych wartości własnych problemy sztywne wartości własne – 1, – 2 rozłożyć warunek początkowy na wektory własne
problemy sztywne gdy duża rozpiętość między minimalną a maksymalną wartością własną | max / min |>>1: wektor własny który odpowiada największej wartości własnej wygaśnie najprędzej, ale (dla metod jawnych) pozostawi najsilniejsze ograniczenie dla kroku czasowego (np. Euler, RK2 dt<2/| max |) jesteśmy zmuszeni przyjąć malutki krok w porównaniu z przebiegiem rozwiązania (w przeciwnym wypadku eksplozja) duże różnice skal czasowych
podobny do poprzedniego problem sztywny z liniowego równania drugiego rzędu o bliskich współczynnikach następny przykład: wartości / wektory własne: -1 / [-1,1] T / [1,-1000] T bardzo różne skale czasowe u’’+1001u’+1000u=0
szczególnie dotkliwy przypadek: równanie niejednorodne (bez rozwiązania analitycznego) Rozwiązanie będzie miało postać: stan przejściowy (wszystkie zgasną) stan ustalony wolnozmienny Na czym polega problem? : Rozwiązując problem numerycznie metodą jawną (Euler, RK2) musimy przyjąć krok czasowy t < 2/| _max| aby uniknąć eksplozji rozwiązań nawet gdy wszystkie wyrazy z powyższej sumy w rozwiązaniu znikają problemy sztywne załóżmy, że wartości własne A są ujemne
y 2 (0)=1 y 1 (0)=0 1 =1/10 2 =1/ bardzo wolno się rozpada [taka i większa rozpiętość lambd typowa również dla reakcji chemicznych spotykana również dla układów elektrycznych] y 2 – izotop matka wolno rozpadająca się na y 1 y 1 – izotop szybko rozpadający się, niejednorodność: dodatkowo pewna ilość jest w stałym tempie doprowadzana z zewnątrz przy zaniedbywalnej wielkości 2 y 1 =0.5 spełnia pierwsze równanie
tol=0.001 t t tt automatyczna kontrola kroku czasowego dla jawnego RK2 z krokiem czasowym ustawianym przez ekstrapolację Richardsona tol= w obydwu przypadkach t tylko chwilowo przekracza krytyczną wartość 2/(1/10)=20 zęby: zaakceptowane błędy y y t 1 =1/10 2 =1/10 000
RK / 1
Wzór trapezów stały krok, bardzo dłuuugi stały t=200 nic złego się nie dzieje ze stabilnością w stanie „ustalonym” Zastosujmy metodę A-stabilną = wzór trapezów (p=2) t y
Wzór trapezów i krok automatycznie dobierany przez ekstrapolację Richardsona tol=0.01 kropki -tam gdzie postawiony krok Krok czasowy – zmienność 4 rzędów wielkości. raptem 10 kroków i załatwione! zamiast 10 4 kroków RK4 t t y y
trapezy (najdokładniejsza metoda A-stabilna spośród wielokrokowych) tt maksymalnie parę tysięcy metoda trapezów: jako A-stabilna radzi sobie nieźle z doborem kroku czasowego w problemach sztywnych – ale jest stosunkowo mało dokładna dokładniejsza A-stabilna pozwoliłaby stawiać jeszcze dłuższe kroki niestety = dokładniejszej A-stabilnej tej w klasie metod (liniowe wielokrokowe) nie ma dlatego : niejawne metody RK (jednokrokowe, nieliniowe) poziom jawnych RK t y t z tolerancją
trapezy z tolerancją (najdokładniejsza metoda A-stabilna spośród wielokrokowych) niejawna dwustopniowa metoda RK (rzędu 4) z tolerancją (A-stabilna) tt tt maksymalnie parę tysięcy maksymalnie kilkadziesiąt tysięcy t t tt y y