Inlämningsuppgift 4 NUM131 Modell Denna inlämningsuppgift går ut på att simulera ett modellflygplans rörelse i luften. Vi bortser ifrån rörelser i sidled och studerar enbart rörelsen i ett plan. De krafter som verkar på ett flygplan är (se även Figur 1): Lyftkraft (F l ) Gravitation (F g ) Luftmotstånd (F d ) Drivkraft (F f ) F l Figur 1: Modell av krafter verkande på ett flygplan. Eftersom det flygplan vi studerar inte har någon motor är drivkraften noll, d.v.s. F f = 0. Storleken på luftmotståndskraften F d beror (naturligtvis) på flygplanets hastigheten, närmare bestämt är den (enligt vedertagna modellantaganden) proportionell mot luftens densitet, vingarean och farten i kvadrat. Proportionalitetskonstanten dividerad med två kallas luftmotståndskoefficienten och benämns C d. Låt u(t) = [u x (t), u y (t)] T vara en vektorvärd funktion som beskriver flygplanets position vid tiden t. Flygplanets hastighetsvektor ges därvid av v(t) = u(t). Sålunda gäller F d = C d Sρ v T v 1
enligt vårt modellantagande, där ρ är luftens densitet och S vingarean. Nästa modellantagande är att storleken på lyftkraften också är proportionell mot luftens densitet, vingarean och farten i kvadrat, d.v.s. F l = C l Sρ vt v, där C l kallas lyftkoefficienten. Storleken på gravitationskraften är som vanligt mg, där m är flygplanets massa och g tyngdaccelerationen. Vi väljer koordinatsystemet så att F g = [0, mg] T. Låt R R vara matrisen som svarar mot rotation π/ radianer motsols. Den totala kraften F som verkar på flygplanet vid tidpunkten t ges som summan av alla komposanter, d.v.s. F = F f + F l + F d + F g = F l Rv(t) v(t) F d v(t) v(t) + F g = C lsρ v(t) Rv(t) C dsρ v(t) v(t) [0, mg] T. Enligt Newtons kraftekvation gäller F = mü(t). Tillsammans med ett initialvillkor, d.v.s. en given position u 0 = [u 0x, u 0y ] T och en given hastighet v 0 = [v 0x, v 0y ] T vid tiden t = 0, erhåller vi därmed en andra ordningens ickelineär differentialekvation för flygplanet Sρ u(t) ( mü(t) = Cl R u(t) C d u(t) ) [0, mg] T, u(0) = u 0, u(0) = v 0. (1) Det visar sig att denna ekvation har unik lösning, d.v.s. det finns en unik vektorvärd funktion u som uppfyller differentialekvationen. 1 Värdena på konstanterna för modellflygplanet ges i Tabell 1. Vingarean, S 0.0076 m Luftens densitet, ρ 1.3 kg/m 3 Lyftkoefficienten, C l.9 Luftmotståndskoefficienten, C d 0.6 Tyngdaccelerationen, g 9.8 m/s Flygplanets massa, m 0.05 kg Tabell 1: Värden på konstanter. 1 Existens och entydighet till ekvationen (1) följer från allmänna satser om ordinära differentialekvationer, eftersom högerledet i ekvationen är Lipschitzkontinuerligt. För vidare läsning om detta se exempelvis K G Andersson och L C Böiers Ordinära differentialekvationer, Kapitel 1.
Problemformulering Differentialekvationen (1) ovan är svår att lösa analytiskt, varför man tvingas lösa den approximativt med någon numerisk metod. Din uppgift är att med fyra olika numeriska metoder approximativt lösa (simulera) differentialekvationen för modellflygplanet i intervallet t [0, 4]. Mer specifikt skall du lösa följande deluppgifter. Uppgift 1 Skriv en funktion exeulersolve(g,u0,tspan,h) i MATLAB som med hjälp av Eulers explicita metod approximativt löser differentialekvationer på formen u(t) = G(t, u(t)), t [t 0, t end ], u(t 0 ) = u 0, () där u är en vektorvärd funktion av en reell variabel och G ett vektorfält R R d R d. Indata till exeulersolve skall vara högerledet G som en textsträng, initialdata u 0, tidsspannet [t 0, t end ] samt steglängden h. Utdata skall vara en vektor t = [t 0, t 0 + h, t 0 + h,..., t 0 + Nh], samt en (N + 1) d matris vars rader svarar mot approximationen till u vid motsvarande tidpunkter i vektorn t. Formulera därefter om ekvationen (1) för flygplanet på formen () och implementera motsvarande högerled i MATLAB som en funktion med namnet flygplan (se Appendix för en beskrivning av hur en n:te ordningens differentialekvation kan formuleras som en första ordningens differentialekvation). Testa din numeriska lösare exeulersolve med högerledet flygplan för någon steglängd h [10 5, 10 ] och initialdata u 0 = [0, 5] T samt v 0 = [3, 0] T. Prova gärna även med andra initialdata. För att undersöka flygplanets bana i luften kan du plotta dess flygbana (se Uppgift 5). Tips: om du vill skapa en plot där båda axlarna är skalade likadant, plotta först som vanligt och exekvera därefter kommandot axis equal. Uppgift Skriv en funktion HeunSolve(G,u0,tspan,h) som utför samma sak som i Uppgift 1, men med Heuns metod. Testa denna på samma sätt som i Uppgift 1. Vi antar att t end och h korrelerar så att t end = t 0 + Nh för något heltal N. 3
Uppgift 3 Använd MATLABs inbyggda lösare ode45 för att med samma initialdata som i Uppgift 1 hitta en approximativ lösning till (1). För information om hur ode45 fungerar se hjälptexten (>>help ode45). Uppgift 4 Skriv en funktion imeulersolve(g,u0,tspan,h) som utför samma sak som i Uppgift 1, men med Eulers implicita metod. Testa denna på samma sätt som i Uppgift 1. I uppgiften kommer ni i varje steg att behöva lösa ett ickelineärt vektorvärt nollställeproblem. Newtons metod fungerar utmärkt även för att lösa vektorvärda nollställeproblem. Notera att derivatan för en vektorvärd funktion svarar mot dess funktionalmatris (även kallad dess Jacobian, se sidan 11 i Perssons och Böiers Analys i flera variabler ). Uppgift 5 Med flygbanan menas den väg flygplanet tar genom luften, d.v.s. i vårt fall mängden {(x, y); [x, y] T = u(t), t [0, t end ]}. Plotta i ett och samma diagram de approximativa flygbanorna som ges av de fyra olika metoderna då flygplanet simuleras med angivna initialdata. Undersök därefter vilken initialhastighet v 0 som minst behövs i respektive lösare för att modellflygplanet skall göra en looping då det kastas iväg snett uppåt med vinkeln π/4 radianer mätt från horisontallinjen? Ungefär vilken radie har denna loop? Uppgift 6 (frivillig) Som nämnts tidigare är drivkraften F f noll eftersom modellflygplanet inte har någon motor. Detta innebär att flygplanet förr eller senare (beroende på initialdata) kommer att börja dala. Låt oss i denna uppgift anta att flygplanet har en motor, samt att denna inte påverkar konstanterna i Tabell 1. Din uppgift är att lägga till en drivkraft F f (t) till differentialekvationen (1) sådan att om du använder Eulers explicita metod, så kommer flygplanet vid tiden t = 4 befinna sig på samma höjd som det startade vid, om initialdata är som i Uppgift 1. Sista inlämningsdag 15/3 Lycka till! 4
Appendix Låt oss studera ett n:te ordningens system av d ordinära differentialekvationer med givna initialdata u (n) (t) = f ( t, u(t), u (t), u (t),..., u (n 1) (t) ), t [t 0, t end ], u (m) (t 0 ) = u 0m, m = 0,..., n 1 (3) där u : [t 0, t end ] R d är en vektorvärd funktion och f en funktion [t 0, t end ] R nd R d. Genom att införa en ny vektorvärd funktion U : [t 0, t end ] R nd enligt U(t) = [u(t), u (t), u (t),..., u (n 1) (t)] T, kan den ursprungliga n:te ordningens differentialekvation formuleras som en första ordningens differentialekvation U(t) = F ( t, U(t) ), U(t 0 ) = [u 00, u 01, u 0,..., u 0(n 1) ] T, (4) där funktionen F : [t 0, t end ] R nd R nd definieras enligt u (t) F ( t, U(t) ) =. u (n 1) (t) f ( t, u (t),..., u (n 1) (t) ). Notera att kostnaden för att få differentialekvationen (3) på formen (4) är att dimensionen av systemet har ökat med en faktor n, d.v.s. dimensionen är nd istället för d. Om f bara beror på de k < n sista derivatorna av u, d.v.s om f ( t, u(t), u (t), u (t),..., u (n 1) (t) ) = g ( t, u (n k) (t),..., u (n 1) (t) ) för någon funktion g : [t 0, t end ] R kd R d, så kan man erhålla en k:te ordningens ekvation utan att öka den totala dimensionen av systemet. I sanning, genom substitutionen v(t) = u (n k) (t) erhålls en ny ekvation v (k) (t) = g ( t, v(t), v (t), v (t),..., v (k 1) (t) ), t [t 0, t end ], v (m) (t 0 ) = u 0(m+n k), m = 0,..., k 1. (5) Lösningen till den ursprungliga ekvationen (3) kan därefter erhållas genom att integrera lösningen till (5) n k gånger. 5