Numeriska metoder för ODE: Teori Vilka metoder har vi tagit upp? Euler framåt Euler bakåt Trapetsmetoden y k+ = y k + hf(t k, y k ), explicit y k+ = y k + hf(t k+, y k+ ), implicit y k+ = y k + h (f(t k, y k ) + f(t k+, y k+ )), explicit Heun ỹ k+ = y k + hf(t k, y k ) y k+ = y k + h (f(t k, y k ) + f(t k+, ỹ k+ )), explicit Klassiska R-K k = f(t k, y k ) k = f(t k+, y k + h k ) k 3 = f(t k+, y k + h k ) k 4 = f(t k+, y k + hk 3 ) y k+ = y k + h 6 (k + k + k 3 + k 4 ), explicit Alla är enstegsmetoder
Lokalt trunkeringsfel och noggrannhetsordning Definition: Det lokala trunkeringsfelet är det fel man gör med en numerisk metod när man utgår från det exakta värdet vid tiden t k och tar ett steg. Rent tekniskt får man lokala trunkeringsfelet τ genom att sätta in den exakta lösningen i metoden och ta skillnaden mellan VL och HL. Exempel : Euler framåt τ = y(t k+ ) y(t k ) hf(t k, y(t k )) På grund av differentialekvationen kan vi ersätta (t k, y(t k ) med y (t k ) vilket ger: τ = y(t k+ ) y(t k ) hy (t k ) Analysera lokala trunkeringsfelet genom taylorutveckling kring lämplig punkt. Här väljer vi att taylorutveckla kring t = t k. Notera att y(t k+ ) = y(t k + h) Koeff Term = Utveckling y(t k+ ) = y(t k ) + hy (t k ) + h y (t k ) + h3 6 y (t k ) +... y(t k ) = -y(t k ) h y (t k ) = hy (t k ) τ = 0 + 0 + h y (t k ) + h3 6 y (t k ) +... Vi säger att lokala trunkeringsfelet i det här fallet är O(h ). Storleksordningen ges av den första termen som inte försvinner. För en förenklad analys av det globala felet när man löst över ett helt intervall kan vi summera de lokala felen. (OBS! En strikt analys av det globala felet är mera komplicerad och ligger utanför kursens ram.) Antal steg man gör på ett intervall a t b är (b a)/h. Det betyder att summan av de lokala felen här blir (b a)/h O(h ) = O(h). Generellt: Om lokala trunkeringsfelet är O(h p+ ) så är globala felet O(h p ). Def: Om en metod har globalt fel O(h p ) så säger man att den har noggrannhetsordning p. Exempel : Euler framåt har alltså noggrannhetsordning. Exekveringstider Huvudsakliga beräknings arbetet ligger i evalueringen av f(t, y). Heun gör två funktionsevalueringar per steg medan Euler gör en.
Arbete Euler: W (arbetet för en funktionsevaluering) Arbete Heun : W Antal steg blir T/h. För ett fall där Euler behöver använda steg h = 0.0 och Heun klarar samma noggrannhet med steg h = 0. får vi: Euler: T/0.0 = 00T Heun: T/0. = 0T Totalt arbete Euler: 00 T W Heun: 0 T W Heun är i detta fall 5 ggr snabbare för motsvarande kvalitet på lösningen, trots att metoden behöver göra dubbelt så mycket arbete per beräkningspunkt. Den högre noggrannhetsordningen gör att det behövs betydligt färre beräkningspunkter, så att exekveringstiden blir kortare trots det större arbetet per punkt. Noggrannhetsordning för våra metoder Metod Noggrannhetsordning Euler framåt och bakåt Trapetsmetoden Heun klassiska R-K 4 Konsistens och konvergens Def: En numerisk metod för lösning av ODE är konsistent om Ψ[y, h]/h 0 då h 0. Def: En numerisk metod för lösning av ODE är konvergent om y k y(t k ) då h 0. Konvergens kräver både konsistens och stabilitet Man kan konstruera metoder som är konsistenta, men inte konvergerar mot den rätta lösningen även om h 0. Metoden måste också vara stabil: nästa föreläsning. 3
Kondition, stabilitet och testekvationen De numeriska ODE-lösare som vi använder i den här kursen är utformade för att lösa begynnelsevärdesproblem på formen: y (x) = f(t, y(t)), t 0 y(0) = a där a är ett givet begynnelsevärde. Vad händer om det är ett mätfel ε(0) i a, så att vi i stället för det exakta begynnelsevärdet använder y(0) = a + ε(0)? Låt y(t)+ε(t) vara den exakta lösningen till det störda problemet (alltså problemet med mätfel i begynnelsevärdet). Då gäller: (y(t) + ε(t)) = f(t, y(t) + ε(t)) Om vi taylorutvecklar f(t, y(t) + ε(t)) kring y(t) och sätter in i ovanstående ekvation, så får vi: y (t) + ε (t) = f(t, y(t)) + f (t, y(t))ε(t)) +... Eftersom y (x) = f(t, y(t)) så tar y (t) och f(t, y(t)) ut varandra i ovanstående uttryck. Slutsatsen blir att om vi från början har ett mätfel ε(0) så kommer den exakta lösningen till ODE-problemet med störda indata att vid tiden t skilja sig med ε(t) från den exakta lösningen y(t) till problemet med exakta indata och ε(t) uppfyller ungefär nedanstående differentialekvation: ε (t) = f (t, y(t))ε(t)) Notera att koefficienten f (t, y(t)) inte beror på ε(t). Ekvationen för hur felet fortplantas med tiden är alltså en lineär ODE. Utredningen ovan visar hur den exakta lösningen till differentialekvationen påverkas av en störning i indata. En ekvation där en liten störning i indata ger upphov till en stor störning i lösningen sägs vara illakonditionerad. Motsvarande egenskap hos den numeriska metoden kallas instabilitet. Det vill säga att om en liten störning i problemet ger en stor störning i den numeriska lösningen, så är den numeriska metoden instabil. För att analysera en numerisk metods stabilitetsegenskaper, så undersöker man hur den numeriska metoden påverkar lösningen till störningsekvationen ovan. I analysen ersätter man f (t, y(t)) med en konstant λ och man brukar använda variabelnamnet y i stället för ε: y (t) = λy(t). 4
Detta kallas för testekvationen. Konstanten λ kan vara ett komplext tal. Lösningarna till testekvationen är y(t) = y 0 e λt, så λ avgör hur fort lösningarna växer eller avtar, beroende på tecken. Stabilitetsanalys för Euler framåt Euler framåt y k+ = y k + hf(t k, y k ) För Euler framåt tillämpad på testekvationen får vi y k+ = y k + hλy k y k+ = y k ( + λh) Kom ihåg att i testekvationen står y för störningen. För stabilitet krävs att störningen avtar med tiden, det vill säga att y k+ < y k som enligt ovanstående uttryck skulle innebära att y k ( + λh) < y k. Slutsatsen blir att för att Euler framåt ska vara stabil krävs att: + λh < Detta kallas för stabilitetsvillkoret för denna metod. Eftersom λ är kan vara ett komplext tal kan stabilitetsvillkoret beskrivas som ett område i komplexa talplanet. En cirkel i komplexa talplanet med centrum i c och radie r ges av de komplexa tal z som uppfyller z c = r. Villkoret λh ( ) < uppfylls därför av de komplexa tal λh som finns i en cirkel med centrum i - och radie. Denna cirkel kallas för stabilitetsområdet för Euler framåt. Stabilitetsvillkor och stabilitetsområden Definition: Stabilitetsvillkor är det villkor på λh som gör att störningar inte växer (den numeriska lösningen till testekvationen inte växer). Definition: Stabilitetsområde är det geometriska område i komplexa planet med λh-värden som ger en till beloppet avtagande lösning till testekvationen. 5
Stabilitetsanalys Euler bakåt Euler bakåt För testekvationen får vi y k+ = y k + hf(t k+, y k+ ) y k+ = y k + hλy k+ y k+ ( λh) = y k y k+ = ( λh) y k Avtagande lösning y k+ < y k om λh >. Detta är stabilitetsvillkoret för metoden. Stabilitetsområdet utgörs av alla komplexa tal λh som finns utanför cirkeln med centrum i och radie. Om realdelen av λ < 0 är metoden stabil för alla värden på h. Detta kallas att metoden är A-stabil. Stabilitet för Heun Stabilitetsområdet för Heuns metod: Stabilitetsomrà de fã r Heuns metod.5 0. 0.5 Im λ h 0 0.5 0..5 3.5 3.5.5 0.5 0 0.5.5 Re λ h Stabilitetsanalys för Heuns metod: för testekvationen y k+ = y k + h (f(t k, y k ) + f(t k+, y k + hf(t k, y k )) y k+ = y k + h (λy k + λ(y k + hλy k )) = ( + λh + (λh) )y k 6
Stabilitet, avtagande lösning y k+ < y k om Styva problem + λh + (λh) < Av det vi hittills har sagt framgår att valet av steglängd beror på både den numeriska metodens noggrannhet och på dess stabilitetsegenskaper. Vi behöver välja en steglängd som gör att diskretiseringsfelet blir tillräckligt litet för att uppfylla den tolerans som användaren har satt. Dessutom måste steglängden uppfylla stabilitetsvillkoret för den numeriska metoden. Vi har också sett att explicita metoder har sämre stablitetsegenskaper än implicita metoder. Ett ODE-problem sägs vara styvt om det är sådant att en explicit metod på grund av stabilitetsvillkoret måste ta väsentligt kortare steg än vad som skulle krävas för att uppfylla toleransen. Av störningsanalysen ovan framgår att det är storleken på f (t, y(t)) som avgör hur stort λ kan bli i testekvationen. Ju större värde f (t, y(t)) kan få för ett visst ODE-problem, desto styvare är alltså problemet. (OBS! Ovanstående är en förenklad beskrivning. För ett system av ODE kommer frac f(t, y(t)) att vara en matris kommer λ att svara mot egenvärdena tiil den matrisen. Detta ligger utanför ramen för den här kursen.) 7