Kurs 2D1213, Laboration 2: Att lösa ordinära differentialekvationer med finita differensmetoden Michael Hanke October 19, 2006 1 Beskrivning och mål Matematiska modeller i vetenskap och ingenjörsvetenskap baseras nästan alltid på differential- eller integralekvationer och det är därför nödvändigt med metoder och verktyg för att effektivt lösa dessa. Sedan Newton och Leibniz introducerade differentialkalkylen har stor möda lagts ned på att just förstå och lösa differentialekvationer. Tyvärr är det endast i några få fall det går att hitta en sluten analytisk lösning till ett problem och numeriska metoder måste därför användas. Den här laborationen handlar om numerisk lösning av ordinära differentialekvationer och det kommer visa sig att det kan uppstå stora svårigheter även för enkla problem. Målet med laborationen är att förstå finita differensmetoder för ordinära differentialekvationer att förstå sambandet mellan en ekvation och de numeriska metoder som används att kunna välja en numerisk metod och förstå dess egenskaper så att du slutligen kan tillförlitligt lösa standardproblem och tolka resultaten 1
2 Förberedelser 1. Studera MATLABs ODE-lösare (Kapitel 11.2.1 i Användarhandledning i MATLAB eller i online-dokumentationen.) 2. Bli bekväm med MATLAB! För att använda lösaren för begynnelsevärdesproblem så effektivt som möjligt är det bra att göra anrop med endast ett returnerat värde, t ex res = ode45(...). Använd gärna funktionen deval (se help deval) för att få välinterpolerade värden 3. Repetera de matematiska grunder för ordinära differentialekvationer ni fått i tidigare kurser. 3 Problem 3.1 Teoretiska frågor 1. Sant eller falskt: Det finns ett oändligt antal matematiska funktioner som interpolerar en given mängd datapunkter. 2. Sant eller falskt: Då en kontinuerlig funktion interpoleras med ett polynom i ekvidistanta punkter i ett givet intervall, så konvergerar alltid polynomet mot funktionen då antalet interpolationspunkter växer. 3. Varför är interpolation med polynom av hög grad ofta dåligt? 4. (a) Har en differentialekvation (ensam) generellt en unik lösning? (b) Om den har det, varför? Om inte, vilken ytterligare information behövs för att en unik lösning skall finnas? 5. (a) Vad menas med en första ordningens ODE? (b) Varför skrivs en ODE av högre ordning vanligen om till en ODE av första ordningen? 6. Skriv följande system som ett första ordningens system: 1 = GMy 1 /(y 2 1 + y 2 2) 3/2, 2 = GMy 2 /(y 2 1 + y 2 2) 3/2. 7. Beskriv i ord skillnaden mellan det lokala och det globala felet som uppkommer då ett begynnelsevärdesproblem för en ODE löses numeriskt. 2
8. Vad menas en numerisk metod av ordning p då en ODE löses. 9. (a) Vad menas med en styv ODE? (b) Varför kan en styv ODE vara svår att lösa numeriskt? 10. Vilken är den enklaste numeriska metoden för att lösa en styv ODE? 3.2 Polynominterpolation Detta problem är väldigt enkelt och meningen är att det skall vara en introduktion till de mer avancerade problem som följer. Du kommer konstruera några interpolationspolynom till givna data för en komplexvärd funktion och skall använda detta polynom till funktionsutvärdering. 1. Bestäm andragradspolynomet p(t) som sammanfaller med f(t) = t i t = 0, 1, 4. Jämför approximationen p(2) med det exakta värdet f(2) = 2 1.414214! Då felet är ganska stort, lägg till en interpolationspunkt t = 3. Hur stort är felet nu? 2. Gammafunktionen definieras som Γ(t) = 0 τ t 1 e τ dτ, t > 0. För ett heltalsargument n, har gammafunktionen värdet så interpolation av punkterna Γ(n) = (n 1)!, t 1 2 3 4 5 y 1 1 2 6 24 borde ge en approximation till gammafunktionen i det givna intervallet. 3. Beräkna det fjärdegradspolynom som interpolerar de fem datapunkterna. Plotta polynomet samt värdena av den inbyggda gammafunktionen i intervallet [1, 5]. (a) Plotta kurvan för det relativa felet i en separat figur. 3
3.3 Arenstorf-banan Betrakta en begränsad variant av trekroppsproblemet där kropp med liten massa roterar kring två andra kroppar med större massor, så som en satellit roterar kring jorden och månen. Vi använder ett tvådimensionellt kartesiskt koordinatsystem i planet genom de tre kropparna. Låt x-axeln gå genom de två kropparna med stora massor och låt origo ligga i masscentrum för de stora kropparna. Vi får då ett roterande koordinatsystem! Alltså måste vi ta hänsyn till såväl de gravitationellasom centrufugal- och Corioliskrafterna. De återstående ekvationerna fås från Newtons lag i skalad form för satellit-jord-mån-systemet där och med data 1 = y 1 + 2y 2 ˆµ y 1 + µ N 1 µ y 1 ˆµ N 2, 2 = y 2 2y 1 ˆµ y 2 N 1 µ y 2 N 2, N 1 = ((y 1 + µ) 2 + y 2 2) 3/2, N 2 = ((y 1 ˆµ) 2 + y 2 2) 3/2, µ = 0.012277471, ˆµ = 1 µ. Koordinaterna (y 1, y 2 ) är koordinaterna för satelliten. Värdet µ är förhållandet mellan månens massa och systemets totala massa. Längdenheten för y är medelavståndet mellan mellan jorden och månen (ca 384000 km), och tidsenheten är en månad. Initialvärdena y 1 (0) = 0.994, y 1 (0) = 0, y 2(0) = 0, y 2 (0) = 2.00158510637908252240537862224, är givna så att en periodisk bana erhålls. Periodtiden är ungefär T = 17.0652166. Periodicitet betyder att satelliten har samma position och hastighet vid tiden t = T som vid initialtiden t = 0. 1. Formulera differentialekvationen som ett första ordningens system. Lös sedan detta problem med en valfri ODE-lösare i MATLAB. Noggranheten skall vara 10 8 för både RelTol och AbsTol. Gör en fasplot! Hur många steg behövde lösaren för att lösa systemet? 2. Implementera RK4-metoden. Använd ditt program för att lösa ovanstående problem. Börja med en steglängd på h = T/n där n = 1000. Detta betyder att du använder 1000 steg. Gör en fasplot. Dubblera sedan n tills plotten ser bra ut. Hur många steg behövdes? 4
3. En astronom är intresserad av mycket högre noggrannhet. Antag att han vill beräkna y(0) y(t) med ett fel på ±1km. Fortsätt dubblera n som förut och beräkna, för varje n, avståndet y(0) y(t) tills beräkningarna blir alltför tidskrävande. Uppskatta, från de värden du nu fått fram, hur många steg som krävs för att nå astronomens noggrannhet. 3.4 Kemisk reaktionskinetik Antag att koncentrationen som funktion av tiden för tre kemiska substanser ges av y 1 (t), y 2 (t) och y 3 (t). Om reaktionshastigheten y 1 y 2 är proportionell mot y 1 och rektionshastigheten y 2 y 3 är proportionell mot y 2, så är koncentrationerna styrda av den linjära, homogena, ordinära differentialekvationen y = y 1 y 2 y 3 = k 1 0 0 k 1 k 2 0 0 k 2 0 där k 1 och k 2 är hastighetskonstanterna för de två reaktionerna. Lös systemet numeriskt och antag att initialkoncentrationerna är y 1 (0) = y 2 (0) = y 3 (0) = 1. Låt k 1 = 1 och k 2 = 1000. Lös systemet med en Runge-Kutta-metod (t ex ode45, ode23), en Adams-metod (t ex ode113) och en metod för styva system (t ex ode15s, ode23s, ode23tb). Jämför de olika metoderna med avseende på dess effektivitet, mätt som antal funktionsanrop eller CPU-tid, för en given noggrannhet. Integrera ODE-systemet från t = 0 tills lösningen (nästan) når jämvikt eller tills metoden blir allt för tidskrävande. Tips: Titta på Robertson-problemet! 3.5 Likriktarkretsar Hemelektronik behöver oftast en likström för att fungera medan strömmen i vägguttaget är växelstöm. Växelstömmen är väl lämpad att omvandla till den specifika spänning som behövs för varje elekronisk apparat. Steget efter detta är att likrikta stömmen. Nuförtiden används nästan uteslutande IC-kretsar för detta, medan det förr var vanligare med diodbryggor. I denna uppgift vill vi beräkna det transienta beteendet hos två enkla kretsar, nämligen en envägslikriktare och en likriktarbrygga. 1. Vi börjar med en envägslikriktare. Kretsen finns skissad i figur 1 Karakteristiken för kretsarna är som följer: Spänningskälla E(t) = E 0 sin(2πft) med en (topp) spänning på E 0 = 5V och en frekvens på f = 50Hz. 5 y 1 y 2 y 3,
D E(t) C R (a) Figure 1: En enkel envägslikriktare Kondensator Här använder vi en enkel linjär kondensator så att i = med C = 1000µF. C dv dt Lastresistor Denna resistor styrs av Ohms lag: v = Ri with R = 100Ω. Diod Karakteristiken för dioden är starkt ickelinjär, ( v ) ) i = I D (exp 1 V T med temperaturspänning V T = 0.0259V och I D = 1 10 14 A. Spänningen e över lastresistorn styrs av differentialekvationen C de ( ( e E(t) ) ) dt + I D exp 1 + 1 V T R e = 0. Lös ekvationen med en valfri lösare för fem perioder av inspänningen. Använd ett initialvärde på e(0) = 0. Plotta lösningsbanan. Rapportera era erfarenheter från försök med olika lösare. Försök att ändra lastresistansen R så att inga vågor syns i plotten. 2. En envägslikriktare är inte till någon större användning. En mer praktisk krets är Graetz-likriktningsbryggan i figur 2. Att lösa detta problem med MATLABs verktygslåda är inte helt lätt. För att förenkla saker, föreslås att några icke-fysiska parametrar för komponenterna används: Resistorer Resistorerna har värdena R i = 10 3 Ω, R V = 10 3 Ω, och R L = 1.5Ω. 6
Ri E(t) C RV (a) RL Figure 2: Graetz-likriktningsbrygga Kondensator Välj C = 100µF. Diod Diodens karakteristik skall vara som ovan, med undantaget I D = 10 8 A. Spänningskälla Som ovan. Härled ekvationerna och integrera dem med valfri lösare! Initialvärdet skall vara noll för alla nodspänningar. Det rekommenderas att använda ode15s. 4 Utvärdering 1. Laborationen får göras i grupper med som mest två medlemmar. 2. I slutet på period 2 skall en laborationsrapport lämnas in. Den skall inkludera svar till frågorna samt all kod som används i uppgifterna (koden skall vara körbar). Sista inlämningsdag: Fredag 12 januari, 2007. 3. För att få godkänt skall följande uppgifter vara lösta: 3.1, 3.2, 3.3(1,2), 3.5(1). 4. För betyg 5 krävs även att uppgifterna 3.3(3) och 3.4 är lösta. 5. En bra lösning till uppgift 3.5(2) ger bonuspoäng som kan användas senare i kursen. 7