Uppsala universitet Institutionen för informationsteknologi Teknisk databehandling Tentamen i Beräkningsvetenskap II, 5.0 hp, 2012-03-09 Skrivtid: 14 00 17 00 (OBS! Tre timmars skrivtid!) Hjälpmedel: Bifogat formelblad, miniräknare. Det är också tillåtet att använda Mathematics Handbook eller Physics Handbook, men uppgifterna är konstruerade så att de inte förutsätter tillgång till handbok. En komplett lösning ska innehålla fullständiga räkningar och utförliga resonemang samt motivering till alla svar. För godkänt resultat krävs: Godkänt på minst en uppgift per kursmål i del A (annars blir betyget "underkänd") För betyg 3 krävs: Att man klarar kraven för godkänt resultat enligt ovan. För betyg 4/5 krävs: Att man klarar kraven för godkänt resultat enligt ovan och därtill kraven för betyg 4/5 på minst en uppgift i del B Del A 1. (a) I ett experiment mäts koncentrationen c av kväve vid olika tidpunkter t. I tabellen nedan visas tre av mätpunkterna (i lämpliga enheter, som vi här bortser ifrån): t 1.0 1.5 2.0 c 0.26 0.29 0.31 För att visa att du kan använda Newtons interpolationsansats ska du bestämma interpolationspolynomet genom de tre punkterna ovan. (b) Om du hade haft 30 mätpunkter i stället för tre, så skulle det ha varit olämpligt att interpolera med ett enda polynom genom alla punkterna. Förklara kortfattat varför. 2. (a) Genomför stabilitetsanalys av metoden "Euler framåt". (b) Om du ska lösa ett styvt problem är det olämpligt att använda Euler framåt. Förklara kortfattat varför. 1
3. (a) Skriv de matlabinstruktioner som behövs för att lösa ODE-problemet nedan i Matlab med ode45. OBS! Även den matlabkod som behövs för att beskriva ODE-problemet ska visas. y (t) = cos(y(t) + t), t > 0 y(0) = 1 Ditt program ska lösa problemet fram till tidpunkten t = 10. Det blir inga avdrag för småfel i matlabkoden om det framgår att lösningen är korrekt i princip. (b) I ode45 används en algoritm som kombinerar två olika Runge- Kutta-metoder av olika noggrannhetsordning. Syftet är åstadkomma så kallat... steglängdsval. Vilket ord ska stå på den prickade raden? 4. (a) Tänk dig att du har använt en Monte Carlo-metod med 10 000 beräkningspunkter för beräkning av en integral över ett område i 10 dimensioner. Ungefär hur mycket kommer felet i den beräknade lösningen att minska om du upprepar beräkningen och då använder dubbelt så många beräkningspunkter, alltså 20 000 punkter? Glöm inte att ge motivering för ditt svar! (b) Monte Carlo-metoder är ett exempel på beräkningsmetoder som innehåller något slumpmoment, så att metoden kan ge olika resultat vid upprepad användning på samma indata. Vad kallas sådana metoder? 2
Del B 5. Du har fått jobb på ett konsultföretag, där du blir inblandad i ett uppdrag för Räddningsverket. Det handlar om datorsimulering av hur ett objekt vinschas upp till en helikopter. Det kan exempelvis gälla en person som räddas ur en livbåt till havs. När objektet vinschas, så kommer det att göra en pendelrörelse under helikoptern. Följaktligen kan vinschningsprocessen modelleras med en ordinär differentialekvation som beskriver en pendel av variabel längd: θ (t) + 2 r (t) r(t) θ (t) + g r(t) sin(θ(t)) = 0 där θ(t) är pendelns vinkel, r(t) är pendelns längd och g är tyngdaccelerationen. Själva vinschningen, alltså hur pendelns längd varierar med tiden, beskrivs av en vinschningsstrategi i form av ytterligare en differentialekvation: r (t) = f(t, θ(t), θ (t)). Syftet med datorsimuleringarna är att Räddningsverket vill kunna studera effekterna av olika vinschningsstrategier. Din uppgift är att visa hur man kan genomföra simuleringarna enligt ovan. Du ska välja en numerisk metod som är lämplig under förutsättning att modellen ovan inte är styv, men att noggrannhetskraven är så höga att en metod med noggrannhetsordning 1 inte är lämplig. För betyg 5 krävs att: du använder en av de metoder som ingår i kursen och ger argument för att metoden är lämplig under de förutsättningar som ges ovan. Du får välja ett av följande sätt att "använda" metoden: antingen visar du med formler hur man gör ett tidssteg med den metod du har valt, specifikt för det aktuella ODE-problemet (det räcker alltså inte med de allmänna formlerna för metoden) eller så visar du hur problemet ovan kan lösas i Matlab med den metod du har valt (i så fall ska även matlab-beskrivningen av ODE-problemet ingå i din redovisning). 3
Det blir inget avdrag för småfel i matlabkoden, om det framgår att lösningen är riktig i princip. För betyg 4 ska du göra motsvarande som beskrivs ovan, men för ODEproblemet i uppgift 3. Även här krävs att: du använder en av de metoder som ingår i kursen och ger argument för att metoden är lämplig under de förutsättningar som ges ovan. 6. Bakgrund. I en utredning om sjön Tämnaren i nordvästra Uppland behöver du göra en beräkning av sjöns ytstorlek, som vi betecknar med s. För att åstadkomma detta inför vi ett koordinatsystem med x- och y-axel, där x = 0 motsvarar sjöns västra ändpunkt, x = a dess östra ändpunkt, y = 0 dess södra ändpunkt och y = b sjöns norra ändpunkt. (Vi går inte in på vilken längdenhet som är lämplig för dessa koordinater.) Rektangeln R, som består av alla punkter (x, y) så att 0 x a och 0 y b, kommer då att innesluta sjön. Rektanglens area är produkten av a och b. Låt c beteckna förhållandet mellan sjöns ytstorlek s och arean av R, det vill säga att s/(ab) = c. Värdena a och b är kända (vi kan läsa av dem från en karta i lämplig skala). Om värdet på c vore känt, så skulle vi alltså kunna beräkna s som s = abc. Vår beräkning av s kommer att bygga på att vi använder en Monte Carlo-metod för att beräkna ett närmevärde c till c. Monte Carlometoden ifråga bygger på idén att vi på lämpligt sätt slumpar ut punkter i rektangeln R. Vi beräknar sedan hur stor andel av dessa punkter som hamnade inom det område som täcks av sjön. Denna andel blir vårt värde på c. Uppgift. För att implementera idén ovan behöver vi bland annat en Matlab-funktion sjopunkt(x,y) som returnerar värdet "sann" om punkten (x, y) ligger inom sjöns område, annars returneras värdet "falsk". Nu funderar vi på hur denna funktion skulle kunna implementeras. Tänk dig att det i funktionen sjopunkt finns tre vektorer, xcoord, s och n, som tillsammans beskriver sjöns kontur. Vektorn xcoord med m stycken element innehåller x-koordinater, så att 0 = xcoord(1) < xcoord(2) <... < xcoord(m) = a. Om man från läget xcoord(i) på x-axeln går norrut i y-riktningen, så kommer man fram till sjöns södra strand vid y = s(i). När man därifrån fortsätter över sjön vidare norrut i y-riktningen, så når man sjöns norra strand vid y = n(i). Din uppgift är att föreslå ett sätt att givet dessa tre vektorer undersöka om en given punkt (x, y) ligger inom det område som täcks av sjön. För 4
att din lösning ska godkännas för betyg 5 krävs att: du använder ett lämpligt angreppssätt som har ingått i denna kurs och du ger argument för ditt val av metod (varför är detta rent allmänt ett lämpligt angreppssätt i sammanhanget och varför är det lämpligare än andra, liknande angreppssätt som ingått i kursen?) Du behöver inte skriva matlabkod, utan det räcker med att du beskriver förfarandet och härleder de formler som behövs. Om du inte kommer på ett sätt att lösa problemet ovan kan du för betyg 4 i stället göra följande. Låt x vara en x-koordinat mellan 0 och a, som inte ingår i vektorn xcoord. Beskriv ett sätt att beräkna ett värde y s, så att punkten (x, y s ) ungefär ligger på sjöns södra strandkant. För att din lösning ska godkännas för betyg 4 krävs att: du använder ett lämpligt angreppssätt som har ingått i denna kurs och du talar om vad detta angreppssätt kallas (det räcker inte med en övergripande term utan du ska använda ett så precist begrepp som möjligt). Även i detta fall gäller att du behöver inte skriva matlabkod, utan det räcker med att du beskriver förfarandet och härleder de formler som behövs. 5