Numeriske metoder 2011: Adams-Bashforth-Moulton Predictor-Corrector method Rasmus Søgaard Christensen (2008 4030) 10. juli 2011 Indhold Indhold 1 1 Introduktion 2 1.1 Systemet under betragtning....................... 2 2 Teori 3 2.1 Predictor-corrector- og multistep-metoder............... 3 2.2 Adams-Bashforth-Moulton-metoden................... 3 2.3 Runge-Kutta-Fehlberg-metoden..................... 7 3 Implementering 8 3.1 Koden................................... 8 4 Resultater 10 4.1 Tidsforbrug................................ 10 4.2 Afvigelse.................................. 11 4.3 Afrunding................................. 12 A Beta-koefficienter 17 B Resultater 18 Litteratur 21 1
2 KAPITEL 1. INTRODUKTION 1 Introduktion Formålet med denne opgave er at implementere en Adams-Bashforth-Moulton (ABM) predictor-corrector-metode med forskellige krav til præcision og skridtændring. Nærmere bestemt vil metoden blive implementeret med to forskellige krav til, hvornår det er nødvendigt at ændre skridtlængden og to forskellige måder at ændre skridtlængden på. Disse metoder vil så blive anvendt til at løse den 2. ordens differentialligning for en dæmpet harmonisk oscillator og eksponentialfunktionen, for derefter at blive sammenlignet med hinanden. Derudover implementeres Runge-Kutta-Fehlberg-metoden også, og ABM-metoden sammenlignes med denne. 1.1 Systemet under betragtning For at teste metoden betragtes et test-system bestående af en dæmpet harmonisk oscillator i én dimension (DHO) med dæmpningskraften F d = c dy, hvor c er en dt konstant dæmpningsfaktor. Newtons 2. lov for DHO en bliver så hvilket også kan opskrives som F = ky c dy dt = md2 y dt 2, (1) d 2 y dt + 2ζω dy 2 0 dt + ω2 0y = 0, (2) hvor ω 0 = k og ζ = c m 2mω 0. Opgaven består altså i at løse den 2. ordens differentialligning (2), hvilket kan gøres ved at omskrive ligningen til et system af to koblede 1. ordens differentialligninger: dy dt = v (3) dv dt = 2ζω 0v + ω u y, (4) og specificere startbetingelserne x(t = 0) og v(t = 0). I denne opgave sættes m = k = 1 og c = 0.5, hvilket medfører at ω 0 = 1 og ζ = 0.25, og startbetingelserne sættes til x(t = 0) = 10 og v(t = 0) = 0. Da ζ < 1 er der tale om en underdæmpet harmoniske oscillator, og den analytiske løsning er givet ved ( ) y(t) = e (x(t ζt ζx(t = 0) + v(t = 0) ( = 0) cos 1 ζ 2 t + sin 1 ζ t) ) 2. (5) 1 ζ 2
3 2 Teori Det problem der ønskes løst kan som sagt beskrives ved et sæt af koblede differentialligninger med kendte begyndelsesbetingelser. Dette kan generelt skrives som dy dx = f(x, y), y(x 0) = y 0, (6) hvor y og f(x, y) generelt opfattes som søjlevektorer. I det følgende bliver ideen bag predictor-corrector-metoder beskrevet, samt teorien for Adams-Bashforth-Moulton-metoden, og ideen bag Runge-Kutta-Fehlbergmetoden beskrives også kort. 2.1 Predictor-corrector- og multistep-metoder Multistep-metoder adskiller sig fra enkeltskridtsmetoder som f.eks. Eulers metode og Runge-Kutta-Fehlberg-metoden ved at benytte flere tidligere punkter til at estimere funktionsværdien i det næste skridt. Hvis f.eks. værdien y k+1 i punktet x k+1 skal estimeres, benytter enkeltskridtsmetoderne udelukkende værdien y k til dette, mens en multistep-metode af rang r 2 benytter værdierne y k, y k 1, y k 2,..., y k r+1. For en multistep-metode er det altså nødvendigt at kende mere end blot værdien y k. Mere præcist er det nødvendigt for en multistep-metode af rang r at kende de forudgående r værdier. I praksis er det ofte kun startbetingelsen der er kendt, hvilket betyder, at det ofte er nødvendigt at benytte en enkeltskridtsmetode til at bestemme de første r 1 værdier efter startbetingelsen før multisteps-metoden benyttes. Af samme grund skiftes skridtlængden for den næste iteration typisk ikke for hvert skridt i multistep-metoderne, da dette typisk vil medføre en masse ekstra beregninger, hvor nye punkter skal beregnes. I stedet opstilles kriterier for, hvor stor (eller lille) fejlen skal være for at skridtlængden ændres. Predictor-corrector-metoderne er et eksempel på en multistep-metode, hvor der først udføres et predictor-skridt, der beregner et groft estimat p k+1 af den ønskede værdi hørende til x k+1, hvorefter corrector-skridtet beregner et bedre bud y k+1 ved bl.a. at gøre brug af p k+1. En fordel ved predictor-corrector-metoderne er, at den lokale fejl simpelt kan estimeres, og et korrektionsskridt som forbedrer præcisionen kan inkluderes. Desuden benyttes den lokale fejl også til at bestemme, om den benyttede skridtstørrelse er passende. Den optimale skridtstørrelse vil være så lille, at fejlen på udregningerne er mindre end den ønskede præcision, og samtidigt så stor at der ikke beregnes strengt flere punkter end nødvendigt, da dette vil gøre udregningen langsommere. 2.2 Adams-Bashforth-Moulton-metoden Adams-Bashforth-Moulton-metoden er en predictor-corrector-metode, som gør brug af den eksplicitte Adams-Bashforth-metode og den implicitte Adams-Moulton-metode, som begge er lineære multistep-metoder. I denne opgave benyttes Adams-Bashforthmetoden af 4. orden som predictor, mens Adams-Moulton-metoden af benyttes som corrector.
4 KAPITEL 2. TEORI Den generelle Adams-Bashforth-formel af 4. orden, som benyttes som predictor, er givet ved [7]: p k+1 = y k + h k (β 3k f k + β 2k f k 1 + β 1k f k 2 + β 0k f k 3 ), (7) og den generelle Adams-Moulton-formel af 4. orden, som benyttes som corrector er givet ved: y k+1 = y k + h k (β 4kf k+1 + β 3kf k + β 2kf k 1 + β 1kf k 2 ), (8) hvor h k er længden af k te skridt og koefficienterne β 3k, β 2k, β 1k, β 0k, β 4k, β 3k, β 2k, β 1k er givet i bilag A. Disse formler kommer fra infinitesimalregningens hovedsætning: y(x k+1 ) = y(x k ) + xk+1 x k f(x, y(x))dx, (9) hvorfra ligningerne ligning (7) og ligning (8) kan udledes vha. Lagrange polynomier. f erne er som tidligere beskrevet søjlevektorer, hvor f k 1 = f(x k 1, y k 1 ) og f k+1 = f(x k+1, p k+1 ). Det kan bemærkes, at hvis h = h k = h k 1 = h k 2 = h k 3 reducerer Adams- Bashforth- og Adams-Moulton-formlerne til p k+1 = y k + h 24 (55f k 59f k 1 + 37f k 2 9f k 3 ) (10) y k+1 = y k + h 24 (9f k+1 + 19f k 5f k 1 + f k 2 ). (11) I denne opgave vil det altid gælde, at h = h k = h k 1 = h k 2 = h k 3 og situationen hvor h k varieres fra skridt til skridt vil ikke blive diskuteret. Fejlestimation og nøjagtighed Fejlene for den numeriske integration, der benyttes til beregne p k+1 og y k+1 er begge af ordenen O(h 5 ) og den lokale fejl i udregningerne er givet ved [5, Afs. 9.6] y(x k+1 ) p k+1 = 251 720 y(5) (c k+1 )h 5 predictoren (12) y(x k+1 ) y k+1 = 19 720 y(5) (d k+1 )h 5 correctoren, (13) hvor y(x k+1 ) er den korrekte værdi i punktet x k+1. Er h lille og y næsten konstant over skridtlængden, kan fejlen δ k+1 (h) på y k+1 approksimeres med δ k+1 (h) = y(x k+1 ) y k+1 19 270 (y k+1 p k+1 ). (14) Dette giver altså et approksimat af fejlen på y k+1 ud fra de to beregnede værdier y k+1 og p k+1. Hvis den fejl der kommer af ligning (14) er større end det accepterede, kan man benytte den fundne værdi for y k+1 som predictor og så benytte Adams-Moultonformlen igen til at bestemme en ny værdi af y k+1. Fortsættes denne iteration vil y k+1 på et tidspunkt konvergere, men typisk ikke til den korrekte værdi y(x k+1 ). En bedre måde at opnå større præcision på er at ændre skridtstørrelsen h. Dette kan gøres på flere måder, som vil blive diskuteret i det følgende.
2.2. ADAMS-BASHFORTH-MOULTON-METODEN 5 Ændring af skridtstørrelsen Som tidligere nævnt kræver en ændring af skridtstørrelsen typisk en del ekstra udregninger for en predictor-corretor-metode sammenlignet med de samme udregninger for en enkeltskridtsmetode. Hvis der arbejdes med en konstant skridtstørrelse h, vil en ændring af dette føre til, at 3 nye punkter med denne skridtstørrelse skulle beregnes, typisk ved brug af en enkeltskridtsmetode. Alternativt vil en ændring af kun ét enkelt skridt betyde at β-koefficienterne fra formlerne ligning (7) og ligning (8) skulle udregnes på ny. Udover beregningen af et nyt h, som måske skal reduceres flere gange for at opnå den ønskede præcision, skal der altså også foretages ekstra udregninger før næste værdi kan bestemmes. Dette kunne hurtigt blive meget regnetungt, hvorfor der typisk sættes grænser for den "acceptable"afvigelse. Hvornår skal skridtstørrelsen ændres? I litteraturen findes der flere bud på, hvordan skridtstørrelsen ændres mest optimalt. I de fleste tilfælde, vil det dog afhænge af det problem der løses og den ønskede præcision det ønskes løst med. Et bud på kriterier for ændring af skridtstørrelsen kunne være, at hvis værdien ikke passer indenfor en størrelsesorden af fem betydende cifre, skal skridtstørrelsen h sættes ned, mens den skal sættes op, hvis de f.eks. passer indenfor en størrelsesorden af syv eller flere betydende cifre [5, Afs. 9.6]. Et sådant krav kan opskrives som: Hvis Hvis 19 y k+1 p k+1 > ɛ, sæt h ned. (15) 270 y k+1 + 2 ɛ 19 y k+1 p k+1 270 y k+1 + 2 ɛ > ɛ, sæt h op. (16) 100 Hvor ɛ er 5 10 6. Metoden kan selvfølgelig uden problemer generaliseres til andre størrelsesordener. F.eks. ved at ændre ɛ med en faktor 10. Ideen her er, at der kun bliver sat grænser for den relative fejl på udregningerne, hvorfor den absolutte fejl selvfølgelig godt kan vokse sig stor, hvis y vokser sig meget stor. En anden mulighed er, at kigge på den absolutte fejl δ på beregningerne. Et estimat for denne fejl er som tidligere beskrevet givet ved ligning (14), og et krav kunne værre, at hvis estimatet for fejlen overstiger kravet δ, skal skridtstørrelsen sættes ned, mens skridtstørrelsen skal sættes op, hvis estimatet for fejlen er under en tiendedel af kravet [6]. Disse krav vil se ud, som følger Hvis δ k+1 (h) < δ, 10 sæt h op. (17) Hvis δ k+1 (h) > δ, sæt h ned. (18) Dette vil sikre, at den absolutte fejl er meget lille, hvorimod den relative fejl godt kan blive meget stor, hvis y er meget lille. Det vil altså typisk være et spørgsmål om, hvilken differentialligning der undersøges, hvilket krav der vil være det mest tilfredsstillende.
6 KAPITEL 2. TEORI Ændring af skridtstørrelsen Når skridtstørrelsen ændres, vil der opstå et behov for nye punkter, da det i denne opgave er et krav, at skridtstørrelsen mellem y k, y k 1, y k 2, y k 3 er den samme. Man kan vælge ændringen af skridtstørrelsen på flere måder, hvilket giver forskellige krav til de nye udregninger, der skal foretages. Her vil der blive set nærmere på to forskellige metoder. Nye punkter x k 3/2 x k 1 x k 1/2 x k x k 3 x k 2 x k 1 x k Gamle punkter Figur 1: Viser de nye punkter ved den nye skridtlængde h = h/2. I første metode vil den korrigerede skridtstørrelse h blive valgt til enten h = h/2 eller h = 2h, alt efter om den skal sættes op eller ned. Altså enten halveret eller fordoblet. Baggrunden for dette valg er, at det ikke kræver mange ekstra udregninger for at finde de 4 nye punkter. Vælges h = h/2 er det kun nødvendigt at beregne to nye punkter, som vist på figur 1, og vælges h = 2h er det slet ikke nødvendigt at beregne ny punkter forudsat, at de 7 tidligere punkter med skridtstørrelsen h er kendte, som illustreret på figur 2. Dette minimerer altså udregningen af nye punkter, og er måske især anvendelig, hvis der skal foretages mange korrektioner i løbet af iterationen eller hvis f er meget beregningstung. For at beregne de to nye punkter, der skal benyttes ved h = h/2 benyttes formlerne [5, Afs. 9.6] f k 1/2 = 5f k 4 + 28f k 3 70f k 2 + 140f k 1 + 35f k, (19) 128 f k 3/2 = 3f k 4 20f k 3 + 90f k 2 + 60f k 1 5f k. (20) 128 Nye punkter x k 3 x k 2 x k 1 x k x k 6 x k 5 x k 4 x k 3 x k 2 x k 1 x k Gamle punkter Figur 2: Viser de nye punkter ved den nye skridtlængde h = 2h. Et anden mulighed kunne være at ændre skridtstørrelsen alt efter, hvor stor den relative fejl er. Dette kunne f.eks. være ved at indføre en størrelse q, og derefter ændre skridtstørrelsen til h = qh. Et typisk valg af q vil være [6] q < ( 270 19 hδ (y k+1 p k+1 ) 1/4 = ( ) 1/4 hδ. (21) δ k+1
2.3. RUNGE-KUTTA-FEHLBERG-METODEN 7 I denne opgave vælges ( ) 1/4 hδ q =, (22) 2 δ k+1 for at have en vis sikkerhedsmargin. Samtidigt indføres også et krav for q, således at skridtstørrelsen ikke pludseligt ændres meget drastisk. Dette krav er q [0.1 : 4]. Giver ligning ligning (22) et resultat der ligger uden for dette interval, ændres q blot til den nærmeste værdi indenfor intervallet. Det vil altså sige, at skridtstørrelsen maksimalt kan sættes op med en faktor 4 eller ned med en faktor 10. 2.3 Runge-Kutta-Fehlberg-metoden Runge-Kutta-Fehlberg-metoden (RKF45) er medtaget i opgaven for at have noget at sammenligne Adams-Bashforth-Moulton-metoden (ABM) med. RKF45 er en eksplicit Runge-Kutta (RK) metode, der kombinerer en RK-metode af 4. orden med en RKmetode af 5. orden. RKF-metoden er den nok mest udbredte metode til numeriske løsning af ordinære differentialligninger og kendes bl.a. fra MATLAB-funktionen ode45. Den kan kort opskrives ved dens Butcher-tabel[3], som er vist i tabel 1. Tabel 1: Butcher-tabel for Runge-Kutta-Fehlberg-metoden 0 1/4 1/4 3/8 3/32 9/32 12/13 1932/2197-7200/2197 7296/2197 1 439/216-8 3680/513-845/4104 1/2-8/27 2-3544/2565 1859/4104-11/40 25/16 0 1408/2565 2197/4104-1/5 0 16/135 0 6656/12825 28561/56430-9/50-2/55 Fokus i denne opgave er ikke på RKF45, så det kommenteres blot at denne metode er implementeret i koden med skridtlængdekontrol svarende til noten [4] og løbende vil blive plottet sammen med ABM-løsningerne.
8 KAPITEL 3. IMPLEMENTERING 3 Implementering Som beskrevet tidligere benyttes der i denne opgave to kriterier for, hvornår skridtstørrelsen h skal ændres, og der benyttes to forskellige måder at ændre denne på. Desuden undersøges både den dæmpede harmoniske svingning, som beskrevet i afsnit 1.1 og løsningen af differentialligningen y (x) = y(x), som jo blot har løsningen y = exp(x). Disse metoder og funktioner vil blive benævnt 2h Når skridtstørrelsen ændres enten til 2h eller h/2. qh Når skridtstørrelsen ændres til qh i henhold til ligning (22). eps Når kravene for skridtændring er ligning (15) og ligning (16). delta Når kravene for skridtændring er ligning (17) og ligning (18). DH exp For den dæmpede harmoniske oscillator. For eksponentialfunktionen. 3.1 Koden Filerne main_func_step_corr.py Hovedfilerne der indeholder differentialligningerne, kalder drive-filen, plottefilen og til sidst printer et resultat ud. ABMdrive_step_corr.py Drive-filen, som holder styr på iterationen og kalder step-filen. ABMstep Step-filen, som foretager predictor- og corrector-skridtet. plots.py, plots_log.py Plot-filerne, som plotter resultaterne, samt relativ og absolutafvigelse med enten logaritmisk eller almindelig y-akse. Evt. inden for et givent interval. RFK45drive.py, RFK45step.py, rkdrive.py, rkstep.py Drive- og step-filer for hhv. Runge-Kutta-Fehlberg-metoden og midtpunktsmetoden. Her er func enten DH eller exp, step qh eller 2h og corr eps eller delta, alt efter hvad der undersøges og med hvilken metode. Grunden til den store opdeling i koden, er for at gøre især drive-filerne for ABM mere overskuelige og nemmere at læse. Det ville ikke kræve det store ekstra arbejde at kode drive-filerne og main-filerne sammen og så indføre ekstra argumenter, der præciserer hvilken proces der skal benyttes. Her er dog valgt modellen, hvor filerne separeres for dels at gøre det overskueligt, og da man I en almindelig situation, hvor
3.1. KODEN 9 man skulle løse en differentialligning typisk kun ville bruge den mest optimale løsning alligevel. Koden er altså opbygget således, at en main-fil specificerer hvilken funktion der skal løses med hvilken metode. Herefter kalder den funktionen, der skal løse problemet, samt funktionen der løser vha. Runge-Kutta-Fehlberg-metoden. Når differentialligningen så er løst med begge metoder, kalder den en funktion som plotter resultaterne sammen med den analytiske løsning, samt grafer der viser udviklingen af både den relative og absolutte afvigelse. Graferne gemmes her i separate mapper for at de kan sammenlignes, ville man blot løse differentialligningen og så ikke mere, ville man typisk blot specificere en enkelt output-mappe. Til sidst printer main-filen relevante oplysninger og tidsforbrug for de enkelte metoder ud. Udover den dæmpede harmoniske oscillator, er eksponentialfunktionen her medtaget, da den giver et godt overblik over udviklingen af afvigelserne. Desuden ligger der også filer for midtpunkts-metoden [4] i mappen, da denne også har været sammenlignet med de to andre metoder i processen.
10 KAPITEL 4. RESULTATER 4 Resultater Resultaterne fra de forskellige metoder er vist i tabellerne 2, 4, 3 og 5 på bilag B. Generelt er alle løsningerne fine, som det fremgår af figurerne 3 og 4, og alle udregninger er foretaget med kravene δ = 1 10 5 og ɛ = 5 10 8. Kravene i ligningerne (15) og (16) er selvfølgelig tilpasset, så de passer til ɛ = 5 10 8. Alle test hvor metoderne blev sammenlignet med midtpunktsmetoden viste at midtpunktsmetoden er begge metoder underlegen, hvilket var forventet. Det er især på tidsforbruget, at midtpunktsmetoden er utrilstrækkelig, da det typisk kræver meget små skridt før midtpunktsmetoden opnår samme præcision, som de andre metoder. 4.1 Tidsforbrug Ud fra resultater for den samme RKF-metode gentaget flere gange, fremgår det, at tidsforbruget på den samme udregning varierer med op mod 100 ms. 2h vs. qh Generelt er det tydeligt at se for både resultaterne for den dæmpede harmoniske oscillator og for eksponentialfunktion, at metoden hvor skridtkorrektion er valgt til 2h beregner væsentligt flere datapunkter og tager længere tid end qh-metoden. Dette skyldes at qh-metoden har væsentligt bredere rammer for at finde en passende korrektion på et eller få forsøg, mens 2h-metoden typisk vil skulle korrigere væsentligt flere gange. Forskellen på metoderne vil så også munde ud i, at der bliver beregnet væsentligt flere datapunkter for 2h-metoden, hvilket er årsagen til det ekstra tidsforbrug. I de to valgte eksempler er udregningen af f(x k, y k ) rimelig simpel, og derfor vil udregningen af de ekstra punkter ved 2h-korrektionen være beregningsmæssigt tungere end besparelsen ved at kunne genbruge værdierne for f og de tidligere punkter. Det kan dog bemærkes, at det var nødvendigt at indføre grænser for, hvor stor eller lille qh-korrektionen måtte være, da denne ellers havde tendens til enten at blive meget stor eller meget lille, hvilket på ingen måde var hensigtsmæssigt, men derimod gjorde denne metode dårligere end 2h-korrektionen. eps vs. delta I modsætning til for skridtkorrektionen, kan der ikke udlæses nogen generel tendens for tidsforbruget alt efter, om præcisionskravet er eps eller delta. Derimod fremgår det af resultaterne, at for den dæmpede harmoniske oscillator er tidsforbruget for de to metoder af samme størrelsesorden med undtagelse af, når h start 0.01, hvor delta-metoden bliver markant hurtigere for 2h-korrektionen. Dette skyldes igen, at der for den langsomme metode udregnes markant flere punkter end for den hurtigere metode. Forklaringen på dette er, at den dæmpede harmoniske oscillator krydser x-aksen flere gange, hvilket gør, at det relative krav eps bliver meget strengere end det absolutte krav delta, hvilket også ses af den endelige gennemsnitlige absolutte
4.2. AFVIGELSE 11 afvigelse. Det er så igen den dårligere 2h-korrektion, der med det strengere krav om nøjagtighed er årsag til det ekstra tidsforbrug. Samtidigt fremgår det også, at for 2h-korrektioner er eps-metoden væsentligt hurtigere end delta-metoden for eksponentialfunktionen. Dette skyldes, at det meget hurtigt bliver delta-kravet, der er det strengeste krav, da eksponentialfunktionen jo hurtigt vokser mod meget store værdier. Det kan desuden bemærkes, at der for metoden med qh-korrektioner stortset ikke er nogen tidsforskel mellem eps- og delta-metoden for den dæmpede harmoniske oscillator, mens eps-metoden er marginalt hurtigere for eksponentialfunktionen. Dette understøtter blot, at qh-metoden er markant bedre end 2h-metoden for disse to eksempler, da det er her forskellen i tidsforbruget ligger. Hvis man sammenligner tidsforbruget for ABM-metoden med tidsforbruget for RKF-metoden er den for de "gode"abm-resultater af samme størrelsesorden, mens den for en del af resultaterne er væsentligt dårligere. 4.2 Afvigelse Ligesom for tidsforbruget viser det sig, at metoden med qh-korrektioner overordnet set er metoden med 2h-korrektioner overlegen. Dog har nogle af 2h-resultaterne en gennemsnitlig absolut afvigelse af samme størrelsesorden som qh-resultaterne. Ved at se nærmere på resultaterne med qh-korrektioner, fremgår det, at udover tidsforbruget er af samme størrelsesorden er der heller ikke de store forskelle på den gennemsnitlige absolutte afvigelse for de forskellige startværdier af h. Samtidigt fremgår det også, at afvigelsen for qh-resultaterne er nede i samme størrelsesorden som for RKF-beregningerne, hvilket altså vil sige, at både tidsforbruget og afvigelsen er af samme størrelsesorden for ABM- og RKF-metoden. På figur 5 og figur 6 ses udviklingen af den absolutte afvigelse for den dæmpede harmoniske oscillator (løsningskriterierne er angivet på figurerne). Som det fremgår af figurerne oscillerer afvigelsen, og samtidigt kan det bemærkes at ændringerne for delta-metoden er meget mere markante end for eps-metoden, hvilket stemmer overens med de tidligere kommentarer. Den fulde graf for den relative afvigelse for den dæmpede harmoniske oscillator, er ikke så informativ, da denne krydser x-aksen flere gange, og den relative afvigelse i disse punkter deraf vokser sig meget stor. Derimod er graferne for den relative afvigelse for eksponentialfunktionen noget mere informativ. To af disse grafer er vist på hhv. figur 8 og figur 9. Af disse to grafer fremgår det, at den relative afvigelse for eps-metoden efter lige at have indstillet sig vokser lineært. Den relative afvigelse for delta-metoden vokser derimod i en form for trappe, indtil "trinene"bliver så små, at den er stortset flad. Delta-metoden konvergerer altså mod en konstant relativ afvigelse, hvorfor den absolutte afvigelse vokser eksponentielt sammen med eksponentialfunktionen. Dette fremgår også af figur 7. Disse figurer er lavet med qh-metoden, men tilsvarende figurer viser sig med 2h-metoden, denne er blot endnu engang væsentligt grovere.
12 KAPITEL 4. RESULTATER 4.3 Afrunding Forskellige implementeringer af Adams-Bashforth-Moulton predictor-corrector-metoden er blevet testet på den dæmpede harmoniske oscillator og eksponentialfunktionen. Der viste sig en tydelig tendens for de afprøvede eksempler, hvor metoden med qhkorrektion af skridtstørrelsen generelt var den mest effektive. Denne metode kunne dog stadig kun i enkelte scenarier måle sig med Runge-Kutta-Fehlberg metoden, som overordnet set var bedre. ABM-metoden gav dog fortsat fine resultater, og de bedste af metoderne havde også en hurtig beregningstid, hvorfor denne metode fint kunne anvendes til disse problemer. En mulig forbedring og forholdsvis simpel forbedring til koden, kunne være at implementere ABM-metoden med variabel skridtlængde i henhold til ligningerne (7) og (8). Her kunne man så løbende gemme de senest anvendte h er og så smide de resterende væk på samme måde, som koden på nuværende tidspunkt gør med f erne.
4.3. AFRUNDING 13 DH, h_start = 0.01, step = 2h, corr = delta solved with RKF45 and ABM 10 8 RKF45 ABM Analytic solution 6 4 2 0 2 4 6 0 2 4 6 8 10 Figur 3: Viser den analytiske løsning, og løsningerne med ABM og RKF med δ = 1 10 5 og ɛ = 5 10 8 for den dæmpede harmoniske oscillator. Som det ses stemmer resultaterne fint overens. Løsningskriterierne og funktionen er specificeret på figuren.
14 KAPITEL 4. RESULTATER exp, h_start = 0.01, step = 2h, corr = eps solved with RKF45 and ABM 10 5 RKF45 ABM Analytic solution 10 4 10 3 10 2 10 1 10 0 0 2 4 6 8 10 Figur 4: Viser den analytiske løsning, og løsningerne med ABM og RKF med δ = 1 10 5 og ɛ = 5 10 8 for eksponentialfunktionen. Som det ses stemmer resultaterne fint overens. Løsningskriterierne og funktionen er specificeret på figuren. Absolute error: DH, h_start = 0.01, step = 2h, corr = delta 0.0000030 0.0000025 RKF45 0.0006 0.0005 0.0000020 0.0004 0.0000015 0.0003 0.0000010 0.0002 0.0000005 0.0001 ABM 0.0000000 0.0000 0 2 4 6 8 10 Figur 5: Viser udviklingen af den absolutte afvigelse for den dæmpede harmoniske oscillator med delta-kravet. δ = 1 10 5 og ɛ = 5 10 8.
4.3. AFRUNDING 15 Absolute error: DH, h_start = 0.01, step = 2h, corr = eps 0.0000030 0.0000025 RKF45 0.00010 0.00008 0.0000020 0.0000015 0.0000010 0.00006 0.00004 0.0000005 0.00002 ABM 0.0000000 0.00000 0 2 4 6 8 10 Figur 6: Viser udviklingen af den absolutte afvigelse for den dæmpede harmoniske oscillator med eps-kravet. δ = 1 10 5 og ɛ = 5 10 8. Absolute error: exp, h_start = 0.01, step = qh, corr = delta 10-2 RKF45 10-2 10-4 10-4 10-6 10-6 10-8 10-8 10-10 10-10 10-12 10-12 10-14 10-14 10-16 ABM 0 2 4 6 8 10 10-16 Figur 7: Viser udviklingen af den absolutte afvigelse for eksponentialfunktionen med delta-kravet. δ = 1 10 5 og ɛ = 5 10 8.
16 KAPITEL 4. RESULTATER Relative error: exp, h_start = 0.01, step = qh, corr = eps 9 1e 7 RKF45 8 7 6 5 4 3 1e 7 6 5 4 3 2 2 1 1 ABM 0 0 0 2 4 6 8 10 Figur 8: Viser udviklingen af den relative afvigelse for eksponentialfunktionen med eps-kravet. δ = 1 10 5 og ɛ = 5 10 8. Relative error: exp, h_start = 0.01, step = qh, corr = delta 9 1e 7 RKF45 8 7 6 5 4 3 1e 7 6 5 4 3 2 2 1 1 ABM 0 0 0 2 4 6 8 10 Figur 9: Viser udviklingen af den relative afvigelse for eksponentialfunktionen med delta-kravet. δ = 1 10 5 og ɛ = 5 10 8.
17 A Beta-koefficienter hvor β 0k = ζ k 12h k 1 (h k 1 + h k 2 )(h k 1 + h k 2 + h k 3 ), (23) η k β 1k = 12h k 1 h k 2 (h k 2 + h k 3 ) h k, (24) β 2k = 3h2 k + 4h k (2h k 1 + h k 2 + h k 3 ) + 6h k 1 (h k 1 + h k 2 + h k 3 ) 12h k 2 h k 3 (h k 1 + h k 2 h k, (25) β 3k = 3h2 k + 4h k (2h k 1 + h k 2 ) + 6h k 1 (h k 1 + h k 2 ) h k, (26) 12h k 3 (h k 2 + h k 3 )(h k 1 + h k 2 + h k 3 ) ζ k =3h 3 k + 4h 2 k(3h k 1 + 2h k 2 h k 3 ) (27) + 6h k (h k 1 (3h k 1 + 4h k 2 + 2h k 3 ) + h k 2 (h k 2 + h k 3 )) (28) + 12h k 1 (h k 1 (h k 1 + 2h k 2 h k 3 ) + h k 2 (h k 2 + h k 3 )), (29) η k =3h 2 k + 4h k (2h k 1 + 2h k 2 + h k 3 ) (30) + 6h k 1 (h k 1 + 2h k 2 + h k 3 ) + 6h k 2 (h k 2 + h k 3 ). (31) β 1k = 3h2 k + 4h k (2h k 1 + h k 2 ) + 6h k 1 (h k 1 + h k 2 ), 12(h k + h k 1 )(h k + h k 1 + h k 2 ) (32) β 2k = h2 k + 2h k (2h k 1 + h k 2 ) + 6h k 1 (h k 1 + h k 2 ), 12h k 1 (h k 1 + h k 2 ) (33) β 3k = 3h k 2(2h k + h k 1 + h k 2 ) h 2 12h k 1 h k 2 (h k + h k 1 ) k, (34) β 4k h k + 2h k 1 = 12h k 2 (h k 1 + h k 2 )(h k + h k 1 + h k 2 ) h2 k. (35)
18 BILAG B. RESULTATER B Resultater Tabel 2: Data for den dæmpede harmoniske oscillator med Adams-Bashforth-Moultonmetoden Metode Tid [ms] Punkter h slut Afvigelse h start = 1.0 2h, delta 187 189 0,060 1.00 10 4 2h, eps 63 163 0,060 6.07 10 6 qh, delta 29 78 0,122 4.66 10 5 qh, eps 51 144 0,067 7.19 10 6 h start = 0.1 2h, delta 669 562 0,0125 4.58 10 5 2h, eps 72 196 0,05 2.65 10 6 qh, delta 45 75 0,123 1.95 10 5 qh, eps 51 146 0,067 5.09 10 6 h start = 0.01 2h, delta 1739 1341 0,02 2.30 10 4 2h, eps 9157 7336 0,005 5.12 10 5 qh, delta 116 69 0,1236 1.62 10 6 qh, eps 87 255 0,04 4.79 10 7 h start = 0.001 2h, delta 1775 1387 0,032 1.01 10 4 2h, eps 11573 9371 0,002 2.06 10 5 qh, delta 80 75 0,1234 1.46 10 6 qh, eps 111 323 0,032 1.93 10 7 h start = 0.0001 2h, delta 1865 1361 0,0512 2.10 10 4 2h, eps 13842 10283 0,0032 1.21 10 5 qh, delta 86 81 0,1227 1.29 10 6 qh, eps 83 214 0,0512 1.19 10 6 Gennemsnitlig absolut afvigelse for alle punkterne.
19 Tabel 3: Data for den dæmpede harmoniske oscillator med Runge-Kutta-Fehlbergmetoden h start = 1 h start = 0.1 h start = 0.01 h start = 0.001 h start = 0.0001 Tid [ms] Punkter h slut Afvigelse 38 54 0,302 1.12 10 6 37 54 0,288 1.12 10 6 39 55 0,347 1.11 10 6 38 55 0,318 1.11 10 6 40 56 0,337 1.09 10 6 Gennemsnitlig absolut afvigelse for alle punkterne.
20 BILAG B. RESULTATER Tabel 4: Data for eksponentialfunktionen med Adams-Bashforth-Moulton-metoden Metode Tid [ms] Punkter h slut Afvigelse h start = 1.0 2h, delta 10039 18368 1.17 10 4 0,0752 2h, eps 6078 8728 3.73 10 3 0,102 qh, delta 146 187 9.67 10 3 1.18 10 3 qh, eps 33 117 0,0737 9.01 10 3 h start = 0.1 2h, delta 11215 19085 1.95 10 4 0,136 2h, eps 53 196 0,05 2.91 10 3 qh, delta 119 191 9.69 10 3 4.83 10 3 qh, eps 59 255 0,04 1.04 10 3 h start = 0.01 2h, delta 10180 18700 7.81 10 5 0,252 2h, eps 4601 7336 5.00 10 3 0,138 qh, delta 122 197 9.71 10 3 2.60 10 3 qh, eps 59 255 0,04 1.04 10 3 h start = 0.001 2h, delta 9945 18555 5.00 10 4 0,220 2h, eps 6515 10639 5.00 10 4 0,236 qh, delta 124 203 9.73 10 3 2.57 10 3 qh, eps 108 323 0,032 4.36 10 4 h start = 0.0001 2h, delta 10470 19141 2.00 10 4 0,462 2h, eps 6497 11551 4.00 10 4 0,0886 qh, delta 132 211 9.66 10 3 2.58 10 3 qh, eps 55 214 0,0512 2.40 10 3 Gennemsnitlig absolut afvigelse for alle punkterne. Tabel 5: Data for eksponentialfunktionen med Runge-Kutta-Fehlberg-metoden h start = 1 h start = 0.1 h start = 0.01 h start = 0.001 h start = 0.0001 Tid [ms] Punkter h slut Afvigelse [%] 88 145 0,0299 3.82 10 3 68 146 0,0216 3.66 10 3 90 146 0,0305 3.90 10 3 102 148 0,0304 3.84 10 3 80 149 0,0326 3.74 10 3 Gennemsnitlig absolut afvigelse for alle punkterne.
LITTERATUR 21 Litteratur [1] Damping. http://en.wikipedia.org/wiki/damping. [2] Predictor-corrector method. http://en.wikipedia.org/wiki/ Predictor-corrector_method. [3] Runge-kutta-fehlberg method. http://en.wikipedia.org/wiki/ Runge-Kutta-Fehlberg_method. [4] D. Fedorov. Ordinary differential equations. Noter til Numeriske Metoder, 2011. [5] K. K. F. John H. Mathews. Numerical Methods Using Matlab (4th Edition). Prentice Hall, 2004. [6] J. D. F. Richard L. Burden. Numerical Analysis, kapitel 5. Brooks Cole, 2004. [7] J. Rosales og I. Colomina. A flexible approach for the numerical solution of the ins mechanization equations. Proceedings of the 6th Geomatic Week, Barcelona, 2005.