Metoder for ordinære differensiallikninger TMA45 våren 9 Vi skal lage numeriske metoder for å finne tilnærmede løsninger for initialverdiproblemet y = fx, y) yx ) = y. Dette er et kjempefelt. Vi ar bare tid til å skrape så vidt i overflaten, men vi skal prøve å belyse et par momenter. Runge-Kutta-metoder En numerisk metode for ordinære differensiallikninger starter med følgende to observasjoner: Vi vet va den analytiske løsningen er i x. Dette vet vi på grunn av initialkravet yx ) = y. Vi vet vilket stigningstall den analytiske løsningen ar i x, for evaluerer vi differensialikningen i x, får vi y x ) = fx, y ). La oss lage oss et punkt x litt ut fra x, med avstand = x x. Siden vi ar funksjonsverdien og stigningstallet til y i x, kan vi bruke lineær tilnærming, og gjette på yx ): yx ) yx ) + y x ) = yx ) + fx, y ). Nå definerer vi y = yx )+fx, y ) yx ). Dette er den tilnærmede verdien til y i x. Vi tar den for god fisk, lager oss et nytt punkt x = x +, og beregner y = y + fx, y ), som er en tilnærming y yx ). Nå fortsetter vi i samme stilen, gitrer opp intervallet vi skal løse likningen på med gitterfinet, slik at punktene er gitt ved = i. Tilnærmingen til y ) kaller vi y i, og metoden kalles Eulers eksplisitte metode: y i+ = y i + f, y i ), Metoden kalles eksplisitt, siden likningen kommer ferdig løst for y i+. Vi skriver nå opp et par andre varianter. Alle er basert på å bytte ut stigningen f, y i ) med et eller annet estimat. Setter vi inn f+, y i+ ) istedet for f, y i ), får vi Eulers implisitte metode: y i+ = y i + f+, y i+ ), og bytter vi ut med f, y i ) + f+, y i+ )), får vi trapesmetoden: y i+ = y i + f, y i ) + f+, y i+ )). Disse to metodene kalles implisitte fordi likningene ikke er ferdig løst for y i+. Noen ganger er det lett å finne y i+, andre ganger ikke. Hvis vi bytter ut f+, y i+ ) i trapesmetoden med en tilnærming basert på et eksplisitt eulersteg, får vi den eksplisitte Heuns metode: og vis vi klinker til og bytter ut tilnærmingen til stigningstallet med følgende avanserte opplegg, får vi nok en eksplisitt variant, nemlig Runge-Kuttas klassiske fjerdeordens metode, populært kalt RK4: k = f, y i ) k = f +, y i + ) k k = f +, y i + ) k k 4 = f +, y i + k ) y i+ = y i + 6 k + k + k + k 4 ). Dette er alle metodene vi skal analysere, og alle er eksempler på Runge-Kutta-metoder. Nå lurer du sikkert på vorfor man ar så mange forskjellige metoder, og det korte svaret er som ellers i anvendt matematikk: noen metoder eksisterer fordi de er lette å finne opp og forstå, mens andre metoder finnes fordi de er skikkelig bra. Eksempel.. Vi løser initialverdiproblemet y = y y) = med Eulers eksplisitte metode på intervallet [, ]. Siden fx, y) = y, blir metoden med y i+ = y i y i = )y i y =. Løsning for =.5 gir figuren under. De blå diamantene er y, y, y, y 4 og y 5, mens den røde kurven er den analytiske løsningen y = e x. Vi beregner y) = /e 6787944744, som kan sammenliknes med y 5 = 6465: y 5 y) =.5479744... y i = y i + f, y i ) y i+ = y i + f, y i ) + f+, y i )),
Eksempel.. Vi løser samme problem som i sted med Eulers implisitte metode. Metoden blir y i+ = y i y i+, som vi løser for y i+, og får y i+ = y i + ). Figur under for =. Vi får y 5 = 96, og Eksempel. Heuns metode: yi = y i y i y i+ = y i y i + yi ) og y 5 y) =.4649588674749. Bedre enn Euler, men ikke elt trapesmetoden. y 5 y) =.4755888558..... Eksempel. Til slutt RK4: Eksempel. Trapesmetoden: y i+ = y i y i + y i+ ). k = y i k = y i + ) k k = y i + ) k Vi løser for y i+, og får k 4 = y i + k ) Denne treffer noe bedre: y i+ = + y i. y 5 y) =.998797. y i+ = y i + 6 k + k + k + k 4 ). Denne treffer ganske bra: y 5 y) =.475856787e 5. Noe må den a igjen for å være så komplisert.....
Utledningsmetoder I forrige avsnitt utledet vi Eulers eksplisitte metode. For å sette disse metodene i kontekst med tidligere pensum i kurset, og for å indikere vordan man kan lage flere metoder, skal vi utlede noen av dem med kjente metoder for numerisk integrasjon og derivasjon. En uledningsteknikk er å gitre opp med = +, integrere differensiallikningen y+ ) y ) = = xi+ x i xi+ y x) dx fx, yx)) dx, bruke y i+ y i y+ ) y ) på venstre side, og tilnærme integralet xi+ fx, yx)) dx, med en kvadraturregel. Gjør man den særdeles enkle tilnærmingen xi+ fx, yx)) dx. xi+ f, y i ) dx = f, y i ), får man eksplisitt Euler, og velger man den tilsvarende enkle tilnærmingen xi+ fx, yx)) dx f+, y i+ ), får man Eulers implisitte metode. Trapesregelen xi+ fx, yx)) dx f, y i ) + f+, y i+ )) gir trapesmetoden y i+ = y ) + f, y i ) + f+, y i+ )). Tilnærmer man trapesregelen med formelen xi+ fx, yx)) dx fxi, y i ) + f+, y i+) ) der yi+ = y i + f, y i ) er et eksplisitt eulersteg, får man Heuns metode. Bruker man tilnærmingen xi+ xi + + fx, yx)) dx f, y ) i + y i+ får man midtpunktmetoden. RK4 er avledet fra Simpsons metode. Tilnærmer man xi+ fx, yx)) dx, med Simpson, får man en implisitt metode som ikke er pensum, og bytter man ut de implisitte verdiene leddene i denne metoden med forskjellige estimater basert på eksplisitt Euler, får man RK4, litt som Heuns metode er avledet fra trapesmetoden. Metodene vi ar utledet til nå, kalles enstegsmetoder, for kun y i+ og y i figurerer i likningene. Grunnen til at alle metodene er på denne formen, er at det kun er brukt en type endelig differansetilnærming på venstre side av y x) = fx, yx)), nemlig den første ordens differansen y + ) y i+ y i. Nå er det ingenting i veien for å bruke en øyere ordens tilnærming, for eksempel sentraldifferansen y ) y i+ y i. Setter man denne inn for y, får man leap-frogmetoden y i+ = y i + f, y i ). Her inngår både y i+, y i og y i, og leap-frog er et eksempel på en flerstegsmetode. Flerstegsmetoder er ikke pensum i dette kurset. Feilanalyse I dette avsnittet skal vi ta en titt på vorfor metodene treffer så foreskjellig. Vi skal indikere vordan analysen får for eksplisitt Euler, og så skrive opp resultatet for de andre metodene. Lineariseringen som gir det første eulersteget er yx ) = yx + ) yx ) + fx, yx )) = yx ) + y x ). Vi antar at y er en analytisk funksjon, og taylorutvikler: yx ) = yx + ) = yx ) + y x ) + y x ) + Sammenlikner vi denne med y = yx ) + y x ), ser vi at feilen i det første eulersteget er gitt ved yx ) y = y x ) + y x ) + 6 altså taylorrekkealen til y. Hvis vi antar at er liten, slik at er mye større enn, og leddet y x ) dominerer alen på taylorrekken, er det ikke urimelig å evde at eksplisitt Euler ar lokal feil av størrelsesorden. Feilen etter ett steg er altså av størrelsesorden. Men va er feilen etter n steg? I eksemplene i forrige avsnitt, kjørte vi løserne på intervallet [, ]. La oss si at vi kjører på intervallet [x, x + a]. Vi velger slik at x n = x + n = x + a og n = a.
Hvis vi nå gjør n steg med eksplisitt Euler, samler vi i vert steg opp en lokal feil omtrent lik Feilen etter n steg blir y ). n i= y ), og vis vi antar at y M på [x, x + a], er det rimelig å evde at n i= y ) Mn = M a = Ma. Vi sier derfor at eulers metode ar global feil av størrelsesorden. Teorem. Lokal og global feil for metodene: Metode Lokal feil Global feil Eksplisitt Euler Implisitt Euler Trapesmetoden Heuns metode RK4 5 4 Vi skal ikke bevise dette teoremet, men nevner at bevisteknikken er den samme for alle metodene: taylorutvikle om x for å finne lokal feil, og så se på va som skjer etter n steg. Dette teoremet forklarer langt på vei va som skjedde i eksemplene i forrige avsnitt. Nå tar vi et par eksempler der vi lar. Eksempel. Vi kjører samme eksempel som i forrige avsnitt, men nå bruker vi Eulers eksplisitte metode for =., =. og så videre. Resultatene er oppsummert i følgende tabell: y n y).97448e.8479989878e.8464478858e 4 4.89478474865e 5 5.89494485e 6 Dette eksemplet demonstrerer tydelig at feilen etter n steg er proporsjonal med. På folkemunne sier man gjerne at man får en ekstra korrekt desimal ver gang man tideler. Eulers implisitte metode oppfører seg omtrent likt, så den opper vi over. Eksempel. Trapesmetoden for =., =. og så videre: y n y).689878857487e 4.6569574647e 6.65658745969e 8 4.6948755e 5 5.478449988979e Her er feilen etter n steg proporsjonal med. På folkemunne sier man gjerne at man får to desimaler ver gang man tideler. Heuns metode produserer omtrent den samme tabellen. Eksempel. RK4: y n y).4568e 7.99887564e.996888865564e 5 4.664555976e 5 5.669787547e 5 Hva skjedde er? Feilen etter n steg proporsjonal med 4, altså fire desimaler for ver tideling av, men bare for de første tre tidelingene. Når = ar vi nådd såkalt maskinpresisjon. Matlab regner bare med 6 desimaler, og dette setter en stopper for konvergensen. Eksempel.. RK4, men nå ar matlab fått beskjed om å regne med desimaler: y n y).456864e 7.99849e.6878e 5 4.65974954578e 9 5.65687557549e Tabellene til nå ar tatt en brøkdel av et sekund å produsere. Til sammenlikning tok denne er rundt ti minutter, pluss noen timer knoting for å finne ut av vordan matlab skal regne riktig med desimaler. Presisjon koster! Stabilitet Har metodene noen andre egenskaper? Eulers eksplisitte og implisitte metoder ser til forveksling like ut, og ar akkurat samme orden. Men de oppfører seg ganske forskjellig. Eksempel.. Vi kjører eksplisitt Euler på samme problem som over, men på intervallet [, ], og =. Det er trukket rette linjer mellom eulerstegene, så det skal bli litt enklere å se va som skjer... 5 5 5 Eksempel.. Vi kjører igjen på intervallet [, ], men nå med =.5. Den numeriske løsningen ser ut til å virre frem og tilbake en del før den sikter seg inn på rett spor. 4
ar studert, y i+ = y i y i = )y i = ) y i = ) i+ y = ) i+, med andre ord en geometrisk følge. Siden gymnaset ar du visst at denne følgen divergerer dersom - 5 5 5 Eksempel. Intervallet [, ], men nå med =.. Hva den numeriske løsningen tenker på, er ikke godt å si, men noe fornuftig er det ivertfall ikke. 4 - - - -4 5 5 5 og denne uliketen blir innfridd akkurat i det bikker. Kjører vi samme resonnementet på Euler implisitt, får vi y i+ = + ) i+. I vårt tilfelle er >, så det må være klart at < <, + ) i+ og følgelig konvergerer følgen mot for alle valg av. Analysen vi ar gjort, kalles stabilitetsanalyse, og y = y er et såkalt testproblem. Vi får ikke eksakt informasjon om vordan Eulers metode kommer til å oppføre seg for alle mulige differensiallikninger, men vi kan få en magefølelse allikevel. Vi skal ikke gå inn på en lengre diskusjon om stabilitetsanalyse, som er et forskningsfelt i seg selv, men nevne at stabilitetsproblemer er som regel betydelige for eksplisitte metoder, og ikke-eksisterende for implisitte metoder. Eksempel. Vi prøver Heuns metode på [, ], med =. Som du ser, går det ganske dårlig. Eksempel. Vi kan slå fast at eksplisitt Euler ikke fungerte, og det ser ut som om det går galt fordi er for stor. Vi prøver Euler implisitt på samme intervall, men med =. Det går riktig bra. 9 8 7 6 5 4. 5 5 5 -. 5 5 5 Forklaringen på va som skjedde er, er ganske enkel. Eulers eksplisitte metode er, for eksemplet vi Eksempel. Vi prøver RK4 på [, ], med =.. Det går ikke noe bedre. 5
9 8 7 6 5 4 5 5 5 Jeg ar for RK4 beoldt parentesene for å prøve å beolde den visuelle liketene med de generelle likningene som definerer metoden. Men det er strengt tatt ikke nødvendig. I dette eksemplet kan y i+ beregnes analytisk for de implisitte metodene, men merk at dette fort kan bli en smule åpløst om likningene ikke er kvadratiske i y i+, slik som er. Standardteknikken er da å slå til med en numerisk likningsløser. Vanligvis er fikspunkmetoden et greit valg. Iterasjonen y i+ = y i + y i+ + y i+ + + Mer om implisitte metoder Så vorfor bør vi ikke alltid bruke implisitte metoder? Det er et komplisert spørsmål å svare på, men vi skal gjøre et forsøk i dette avsnittet. Vi begynner med et eksempel, der vi setter opp de forskjellige numeriske metodene. Eksempel. Vi skriver opp de forskjellige metodene for y = y xy + x. Eksplisitt Euler: Imsplisitt Euler: Trapesmetoden y i+ = y i + Heuns metode y i+ = y i + y i y i + y i+ = y i + y i+ + y i+ + + yi yi + y i+ + y ) i+ + + + yi+ = y i + y i yi + y i+ = y i + yi yi + y i+ +y ) i+ ) + + + RK4 k = y i yi + yi + k = k ) ) xi + yi + k ) + ) + yi + k = k ) ) xi + yi + k ) + ) + k 4 = y i + k ) + )y i + k ) + + ) y i+ = y i + 6 k + k + k + k 4 ). allerede er på formen y i+ = gy i+ ), og dersom er liten, blir gjerne g liten, og da usker du fra tidligere at fikspunktmetoden konvergerer ganske kjapt. Eksempel. Vi løser med y = y xy + x y) = 5 y i+ = y i + y i+ + y i+ + +. Under er løsningskurve beregnet med =. på intervallet [, ]. Fikspunktmetoden trengte med startgjetning y i et sted mellom og iterasjoner for å nå maskinpresisjon i vert steg. Med lavere vil antall iterasjoner gå ned. 5 5 5.5.. 4 5 6 7 8 9 Eksemplet over illustrerer et viktig moment. Koster det mange flyttallsoperasjoner å kjøre en metode til en gitt presisjon? Det jelper ikke å a en metode som beregner alt til maskinpresisjon om metoden tar ett år å kjøre. Implisitte metoder er ofte robuste og stabile, men de koster også mer å bruke. Systemer av differensiallikninger Alle metodene gjennomgått til nå, fungerer like fint på systemer av differensiallikninger. Husk fra M at øyere ordens differensiallikninger kan skrives om til førsteordens systemer av differensiallikninger, så vi trenger ikke lage egne metoder for dem. 6
Eksempel. Differensiallikningen for en pendel er y + sin y =. Vi skriver denne om til et system ved å sette z = y, slik at systemet blir y = z z = sin y Vi skriver nå opp metodene. Eksplisitt Euler: Imsplisitt Euler: Trapesmetoden: y i+ = y i + z i z i+ = z i sin y i y i+ = y i + z i+ z i+ = z i sin y i+ y i+ = y i + z i + z i+ ) z i+ = z i sin y i + sin y i+ ) Skjønner du disse er, klarer du nok Heun og RK4 også. Alle k-ene blir vektorer med to komponenter.) Merk at man på de implisitte metodene må kjøre en eller annen flerdimensjonal likningsløser for å finne y i+, z i+ ) i vert steg. Eksempel.. Lotka-Volterra-systemet y = y z) y) =.5 z = zy ) z) =.5 beskriver to dyrepopulasjoner, der den ene driver med predasjon på den andre. Dersom det er mange mus y) i fjellet, får rev og mår z) rikelig med mat til ungene sine, men er det få mus, vokser ikke så mange unger opp. Vi løser dette systemet med eksplisitt Euler, og får figuren under. Bevaring av viktige størrelser Nå skal vi ta for oss nok en instans av steg tre: ar metodene noen andre egenskaper som er verdt å snakke om? Det kan være lurt å a følgende eksempel i bakodet. La oss si at du ønsker å gjøre beregninger på planetenes gang i solsystemet. Du lærte på gymnaset at i solsystemet er energien for alle praktiske formål bevart, ivertfall på kort sikt. Planetenes bevegelser følger Newtons gravitasjonslov, som for solsystemet vårt blir et differensiallikningssystem med tre likninger per planet. En numerisk metode for å simulere planetenes gang rundt solen, bør sørge for å bevare energien til ver planet, ellers kan planetene kjøre i numeriske spiraler ut i verdensrommet. Eksempel.. I forrige eksempel løste vi Lotka- Volterra med eksplisit euler, og =. gav en pen figur. Hvis prøver med =., får vi figuren under. Systemet starter i.5,.5), så vi ser at Euler lager en utadgående spiral. 4.5.5.5.5.5.5 Eksempel.. Nå kjører vi implisitt euler med =., og får får følgende figur. Siden systemet starter i.5,.5), ser vi at dette er en innadgående spiral..8.8.6.6.4.4...8.8.6.4.6...4.6.8.4..4.6.8 7
Eksempel.. Trapesmetoden klarer visst å beolde det pene periodiske svingemønsteret, selv med =...8 Eksempel.5. Som absolutt siste eksempel jeg lover), tar vi eksplisitt Euler med =., men for x [, ]. Dette er litt for å demonstrere at det går galt selv med små det spiller ingen rolle vor liten er er, det går åt skogen uansett). Og litt fordi figuren var så vakker å skue. I eksempel. var ikke intervallet langt nok til at spiraliseringen kom til uttrykk i figuren. Men den er der..6.4..8.6.4...4.6.8 Hvorvidt figurene i de tre eksemplene over ble spiraler eller lukkede kurver, ar ingenting med differensialikningene å gjøre; det er kun forskjeller i de numeriske metodene som slår ut er. Løsningene skal definitivt være lukkede baner, og vi slår oss til ro med at trapesmetoden klarer noe som ikke eksplisitt og implisitt euler klarer. Vi merker oss også at numeriske metoder for differensialliknigner er mer enn bare presisjon og desimaler. Dette er for øvrig også et forskningsfelt som kalles geometrisk integrasjon - studiet om artige fenomener i numerisk løsning av differensiallikninger. Eksempel.4. Vi tar et siste eksempel. Symplektisk Euler er definert ved følgende skjema y i+ = y i + y i z i ) z i+ = z i + z i y i+ ), og produserer en tilsvarende pen figur. Symplektisk euler bevarer nemlig noe som kalles den symplektiske strukturen..8.6.4..8.6.4...4.6.8 8