UPG6 Miniprojekt 3: Kastparabler, projektiler, och raketer Många fysikaliska fenomen inom natur och tillämpningar kan beskrivas och modelleras genom ordinära differentialekvationer (ODE). Det är endast i enkla fall som en analytisk lösning kan bestämmas. Det blir därmed viktigt att kunna lösa differentialekvationer numeriskt. I detta projekt kommer vi att undersöka metoder för numerisk lösning av ordinära differentialekvationer. Ekvationerna för modellproblemet vi behandlar kommer från Newtons kraft- och rörelselagar. Projektarbetet kan delas in i följande tre områden. Modellering: Vi börjar med enkla modeller, för vilka analytiska lösningar finns, och går stegvis över till mer realistiska modeller, vars differentialekvationer måste lösas numeriskt. Numeriska metoder: Ni kommer att implementera en numerisk metod för ODE-lösare, undersöka dess noggrannhet, och jämföra med en av MATLABs inbyggda ODE-lösare. Experiment: Projektet innehåller även ett antal ingenjörsmässiga uppgifter. Det kommer att krävas en del experimenterande för att lösa dessa frågor. 1 Huvuduppgift tillämpning av Newtons lagar Miniprojektets huvuduppgift är att lösa rörelseekvationerna för ett föremål som drivs med en raketmotor. Rörelsen beskrivs av differentialekvationer, och det går inte att lösa dessa analytiskt utan ekvationerna måste lösas numeriskt. För att kunna bedöma noggrannheten i de numeriska lösningarna skall vi studera rörelseekvationer med linjärt luftmotstånd, och jämföra analytiska lösningar med olika numeriska lösningar. Projektbeskrivningen (detta dokument) innehåller avsnitt med nio deluppgifter som utgör underlag för er att strukturera upp arbetet med miniprojektet. Alla dessa uppgifter skall lösas! Rapporten och den muntliga redovisningen bygger på att ni har löst dessa uppgifter. 2 Modellering och deluppgifter I detta avsnitt kommer vi att beskriva olika fysikaliska modeller som beskriver rörelsen av ett föremål under inverkan av olika krafter. Vi vet att ett föremål som rör sig följer Newtons lagar. Speciellt intressant för denna uppgift är Newtons andra lag, accelerationslagen, F = d(mv), dt där kraften F, som verkar på ett föremål, är lika med förändringen i rörelsemängd. Rörelsemängden ges av massan gånger hastigheten, mv, och dess förändring blir tidsderivatan d(mv)/dt. Om Linköpings universitet, ITN, Berkant Savas 1
vi antar att massan m inte förändras över tid får vi F = d(mv) dt = m dv dt = ma, (1) där a är föremålets acceleration. Notera att storheterna F, v, och a är vektorstorheter. Vi ser vidare att rörelseekvationen (1) är en differentialekvation då accelerationen är andraderivatan av positionen. Vi kommer att undersöka tre olika fall av rörelsekvationen: 1. Rörelse av ett föremål där luftmotstånd försummas, och inga externa krafter verkar på föremålet förutom gravitationen. 2. Sedan kommer vi att introducera luftmotstånd, som är proportionell mot hastigheten. 3. Slutligen kommer vi att betrakta ett variabel-mass system med kvadratiskt luftmotstånd. Detta är ett typiskt fall vid raketuppskjutning eftersom massan av raketen förändras genom att raketbränsle förbränns och skjuts ut från motorn med hög fart. 2.1 Rörelse utan luftmotstånd, kastparabler I det enklaste fallet bortser vi från luftmotståndet, och låter endast tyngdkraften verka på föremålet. Vi får F = ma = mg, (2) där g är tyngdaccelerationen. Förenkling av (2) ger a = g och delar vi upp den i x- och y- komponenter får vi ( ) ( ) ( ) ax gx 0 a = g = = a y g y g där g 9.82 m/s 2 är vertikalkomponenten av tyngdaccelerationen 1. Skriver vi ekvationerna i termer av de sökta funktionerna x(t) och y(t) får vi a x = x (t) = 0, (3) a y = y (t) = g. (4) Analytiska lösningar för (3) och (4) hittas enkelt! Integrera två gånger! I x-led får vi x (t) = 0 x (t) = k 1 x(t) = k 1 t + k 2, där k 1 och k 2 är koefficienter från integrationen som kan bestämmas med hjälp av villkor för någon position och hastighet vid någon tidpunkt. På samma sätt får vi lösningen i y-led enligt y (t) = g y (t) = gt + k 3 y(t) = g 2 t2 + k 3 t + k 4, där k 3 och k 4 är nya integrationskoefficienter. Låt oss använda begynnelsevillkoren x(0) = 0, y(0) = 0, x (0) = v 0 cos(α), y (0) = v 0 sin(α). (5) Detta betyder att positionen för kulan vid t = 0 är origo, samt kulan har farten 2 v 0 m/s i en riktning som bildar vinkeln α från x-axeln. Även detta vid t = 0. Begynnelsevillkoren (5) ger k 2 = k 4 = 0 samt k 1 = v 0 cos(α), k 3 = v 0 sin(α). 1 Tyngdacceleration g varierar beroende på var någonstans man är, och i Sverige (Norrköping) är g = 9.82 en bra approximation. 2 Vad är det för skillnad mellan fart och hastighet? Linköpings universitet, ITN, Berkant Savas 2
Lösningen till ekvation (3) och (4) med begynnelsevillkor (5) blir därmed x(t) = v 0 cos(α)t, (6) y(t) = v 0 sin(α)t g 2 t2. (7) 2.2 Projektilbana med luftmotstånd Det finns två förhållandevis enkla sätt att modellera luftmotståndet och därmed hitta mer realistiska lösningar. Kraften för luftmotståndet kan modelleras som linjärt proportionellt eller kvadratiskt proportionellt mot hastigheten. I båda fallen verkar kraften från luftmotståndet i motsatt riktning som föremålet rör sig. Vi ska undersöka fallet med linjärt luftmotstånd. Ekvationen blir ma = mg kv, (8) där v är föremålets hastighet och k är en konstant som modellerar övriga faktorer (t.ex. fluidens densitet, area och ytform av föremålet) i kraften från luftmotståndet. Vi kan återigen skiva om ekvationen komponentvis och får a x = x (t) = k m x (t), (9) a y = y (t) = k m y (t) g. (10) Notera att differentialekvationerna (9) och (10) är linjära och inte kopplade till varandra. Dessa kan lösas analytiskt för att erhålla explicita uttryck för x(t) och y(t). Deluppgifter 1 1. Lös ekvationerna (9) och (10) analytiskt så att du får explicita uttryck för x(t) och y(t). Använd begynnelsevillkoren i (5). Konsultera Forsling och Neymark [2] om det behövs. 2. Implementera lösningarna x(t) och y(t) till (9) respektive (10) i en designerad MATLABfunktion. Låt t, men även modellparametrarna m, k, v 0, och α, vara inparametrar till funktionen så att det blir enkelt att variera dessa när du experimenterar. 3. Placera en fyrkantig måltavla med hörn i koordinaterna (30,40), (40,40), (40,50), (30,50). Låt kulan ha vikten m = 8 kg. Ange utgångsvinkel α och begynnelsefart v 0 så att kulan träffar ovansidan av måltavlan med en negativ hastighet i y-led. Gör detta för två olika fall med luftmotstånd, använd k = 0.5 kg/s och k = 1.5 kg/s. 4. Differentialekvationerna (9) och (10) är av andra ordningen. Skriv om dessa (på papper) som ett system av differentialekvationer av första ordningen, z = f 1 (t, z). (11) Ange komponenterna av z och f 1. Vi kommer att använda detta för att lösa problemet numeriskt, och jämföra de numeriska lösningarna med de analytiska. Linköpings universitet, ITN, Berkant Savas 3
2.3 Projektil med raketmotor Låt oss montera en raketmotor på kulan! Eftersom raketmotorer förbränner bränsle, som skjuts ut i någon riktning, kommer massan av raketen inte att vara konstant, utan den kommer att ändras med tiden, alltså m = m(t). Vi får därmed ett variabel-mass system. Genom att använda Newtons tredje lag, impulslagen, kan man visa att följande ekvation gäller m(t)a = F + m (t)u, (12) där m(t)a beskriver den totala accelerationskraften på raketen, F anger summan av de externa krafter som verkar på raketen (gravitation och luftmotstånd), och m (t)u beskriver kraften raketen utsätts för genom att partiklar (bränsle) skjuts ut från raketen. Hastighetsvektorn ( ) ux (t) u = u(t) =, u y (t) är en funktion av t och anger riktning och fart av bränslet som skjuts ut från raketen. Vi kan anta att u(t) är en känd funktion som piloten (du) kan använda för att styra raketen i en önskad bana. Vi förutsätter även att m(t) och dess derivata m (t) är kända funktioner. Kombinerar vi ekvation (12) med krafter för gravitation och luftmotstånd får vi m(t)a = m(t)g c v v + m (t)u, (13) där c är en ny proportionalitetskonstant. Notera att vi, i detta fall, modellerar luftmotståndet med c v v, som är kvadratiskt proportionell mot farten. Division med m(t) och komponentvis uppdelning ger a x = x (t) = c (x ) m(t) + (y ) 2 x + m (t) m(t) u x(t), (14) a y = y (t) = c (x ) m(t) + (y ) 2 y + m (t) m(t) u y(t) g, (15) där vi använder v = (x ) 2 + (y ) 2. Vi ser att ekvationerna är kopplade till varandra på ett ickelinjärt sätt. Jämför även (14) och (15) med ekvationerna i Exempel 14.7 i Jönsson [3]. Deluppgifter 2 5. Skriv om (14) och (15) i formen z = f 2 (t, z) (16) och ange komponenterna av z och f 2. Vi kommer att använda dessa längre fram. 2.4 Numerisk lösning av differentialekvationer I projektet ska du undersöka lösningar till differentialekvationerna som har introducerats. Du ska speciellt jämföra exakta (analytiska) lösningar, där dessa finns, med olika numeriska lösningar. Betrakta en ODE på formen z = f(t, z), där z(t) är en vektorvärd funktion som söks och f är en given vektorvärd funktion som kan evalueras för givet t och z(t). Den numeriska lösningsproceduren för differentialekvationer är följande. Bestäm ekvidistanta punkter t 0,..., t n som delar in aktuell tidsintervall [a b] i n stycken delintervall med längden h = (b a)/n. Numeriska approximationer för z(t 1 ),..., z(t n ) fås rekursivt, där vi använder ett givet begynnelsevillkor z(t 0 ) = z 0. Du skall själv implementera en fjärde ordningens Runge-Kutta metod (RK-4). En beskrivning av den ges i Algoritm 1, se [1, 3] för mer information. Linköpings universitet, ITN, Berkant Savas 4
Algoritm 1 Runge-Kutta ordning 4 for i = 0, 1, 2,..., n 1 do k 1 = hf(t i, z i ) k 2 = hf(t i + h/2, z i + k 1 /2) k 3 = hf(t i + h/2, z i + k 2 /2) k 4 = hf(t i + h, z i + k 3 ) z i+1 = z i + 1 6 (k 1 + 2k 2 + 2k 3 + k 4 ) end for Deluppgifter 3 6. Ta fram uttryck för f 1 och f 2 i ODE problemen (11) resp. (16). Du har bestämt dessa i tidigare uppgifter. Implementera f 1 (t, z) och f 2 (t, z) i lämpliga MATLAB-funktioner, t.ex. funk1.m och funk2.m. Varje funktionsfil tar en tidsvariabel t (skalär) och en kolumnvektor z som inparametrar och returnerar evalueringen av den aktuella funktionen i t och z. Notera att f 1, f 2 och z måste ha samma dimension. Funktionerna skall kunna anropas genom >> dz1 = funk1 (t,z); >> dz2 = funk2 (t,z); Utöver t och z, behöver funktionerna ha tillgång till parametrar som massan m. Denna gång definiera dessa parametrar internt i funktionerna. I fallet med raketmotor behöver du komma åt en massfunktion m(t), dess derivata m (t) och en hastighetsfunktion u(t). Det är lämpligt att implementera dessa funktioner i egna filer och få ut aktuella storheter genom funktionsanrop. Mer om detta i kommande uppgift. 7. Implementera RK-4 metoden i MATLAB. Låt förslagsvis funktionen vara odesolverrk4.m med fyra inparametrar som ges nedan: fun funktionshandtag som anger funktionen för f(t, z); z0 vektorn z 0 anger begynnelsevillkor för ODEn; tspan anger t start och t slut, gränser för tidsintervallet, t.ex. tspan = [0,20]; n n anger antalet diskretiseringspunkter. Låt vidare varje funktion returnera en tidsvektor t och en 4 (n + 1) matris y med den numeriska lösningen. Efter implementeringen av ODE-lösarna och initiering av relevanta variabler skall ni kunna anropa funktionerna enligt >> [t,y] = odesolverrk4 (@fun, tspan,z0,n); 8. Du ska i denna uppgift jämföra den analytiska lösningen y(t) av (10), du har explicit uttryck för detta sedan tidigare, med två stycken numeriska lösningar som du beräknar genom att använda din egen RK-4 metod samt MATLABs inbyggda ODE-lösare ode45. Använd y(t) från den tidigare uppgiften där parametrarna m, k, v 0 och α är sådana att lösningen prickar måltavlan. De numeriska lösningarna för samma ODE beräknas genom att använda f 1 i (11). Plotta absolutbeloppet av felet med semilogy för att tydligt kunna se skillnader mellan lösningarna. Notera att tidsdiskretiseringen behöver vara identisk i alla tre lösningar. Låt n [200, 400]. Välj t slut så att projektilens bana slutar i måltavlan. Linköpings universitet, ITN, Berkant Savas 5
9. I den sista uppgiften skall du skjuta upp raketen och styra den så att den går igenom tre av fyra målområden som visas i figur 1. Målområdena är individuella och kommer att framgå av klasslistor på Lisam. 120 100 Placering av målområden 1 2 80 60 40 3 4 20 0 Startposition Area 1 Area 2 Area 3 Area 4-80 -60-40 -20 0 20 40 60 80 Figur 1: Graf som visar startposition för raketen samt fyra målområden. Varje målområde är kvadratiskt med sidan 10 meter, och (nedre-vänstra) hörnpunkt i (40,40), (40,100), (-50,40), (-50,100). Initiala raketmassan är 8 kg, varav 4 kg är bränsle. Under tiden som motorn är igång förbränner den 400 g bränsle per sekund. Detta gör att motorn kan vara igång som mest 10 sekunder. Om vi startar raketmotorn vid t = 0 och håller motorn igång tills bränslet är slut kommer raketens massfunktion m(t) och dess derivata m (t), att se ut enligt följande m(t) = { 8 0.4t om 0 t 10, 4 om t > 10, m (t) = { 0.4 om 0 t 10, 0 om t > 10. Implementera m(t) och m (t) i en egen funktion. Anrop till den funktionen behöver ske i f 2 (t, z) för att få aktuell massa och derivata vid en given tidpunkt. Du behöver även specificera u(t) i ekvation (13). Låt masspartiklarna ha en konstant fart k m ut från motorn, men motorns riktning θ(t) kan du styra fritt. Detta innebär u(t) = k m, samt u(t) = ( ux (t) u y (t) ) = ( km cos(θ(t)) k m sin(θ(t)) Fysikaliskt innebär detta att raketmotorn går på full kraft. Utgå ifrån att θ anger vinkeln från positiva x-axeln. För att få en kraft uppåt måste partiklarna skjutas rakt ner. Detta ger vinkeln θ = π/2 (eller θ = 3π/2 om du vill). ). Linköpings universitet, ITN, Berkant Savas 6
I denna uppgift skall du låta raketen röra sig av egen kraft, du sätter därmed v 0 = 0. Låt c = 0.05 kg/m och k m = 700 m/s. Raketens startposition är (0,0). Raketen måste lyfta vertikalt, θ(0) = π/2, och nå en höjd på minst 10 meter innan vinkeln θ(t) får börja ändras. Din uppgift är att experimentellt bestämma en funktion θ(t) som tar raketen genom tre av fyra målområden. Använd din egen RK-4 metod med n = 500 när du löser ODE-ekvationen numeriskt. Välj t slut så att raketens bana slutar i den sista måltavlan. 3 Skriftlig och muntlig redovisning Miniprojektet skall redovisas i en skriftlig teknisk rapport om max 2 sidor. Rapporten måste inkludera följande: 1. Uttryck för x(t) och y(t) som löser ODE-ekvationerna (9) resp. (10). Använd begynnelsevillkoren i (5). 2. Figur som visar två stycken grafer (y som funktion x) där du träffar ovansidan av måltavlan. En graf för vart och ett av fallen med olika luftmotstånd (se uppgift 3). Presentera all nödvändig information så att det går att reproducera resultaten. Diskutera resultat och förutsättningar. 3. Jämförelse mellan den analytiska lösningen y(t) och motsvarande numeriska lösningar från egenimplementerade ODE-lösare och MATLABs ode45. Plotta absolutbeloppet av felet med semilogy för att tydligt kunna se skillnader mellan lösningarna. Diskutera resultat och förutsättningar. 4. En figur som visar raketens färdbana genom dina tre målområden. Visa även en plott av motorns riktning θ(t). Diskutera och relatera olika skeden av θ(t) till hur raketens bana påverkas. 5. Betrakta en valfri tillämpningsscenario som är på något sätt relaterat till miniprojektet. Diskutera och reflektera kring miniprojektet med utgångspunkt i tillämpningsscenariot. Hur skulle du kunna gå vidare med projektet inom ramen för tillämpningen? OBSERVERA: Denna gång blir det ingen komplettering. Det är därför viktigt att rapporten redan vid den första inlämningen är korrekt och fullständig. Använd en lämplig disposition likt tidigare miniprojekt; krav på reproducerbarhet gäller fortfarande; använd källor och referera i texten till alla källor; referera till alla figurer i texten; låt alla figurer ha en beskrivande figurtext, osv, osv. Den muntliga redovisningen skall innehålla resultat och diskussion av analysen och experimenten som du har utfört. Visualisera flitigt dina resultat i olika figurer med hjälp av dator. Referenser [1] L. Eldén and L. Wittmeyer-Koch. Numeriska beräkningar analys och illustrationer med MATLAB. Studentlitteratur, 4 edition, 2001. [2] G. Forsling and M. Neymark. Matematisk analys en variabel. Liber, 2011. [3] P. Jönsson. MATLAB-beräkningar inom teknik och naturvetenskap. Studentlitteratur, 2010. Linköpings universitet, ITN, Berkant Savas 7