Numeriska metoder för ODE: Teori 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. Dvs, lokala trunkeringsfelet är skillnaden mellan exacta värden y(t k+1 ) och numeriska värden y k+1. Analysera lokala trunkeringsfelet genom Taylorutveckling kring lämplig punkt. Exempel 1: Euler framåt Taylor: y(t k+1 ) = y(t k ) + hy (t k )) + O(h 2 ) (1) Euler framåt: y k+1 = y k + hf(t k, y k ) (2) Subtrahera (2) från (1): y(t k+1 ) y k+1 = y(t k ) + hy (t k )) + O(h 2 ) y k hf(t k, y k ) = y(t k ) y k + hy (t k )) hf(t k, y k ) + O(h 2 ) = O(h 2 ) (3) Vi har y(t k ) = y k och y (t k ) = f(t k, y k ) Exempel 2: Euler backåt Taylor: y(t k ) = y(t k + h h) = y(t k+1 ) hy (t k+1 )) + O(h 2 ) (4) Euler backåt: y k+1 = y k + hf(t k+1, y k+1 ) (5) Subtrahera (5) från (4): y(t k+1 ) y k+1 = y(t k ) + hy (t k+1 )) O(h 2 ) y k hf(t k+1, y k+1 ) = y(t k ) y k + hy (t k+1 )) hf(t k+1, y k+1 ) O(h 2 ) = O(h 2 ) (6) Vi har y(t k ) = y k och y(t k+1 ) = f(t k+1, y k+1 ) Vi säger att lokala trunkeringsfelet (här) är O(h 2 ), dvs storleksordningen ges av den första termen som inte försvinner. 1
Det globala felet när man löst över ett helt intervall är i bästa fall summan av de lokala felen, men kan också bli värre (eller bättre). 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 2 ) = O(h). Generellt: Om lokala trunkeringsfelet är O(h p+1 ) så är globala felet O(h p ). Def: Om en metod har globalt fel av O(h p ) så säger man att den har noggrannhetsordning p. Konsistens och konvergens Def: En numerisk metod för lösning av ODE är konsistent om lokala trunkeringsfelet Ψ[y, 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. Testekvationen Säg att vi har ett fel, t.ex. avrundningsfel, i det värde på y k vi skulle ha fått om vi räknat exakt. Hur påverkar det värdet av y k+1. Exempel : Euler framåt y k+1 = y k + hf(t k, y k ) ŷ k = y k + ɛ y k+1 ˆ = y k + ɛ + hf(t k, y k + ɛ) = y k + ɛ + hf(t k, y k ) + ɛh f + O(ɛ2 ) = y k+1 + (1 + h f )ɛ +... Om (1 + h f ) > 1 så växer felet. Detta kallas störningsanalys. 2
Vi ser att f är avgörande för hur felet beter sig. När man analyserar stabiliteten hos en numerisk metod för ODE brukar man använda testekvationen som har en konstant derivata f y = λy = λ. Lösningarna till testekvationen är y(t) = y 0 e λt, dvs λ avgör hur fort lösningarna växer eller avtar, beroende på tecken. Stabilitetsanalys för Euler framåt Euler framåt För testekvationen får vi y k+1 = y k + hf(t k, y k ) y k+1 = y k + hλy k y k+1 = y k (1 + λh) Avtagande lösning (stabilitet) y k+1 < y k om 1 + λh < 1 En cirkel i komplexa planet ges av z c = r Här λh ( 1) < 1, cirkel med centrum i -1 och radie 1. Stabilitetsvillkor och stabilitetsområden Definition: Stabilitetsvillkor är det villkor på λh som gör att störningar inte växer (lösningen 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. se att det är samma faktor som multiplicerar y k och störningen. Kan de komplexa tal Rita Rita stabilitet- sområde Stabilitetsanalys Euler bakåt Euler bakåt För testekvationen får vi y k+1 = y k + hf(t k+1, y k+1 ) y k+1 = y k + hλy k+1 3
y k+1 (1 λh) = y k 1 y k+1 = (1 λh) y k Avtagande lösning y k+1 < y k om 1 λh > 1 Utanför cirkeln med centrum i 1 och radie 1. Om λ < 0 är metoden stabil för alla värden på h. Detta kallas att metoden är A-stabil. Trapetsmetoden: Stbilitetsområde hela vänstra halvplanet. A-stabil. Styva problem Vad innebär att en ODE är styv? Lösningen varierar mycket snabbt (som λ stort) över ett delintervall. Ett system av ODEer har funktioner som varierar över olika tidsskalor snabba och långsamma reaktioner. Alla numeriska metoder måste ta små steg i de kritiska intervallen. En lämplig metod kan ta större steg över resten av intervallet. Adaptivt val av steglängd, automatiskt Idéskiss: Vi har visat att det lokala trunkeringsfelet i Euler framåt har ledande term h2 2 y. Givet en uppskattning på y kan vi välja steglängd så att h 2 k 2 y k tol h 2tol y k Det sparar tid (beräkningar) att ta stora steg där det går. Det som är svårt och/eller dyrt är att uppskatta det lokala felet. Matlab: ode45 t.ex. använder inbäddade Runge-Kutta metoder. (s. 588 591) Idé: Använd två metoder med olika noggrannhetsordning (t.ex. 4 och 5) för att beräkna y k + 1 Metod med p = 4: y(t k+1 ) y k+1 = O(h 5 ) Metod med p = 5: y(t k+1 ) ỹ k+1 = O(h 6 ) 4
Differensen ger ỹ k+1 y k+1 = (y(t k+1 ) y k+1 ) (y(t k+1 ) ỹ k+1 ) y(t k+1 ) y k+1 }{{}}{{} O(h 5 ) O(h 6 ) Feluppskattning ger nu a) Fel OK, fortsätt b) Fel för stort, minska steglängden och försök igen c) Fel för litet, öka steglängden nästa gång. 5