Numerisk løsning av differensiallikninger Eulers metode, Eulers midtpunktmetode, Runge Kuttas metode, Taylorrekkeutvikling* og Likninger av andre orden MAT-INF1100
Diskretsering Utgangspunkt: differensiallikning for y(x) y tilnærmes i diskrete punkter x n = nh: y(x n ) y n. Tilnærmelse til y representeres ved følge (sample). Settet av x-verdier {x n } kalles ofte gitter el. grid y y 3 y 0 y 1 y 2 h x x 0 x 1 x 2 x 3 y 1, y 2, y 3... beregnes helst en for en i rekkefølge
Eulers metode ( K. 10.8.1) Likning: y (x) = f (x,y(x)), initialbetingelse: y(0) = y 0 I punkt x n = nh tilnærmer vi den deriverte med ensidig differens y y n+1 y n h, og setter inn i likning for x = x n y n+1 y n h = f (x n,y n ) y n+1 = y n + hf (x n,y n ). Neste y er nåværende y pluss h ganger nåværende endringsrate I rekkefølge beregnes y 1, y 2, y 3... Eksempel på endelig differense metode (deriverte i likning byttes ut med differenser) I Kalkulus skrives formler med n 1 og n ikke n og n + 1
Demonstrasjonseksempel i figurer og analyse Likningsett: y = ay, y(0) = y 0 Formelløsning: y(x) = y 0 e ax For hver y 0 får vi en unik løsning Utregningssekvens initialbet. y 0 er gitt y 1 = y 0 + hay 0 y 1 beregnes y 2 = y 1 + hay 1 y 2 beregnes... y i+1 = y i + hay i y i+1 beregnes... (Merk: ay i stigningsrate ved x i = ih.) Metoden er veldig enkel!
Eulers metode; geometrisk tolkning y y(x) y 3 y 0 y 1 y 2 h x x 0 x 1 x 2 x 3 Tynne blå linjer er løsninger av y = ay med andre startverdier. Numerisk løsning: skritter fram langs tangenter til løsningskurver. I illustrert tilfelle (y = ay) øker feil systematisk.
Midtpunktmetoder I Eulers metode bruker vi asymmetrisk differens for derivert y(x n + h) y(x n ) h y (x n ) = f (x n,y n ). Denne er unøyaktig. (Kompendium, kap. 9.6) Midtpunktformel y(x n + h) y(x n ) h y (x n + 1 h) =? 2 er mer nøyaktig. Men, hvilket uttrykk skal inn på høyresiden?
Forsøk 1; ekte midtpunktmetode* Vi midler y n og y n+1 i utregning av endringsrate y (x n + 1 2 h) f (x n + 1 2 h, 1 2 (y n + y n+1 )) Derved y n+1 y n = f (x n + 1 h 2 h, 1 2 (y n + y n+1 )). Utregningssekvens initialbet. y 0 er gitt y 1 y 0 = hf ( 1 2 h, 1 2 (y 0 + y 1 )) Likning løses for y 1 y 2 y 1 = hf ( 3h 2, 1 2 (y 1 + y 2 )) Likning løses for y 2... Likninger for y 1, y 2,... løses lett bare dersom f er enkel, feks. lineær Generelt må likningene løses numerisk; tungvint!
Forsøk 2: Eulers midtpunktmetode ( K. 10.8.3) Prosedyre for å regne ut y n+1 fra y n 1 Bruker Eulers metode 1 2 h fram: ŷ n = y n + 1 2 hf (x n,y n ) Vi kan si: ŷ n y(x n + 1 2 h) 2 Kvasi-midtpunktformel: y n+1 = y n + hf (x n + 1 2 h,ŷ n) Poeng: Vi løser ingen likninger. ŷ n, deretter y n+1 beregnes ved eksplisitte uttrykk. Bedre enn Eulers metode. Brukes ofte i forbinelse med partielle differensiallikninger (den ukjente er en funksjon av flere variable), men sjelden for ordinære differensiallikninger. Partielle likninger er ikke med i MAT-INF1100
Eulers midpunktmetode; grafisk framstilling y y(x) y 1 y 0 ŷ 0 h x x 0 x 1 Eksempel: første steg. Eulers metode 1 2 h fram til ŷ 0 Stigning i løsningskurve gjennom ( 1 2 h,ŷ 0) brukes for å finne y 1. (Rødt + tilsvarer y 1 funnet ved Eulers metode)
Eulers metode for demonstrasjonseksempel ( K. 10.8.2) Ser igjen på f (x,y) = ay dvs. likning og løsning y = ay, y(0) = y 0 y 0 e ax. Eulers metode gir y n+1 = y n + hf (x n,y n ) = (1 + ah)y n. y n bestemmes altså fra differenslikningen y n+1 = (1 + ah)y n. Klassifisering: Første orden, lineær, homogen; Løses lett i formel Generelt for endelig differens metoder: numerisk løsning av differensiallikninger innebærer å simulere differenslikninger
Løsning av differenslikning fra differensiallikning Løsning av y n+1 = (1 + ah)y n, y 0 gitt, er ( y n = (1 + ah) n y 0 = 1 + ax ) n n y0. n Vi regner fram til en fast ˆx = x n = nh med stadig større n og mindre h. Får vi rett svar når n? ( lim y n = lim 1 + aˆx ) n y 0 = y 0 e aˆx n n n Grenseverdi samsvarer med formelløsning innsatt x = ˆx. Når h 0 nærmer numerisk løsning seg den eksakte: konvergent, likevel unøyaktig selv for små h
Eulers metode med forskjellige h y y(x) 0 1 2 3 x y = 0.6y, y(0) = 1 simulert for x [0,3] med 2, 4 og 20 punkter.
Sammenlikning av Eulermetoder* Eulers metode, omskriving av resultat y n = (1 + ah) n y 0 = K n E y 0, der K E = 1 + ah Eulers midtpunktmetode ŷ n = y n + 1 2 hay n y n+1 = y n + ahŷ n = y n + ah(y n + 1 2 ahy n) = K m y n der K m = 1 + ah + 1 2 (ah)2. Da er y n = K n m y 0 Eksakt løsning y(x n ) = y 0 e axn = y 0 e anh = y 0 (e ah ) n = K n y 0 der K = e ah
... Alle løsninger har formen y(x n ) = K n y 0. Forskjeller i K sier noe om hvor ulike løsningene er. Taylorrekkeutvikling av K = e ah e t = 1 + t + 1 2 t2 + 1 6 t3 +... innsatt t = ah Euler K E = 1 + ah E. midtp. K m = 1 + ah + 1 2 (ah)2 Eksakt K = 1 + ah + 1 2 (ah)2 + 1 6 (ah)3 +...
Runge-Kuttas metode (orden 4); ( K. 10.8.4) y = f (x,y), y(0) = y 0 4 stigningsrater beregnes og midles. Metode utledes ikke;men er lett å kode Skritt fra x n til x n+1 1 m 1 = f (x n,y n ) (som i Euler) 2 m 2 = f (x n + 1 2 h,y n + 1 2 hm 1) (Eulers midt.) 3 m 3 = f (x n + 1 2 h,y n + 1 2 hm 2) 4 m 4 = f (x n + h,y n + hm 3 ) 5 Utregning av ny y: y n+1 = y n + h 6 (m 1 + 2m 2 + 2m 3 + m 4 ) Andre indeks på m ene er sløyfet ( m avhenger av n også). Noen steg, men enkel å kode! Runge-Kutta metoder er mye brukt
Taylorrekkeutvikling* Eksempel y = e xy Derivasjoner y = (e xy ) = e xy (xy) = e xy (y + xy ) y = (y ) = e xy (y + xy ) 2 + e xy (2y + xy )... Har vi y ved en x kan deriverte av økende orden regnes ut etter tur Taylorrekkeutvikling gir y n+1 = y(x n + h) = y(x n ) + hy (x n ) + 1 2 h2 y (x n ) +...
NYTT TEMA Differensiallikninger av høyere orden og sett av likninger
Koblede differensiallikninger med flere ukjente To likninger av første orden der ukjente er y(x) og z(x). M likninger av første orden der ukjente er y (1) (x)...y (M) (x). y = F(x,y,z), z = G(x,y,z), dy (1) dx = F (1) (x,y (1)...,y (M) ), dy (2) dx = F (2) (x,y (1)...,y (M) ),... dy (M) dx = F (M) (x,y (1)...,y (M) ),
Omskrivning; to førsteordens 1 andreordens* Eksempel; lineært sett, konst. koeff. y = ay + bz, z = cy + dz, Den øverste gir (b 0) z = (y ay)/b. Innsatt i den nederste z = cy + dz ( y ) ay ( y ) ay = cy + d b b y ay = (bc ad)y + dy y = (a + d)y + (bc ad)y Her er vi mest opptatt av det omvendte.
Differensiallikning av andre orden y = F(x,y,y ), y(0) = b 0, y (0) = b 1 (1) Vi har formler for løsning når likningen er lineær med konstante koeffisienter, dvs. F = f (x) py qy, der p og q er konstante. Kommer i Kalkulus, kap. 10.5,6 Ellers: Numerisk løsning (stort sett)
Omskrivning til 2 likninger av orden 1 Definerer z = y da er z = y og Vi får da 2 førsteordenslikninger y = F(x,y,y ) z = F(x,y,z) y = z z = F(x,y,z) med y(0) = b 0, z(0) = y (0) = b 1. Generelt kan en likning av orden n gjøres om til n likninger av orden 1 Dette er standard framgangsmåte ved numerisk løsning med initialverdier; både Eulermetoder og Runge-Kutta kan lett generaliseres til sett av førsteordenslikninger
NYTT TEMA Numerisk løsning av sett av likninger Kompendium, kap. 8
Eulers metode Definerer som før x n = nh og y n y(x n ), z n z(x n ) Regner ut y 1,z 1, deretter y2,z2 osv. som før. Initialbetingelser gir z 0,y 0. Rekursjon fra n 1 til n: y n y n 1 h z n z n 1 h Eksplisitt skrivemåte = z n 1 = F((n 1)h,y n 1,z n 1 ) y n = y n 1 + hz n 1 z n = z n 1 + hf((n 1)h,y n 1,z n 1 )
Kompendium 8.1.2 I kompendiet er metoden skrevet med y n og y n(= z n ) som ukjente. Umiddelbart y n = y n 1 + hy n 1 Likning for ny y utledes med Taylorpolynom T 1 y y n = y n 1 + hy n 1 = y n 1 + F((n 1)h,y n 1,y n 1 ) Resultatet er som på forrige lysark med z n y n.
Demonstrasjonsproblem med kjent løsning y + y = 0, y(0) = 1, y (0) = 0 Løsning y(x) = cos(x) Vi ser at y (x) = (cos x) = ( sinx) = cos x = y(x) Generell metode for slike likninger kommer senere ( K. kap. 10.5) Løsningen er en ren periodisk svingning og kan i fysikken beskrive feks. pendelbevegelse Omskrivning til sett av likninger med y(0) = 1, z(0) = 0. y = z z = y
Eulers metode y x Eksakt h = 0.6 h = 0.3 h = 0.1
Eulers metode, større x y Eksakt h = 0.1 Eksakt løsning periodisk; numerisk løsning vokser instabilitet x
Observasjoner Eulers metode brukes lite i praksis, bla.a. fordi Eulers metode er unøyaktig; selv liten h gir stor feil. Det er fordi vi bruker en ensidig differens for den deriverte. En svingende løsning, som den i eksemplet, behandles svært dårlig med Eulers metode: Den er instabil feilen vokser over alle grenser. Vi kunne ha vist at Eulers metode er instabil i eksemplet vårt.
Eulers midtpunktmetode Rekursjon fra n 1 til n i to steg. 1: mellomsteg; Eulers metode 1 2h fram (sløyfer indeks på ŷ og ẑ) 2: Endelig steg ŷ = y n 1 + 1 2 hz n 1 ẑ = z n 1 + 1 2 hf((n 1)h,y n 1,z n 1 ) y n = y n 1 + hẑ z n = z n 1 + hf ( (n 1 2 )h,ŷ,ẑ) En kvasi-midtpunktformel om x = (n 1 2 )h Akkurat som for èn førsteordenslikning
Sammenlikning for h = 0.1 y Eksakt Midtpunkt Euler Euler Midpunkt Euler og Eksakt kan ikke skilles i diagram x
Midtpunkt Euler, følsomhet for h y x Eksakt h = 0.3 h = 0.1 Midtpunkt Euler er også litt instabil Utprøving av ulike h er viktig
Midtpunkt Euler, Runge-Kutta, h = 0.3 y x Eksakt Midtp.-Euler Runge-Kutta(4) Runge-Kutta mye bedre enn midtpunkt Euler
Instabilitet og Eulers metode* y n = y n 1 + hz n 1 z n = z n 1 hy n 1 For n > 0 kan vi elimenere z ene i den nederste vha. den øverste y n+1 2y n + y n 1 h 2 = y n 1 Kommentar: differens for y insatt i y = y; vi er tilbake til en direkte diskretisering av andreordenslikningen! Omskrivning: Andre ordens differenslikning y n+1 2y n + (1 + h 2 )y n 1 = 0
Løsning av differenslikning* Eulers metode betyr at vi løser (nummerer om) y n+2 2y n+1 + (1 + h 2 )y n = 0, n 0 Men denne kan vi løse i formel! Setter inn y n = r n r 2 2r + 1 + h 2 = 0 dvs r 1 = 1 + ih, r 2 = 1 ih
...* Dette er tilfelle 3 i kap. 4 i Kalkulus. Setning (4.1.14) der θ er arumentet til r 1 og y n = ρ n (E cos(nθ) + F sin(nθ)) ρ = r 1 = 1 + h 2 > 1 Løsning vokser over alle grenser når n