Tentamen i Beräkningsvetenskap I (TD9) Skrivtid: 6 januari kl 4 7 OBS! timmar! Hjälpmedel: Godkänd litteratur: Mathematics handbook, Physics handbook. Penna, suddgummi, miniräknare och linjal får användas. Formler finns i bifogad formelsamling. Övrigt: Uppgifterna måste vara välskrivna, med alla ingåe tankesteg redovisade. Observera att tentamen rättas baserat på kursmål. För betyg krävs att varje mål ska ha minst en markering med betyg, och att något mål ska ha minst två -markeringar. Kortfattade kursmål: Nyckelbegrepp Visa förtrogenhet med nyckelbegrepp som ingår i kursen. Algoritmer Visa förtrogenhet med de algoritmer som ingår i kursen. Analys Visa förtrogenhet med de analysförfaranden som ingår i kursen. 4 Programmering Visa elementär förtrogenhet med programmering (mer avancerad programmering görs i grupp och framför dator). Uppgift : Begrepp Max målbetyg:, I kursen ingår ett antal nyckelbegrepp inom beräkningsvetenskap som du förväntas behärska. Din uppgift här blir att bestämma om följande påståen gällande nyckelbegreppen (markerade kursivt) är sanna eller falska. Kort motivering krävs. För godkänt på respektive deluppgift krävs minst rätta svar per deluppgift, där kort motivering eller exemplifiering som visar på varför påstået är sant eller falskt måste ingå. a i) En matris konditionstal kan förbättras genom att man gör pivotering i LUfaktoriseringen. ii) Kancellation vid flyttalsberäkningar gör att det relativa felet i resultatet kan bli stort. iii) Högre noggrannhetsordning på en metod innebär att den kräver mindre antal beräkningar än en lägre ordningens metod för att uppnå samma kvalitet på lösningen. i) Falskt. Konditionstalet är givet av matrisen, och hur man gausseliminerar påverkar inte hur matrisen ser ut ii) Sant. Kancellation uppstår då nästan lika stora tal subtraheras, man förlorar då noggrannhet. iii) Sant. Exempelvis ger Simpsons metod högre noggrannhet för ett givet antal beräkningspunkter, i jämförelse med Trapetsmetoden b i) Kvadratisk konvergens innebär att felet i varje iteration minskar med faktor /4. ii) Diskretiseringsfel uppkommer då man ersätter ett kontinuerligt intervall i ett ändligt antal punkter och utför beräkningar ast i dessa punkter. iii) Maskinepsilon är det minsta tal som går att representera i en dator. i) Falskt. Det innebär att felet blir kvadraten av felet i föregåe iteration ii) Sant. iii) Falskt. Det är det minsta tal så att fl( + ɛ M ) >. Det går däremot att lagra betydligt mindre tal.
Uppgift : LU-uppdelning Max målbetyg: När man löser ett linjärt ekvationssystem Ax = b är det första steget LU-uppdelning. Visa att du behärskar algoritmen för LU-uppdelning med pivotering genom att faktorisera matrisen A enligt P A = LU där A = 5 Ange P, L och U. A och p nedan är datastrukturer där multiplikatorerna l ij lagras i nollpositionerna i matrisen (dvs delar av L och U lagras i samma datastruktur). Dessutom lagras radbytesinformationen i en vektor p. A 5 5 p Ovanståe ska tolkas som L = Radbyte l =, l = l = U = P = Uppgift : Ickelinjär ekvation Max målbetyg: Antag att du söker roten till en icke-linjär ekvationen f(x) och du har tillgång till en lösare som använder Newton-Raphsons metod. För att få förståelse för problemet plottar du först funktionen, vilket ger följande resultat: 6 5 4.5.5.5.5
Utgåe från figuren, ange ett eventuellt problem som kan uppstå när man ska lösa problemet med Newton-Raphsons metod. Det tydligaste problemet är om man väljer startgissning så att man resultatet någon gång under iterationerna blir f (x k ) = eller nära noll. t ex kring x =.9 eller x =.. Resultatet kan då bli Inf eller -Inf. Man kan också tänka sig att man vid ett värde på x k kring, kan hamna i en cykel där resultatet bara studsar mellan två värden och aldrig konvergerar (man kan se detta om man skissar i figuren). För betyg på uppgiften krävs enbart att ett problem tas upp. Uppgift 4: 4a Integration En funktion y är given för enstaka punkter enligt Max målbetyg: Beräkna en approximation till x..4.6.8 y(x)..668.8.459 -..8 y(x) dx med Simpsons metod. Samtliga funktionsvärden ska användas. S(h =.) =. (. + 4.668 +.8 + 4.459.).48. 4b Antag att man kan uppskatta felet i beräkningen ovan till.. Ange med motivering ungefär hur stort skulle felet bli om man ökar antalet mätvärden så att steglängden halveras. Det blir ungefär./6 =.5 4. Motivering: Simpsons metod har noggrannhetsordning 4, dvs O ( h 4). En halvering av steglängd ger O ( ( h )4) = O ( h 4), dvs att noggrannheten ökar med en faktor 6. 4 Uppgift 5: Programmering Max målbetyg:, 5a Som nyanställd på företaget Beräkningsdata AB har du fått ta över lite Matlabkoder från en examensarbetare. Tyvärr har studenten inte använt ändamålsenliga variabelnamn och inte heller kommenterat eller dokumenterat koden. Din första uppgift blir att ta reda på vad koden gör genom att läsa den. function x = func(array) y=array(); z=array(); if (y<z) temp=y; y=z; z=temp; for i=:length(array) if (array(i)>y) z=y; y=array(i); elseif (array(i)>z) z=array(i); x=z; Vad gör funktionen och vad blir resultatet om man anropar funktionen med vektorn v enligt:
>> v=[ 9 8]; >> y=func(v) y = array() =, z = array() = if y<z, dvs < falskt => går ej in i if-satsen for i = :length(array) => for i=:4 i = if array()>y => 9 > sant z = y = y = array() = 9 i = 4 if array(4) > y => 8 > 9 falskt elseif array(4) > z => 8 > sant z = array(4) = 8 x = z = 8 Resultatet av anropet blir y = 8. 5b Skriv nedanståe matematiska funktion p(f) = 4 log (Re f).4 f som en Matlabfunktion med funktionsnamnet vonkarmann. Variabeln Re kan du för enkelhets skull sätta till 4. Matlabfunktionen ska skrivas som om den lagrades i en egen m-fil (där filen får namnet vonkarman.m). (Funktionen ovan kallas von Karmans ekvation och är hämtad från en av kursens miniprojekt.) Kan förslagsvis se ut så här: function pf= vonkarmann(f) Re = ^4; pf = 4*log(Re * sqrt(f) -.4 - /sqrt(f); Det väsentliga här är att syntaxen när det gäller funktioner är rätt (in- och utparametrar, funktionsnamn på rätt plats etc). Däremot underkänns man inte för fel i Matlabsyntax i formeluttrycket, exempelvis om man skriver log istället för log eller f istället för sqrt(f). Uppgift 6: Lösning av ekvationssystem Max målbetyg: 4 I ett reglertekniskt system ska ekvationssystem lösas, där man har en n n-matris A och högerleden b k, k =..., m. Varje högerled innehåller insignaler, och bara ett högerled finns tillgängligt åt gången. För varje sådan vektor med insignaler ska alltså x k beräknas ur Ax k = b k. Detta x k används sedan för att styra reglersystemet. Din uppgift är att beskriva hur detta kan göras på ett effektivt sätt genom att ge en övergripande algoritm för problemet. Dessutom ska du utgåe från din algoritm, analysera ungefärligt antal operationer i beräkningen. Du behöver inte beskriva alla eventuella delalgoritmer, utan det är den övergipande algoritmen som är intressant. För att hämta ett högerled kan du tänka dig att det finns en färdig funktion getb() tillgänglig, dvs anropet b = getb() hämtar ett högerled. För betyg 4 krävs både algoritm och att du visat antalet operationer i beräkningen.
Den här uppgiften innehåller en beräkning av m st linjära ekvationssystem med olika högerled och samma matris, dvs Ax i = b i, i =,..., m. För att göra detta effektivt bör matrisen först LU-faktoriseras en gång och sedan utförs framåt- och bakåtsubstitution m gånger med olika högerled. Observera att exakt detta ingår i miniprojekt i linjära system i kursen. Algoritm, här skriven i form av Matlabkod: Givet: m (antal högerled), A [L, U, P] = lu(a) for i = :m bi = getb(); y = L\(P*bi); x = U\y; % LU-faktorisering av A % Hämta högerled % Framåtsubstitution % Bakåtsubstitution Antalet operationer blir: Vi har en LU-faktorisering n operationer. Sedan utförs m st framåt- och bakåtsubstitutioner m n operationer. Totalt blir det n + mn operationer. Algoritmen behöver inte beskrivas i form av matlabkod, utan kan beskrivas på annat sätt. Det måste dock beskrivas som en algoritm och det måste tydligt framgå att LUfaktorisering görs en gång, och att det är fråga om framåt- och bakåtsubstitution m gånger etc. I operationsberäkningen räcker det även om man räknar antalet operationer vid LU-faktorisering som ca n eller O ( n ) och framåt- och bakåtsubstitution på motsvarande sätt som O ( n ). För betyg 4 krävs det både algoritm och att antalet operationer anges. Enbart algoritm ger betyg. Uppgift 7: Kvadraturformel Max målbetyg: 4/5 På ett företag som du arbetar på ingår beräkning av integraler i arbetsuppgifterna. Problemet är att beräkningarna ibland kräver extremt hög noggrannhet och du skulle därför vilja testa att använda en beräkningsmetod med väldigt hög noggrannhetsordning. Du har tillgång till en Matlab-funktion där du kan läsa följande i hjälptexten % Q = QUADRATURE4(fun, a, b, n) % Numerisk beräkning av integral med Gauss-Legre kvadratur. % % Q = QUADRATURE4(fun, a, b, n) uppskattar en integral I med hjälp av % Gauss-Legre kvadratur, för vilken % I = QUADRATURE4(fun, a, b, n) + C*h^4 + O(h^6) % för någon konstant C. % % Funktionsparametrar: % fun -- ett handtag till en Matlabfunktion som motsvarar integranden. % a, b -- bestämmer integrationsintervallet [A, B] % n -- antalet delintervall Du och dina kollegor tolkar hjälptexten som att funktionen uppskattar en integral med hjälp av en så kallad Gauss Legre kvadraturformel Q 4 (h), så att b a f(x)dx = Q 4 (h) + Ch 4 + O(h 6 ) där C är en konstant. Med utgångspunkt från quadratur4 (dvs Q 4 (h)), beskriv hur skulle man kunna konstruera en metod med högre noggrannhetsordning. Implementera metoden som en Matlab-funktion med funktionshuvudet
function Q = quadraturex(func, a, b, n) där parametrarna har motsvarande betydelse som för quadrature4. Dessutom, vilken noggrannhetsordning får den nya metoden? Ange detta och hur du resonerar. Du behöver inte strikt härleda detta, men däremot förklara hur man kan resonera. Algoritm: Kom fram till formeln Q x (h) = Q 4 (h) + Q4(h) Q4(h) 5 som en beräkning av högre noggrannhetsordning. Formeln behöver inte härledas utan kan tas från formelbladet. Programmering: Skriv quadraturex-funktionen t ex enligt: function Q = quadraturex(func, a, b, n) if (mod(n,)) error( Incorrect input, n must be divisible with. ) Qh = quadrature4(func, a, b, n); Qh = quadrature4(func, a, b, n/); Q = Qh + (Qh - Qh) / 5; Analys: Enligt uppgiften gäller att b a f(x)dx = Q 4 (h) + Ch 4 + O(h 6 ) vilket innebär att den ledande termen i diskretiseringsfelet för metoden Q 4 (h) är Ch 4 eller O(h 4 ). Richardsonextrapolationen Q4(h) Q4(h) 5 är en uppskattning av den feltermen. Genom uttrycket Q 4 (h) + Q4(h) Q4(h) 5 får man en metod där den feltermen är eliminerad och kvar blir högre ordningens termer, dvs O(h 6 ). Man kan alltså dra slutsatsen att den nya metoden bör vara av noggrannhetsordning 6. För betyg 5 måste algoritmidén och koden finnas med. Dessutom måste ett försök till analys av noggrannhetsordning finnas med, även om det inte behöver vara fullständigt korrekt. Betyg ges även för en korrekt analys av noggrannhetsordning och att algoritmidén är korrekt, och där funktionen inte är fullständig. Om analys helt är utelämnat ges betyget 4.