FÖRSÄTTSBLAD TILL TENTAMEN Din tentamenskod (6 siffror): ELLER (fyll bara i om du saknar tentamenskod): Personnummer: - Datum: 32 maj 4711 Kursens namn (inkl. grupp): Beräkningsvetenskap I (1TD393 DEMO) Termin då du först registrerades på kursen 1 : Utbildningsprogram (eller liknande): Bordsnummer: Kontrollera att du fått rätt tentamensuppgifter Detta blad skall ifyllas även om ingen uppgift behandlats Uppgifterna skall lösas I BIFOGAT svarsformulär. Använd INTE penna med röd färg. Uppgift Löst (kryssa) Poäng Mål 1-4 Lärarens kommentarer 1 3 3 2 3 3 3 3 4 3 5 3 6 5 4 7 5 5 5 5 Summa Betyg 2 1 Tentamen rättas INTE om det saknas registrering på kursen. 2 Om möjlighet till bonuspoäng finns till tentamen visas slutresultatet inkl bonuspoäng i studentportalen efter att resultatet rapporterats till uppdok.
Tentamen i: Beräkningsvetenskap I (1TD393 DEMO) Skrivtid: 32 maj 4711 kl 14 00 17 00 (senast) Allianshallen OBS! 3 timmar! Hjälpmedel: Godkänd litteratur: Ingen. Endast penna, radergummi, miniräknare och linjal får användas. Formler finns i bifogad formelsamling. Övrigt: Uppgifterna måste vara välskrivna, med alla ingående tankesteg redovisade. Endast svar på förtryckt svarsblankett beaktas. Observera att tentamen rättas baserat på kursmål. Totalt poängantal: 0 Mål: 1 Nyckelbegrepp Visa förtrogenhet med nyckelbegrepp som ingår i kursen 2 Algoritmer Visa förtrogenhet med de algoritmer som ingår i kursen 3 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 1: Integraler 3 1a Vid integration av en funktion f(x) från a till b med trapetsformeln erhålls svaret 150.1 för steglängd h = 0.5. Vi gör nu tankeexperimentet att vi känner till det korrekta svaret och låter det vara exakt 150. Felet i vår beräkning är i så fall 0.1. Ungefär vilket fel vid motsvarande beräkning med steglängden h = 0.25 skulle du då förvänta dig (funktionsfelet antas vara försumbart)? Motivera med formel. 0.025 ty felet minskar med ungefär en faktor fyra vid halverad steglängd när trapetsmetoden används. Formel: Felet: R = b a 12 h2 f (ξ) Beräkning: 0.1/4 = 0.025 1b Om man vill säga att felet i Simpsons formel går snabbare mot noll än felet i trapetsformeln, kan man uttrycka sig som att Simpsons formel har högre... än trapetsformeln. Vilket är det sökta begreppet? Det sökta begreppet är noggrannhetsordning. Uppgift 2: Icke-linjära funktioner 3 2a Skriv ekvationen x+x 2 = e x på en form som lämpar sig om du vill beräkna x med Newton- Raphsons metod. f(x) = x+x 2 e x ger att vi söker det x så att f(x) = 0 2b Antag att x 0 = 1. Beräkna x 1 med hjälp av en iteration med Newton-Raphson metod.
3.5496 Beräkning: f (x) = 1+2x e x x 1 = 1 1+12 e 1+2 e = 3.5496 2c Toleransen är 0.5 10 1 (dvs 1 decimals noggrannhet). Kontrollera om det behövs fler iterationer för att noggrannhetskravet ska uppfyllas (dessa behöver i så fall inte utföras av dig). Det behövs fler iterationer. Beräkning: Det absoluta felet är ungefär x 1 x 0 = 1 0.17488 = 0.82512 vilket 0.5 10 1. Noggrannhetskravet är således inte uppfyllt. Uppgift 3: 3a Nyckelbegrepp Några nyckelbegrepp i den här kursen är diskretiseringsfel, maskinepsilon, underflow, overflow, iteration, konditionstal, noggrannhetsordning, adaptivitet. Nedan ser du några utskrifter från Matlab (delvis tagna från en av laborationerna i kursen). För var och en av dessa, ange ett nyckelbegrepp som är relaterat till det du ser och förklara också på vilket sätt det är relaterat. Observera att du enbart ska använda ett nyckelbegrepp per exempel. >> a = 1e-10; b = 1e-26; >> a+b ans = 1.000000000000000e-10 Maskinepsilon. I förhållande till 10 10 är 10 26 så litet att precisionen (antal värdesiffror) inte räcker till. Omskrivet är additionen 10 10 (1+10 16 ) och vi vet att maskinepsilon, ǫ M är det minsta tal som kan adderas till ett för att få ett resultat större än ett. Således drar vi av ovanstående slutsatsen att ǫ M > 10 16. 3b >> x= A\b; Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.422326e-17. Begreppet är konditionstal. Matlab varnar för att matrisen är illakonditionerad och resultatet av beräkningen därför osäker. Uppgift 4: Linjära ekvationssystem En LU-faktorisering av en matris A har gett följande resultat 1 0 0 4 4 4 L = 3/4 1 0 U = 0 4 0 P = 1/4 3/4 1 0 0 1 0 1 0 0 0 1 1 0 0 Antag att vi har högerledet b = Lös systemet Ax = b genom att använda resultatet av LU-faktoriseringen. Du ska alltså visa att du behärskar algoritmen för att lösa ekvationssystem givet en LU-faktorisering. 6 x = 1 6 2 4 1
Beräkning: Beräkna x genom att lösa L U x = P b. Ansätt y = U x. Då kan vi lösa ekvationen i två steg, först beräkna y ur L y = P b(framåtsubstitution) och därefter använda y för att beräkna x i U x = y (bakåtsubstitution). Alltså: 1. Beräkna P b = 0 1 0 0 0 1 1 0 0 2 4 1 = 2. Framåtsubstitution: Beräkna y 1 ur 1y 1 +0y 2 +0y 3 = 4 ger y 1 = 4. Därefter, 0.75 4+1y 2 +0y 3 = 1 ger y 2 = 4. Sista raden ger 0.25 4 0.75 4+1y 3 = 2 ger y 3 = 6. 3. Bakåtsubstituon ger x: Först x 3 ur 0x 1 +0x 2 +1x 3 = 6 ger x 3 = 6. Därefter x 2 ur 0x 1 +4x 2 +0 6 = 4 ger x 2 = 1. Sist beräknas x 1 ur 4x 1 +4 1 4 6 = 4 ger x 1 = 6 4 1 2 Uppgift 5: Programmering 5a Följande program ska beräkna ett betygsmedelvärde, där filen betyg innehåller betygsvärden i en matris v. Raderna har blivit omkastade. Ange en korrekt radnummerordning. 1 2 3 4 5 6 7 8 antal = length(v); betygsumma = betygsumma + v(i); load betyg disp( Medelbetyg: ); betygsumma = 0; for i = 1:antal end disp(betygsumma/antal); Ordningen är 3 4 1 5 6 2 7 8 dvs utskrivet: load betyg disp( Medelbetyg: ); antal = length(v); betygsumma = 0; for i = 1:antal betygsumma = betygsumma + v(i); end disp(betygsumma/antal); 5b I programmet ovan finns bl.a. följande rad: disp( Medelbetyg: ); Vilken eller vilka rader i programmet måste stå efter denna rad för att programutskriften ska bli tydlig? endast följande rad: disp(betygsumma/antal); Uppgift 6: Sjön Tämnaren Max målbetyg: 5 4 I en utredning om sjön Tämnaren i nordvästra Uppland mäter du sjödjupet i ett tvärsnitt av sjön där den är som bredast. Mätningen går till så att du åker båt längs en rät linje från ena stranden av sjön till den andra. På olika ställen längs vägen mäter du sjödjupet med ekolod. Låt x 0 = 0 vara koordinaten för vänstra stranden, x n koordinaten för högra stranden och x j,j = 1,...,n 1, koordinaterna för mätpunkterna. Mätvärdet vid punkten x j betecknar vi med d j. Vid de två strandpunkterna är djupet noll. Djupmätningarna kan av praktiska skäl inte göras med helt jämna mellanrum i x-led, utan avståndet mellan
intilliggande mätpunkter varierar. Skriv nu ett program i Matlab, som beräknar arean av det aktuella tvärsnittet av sjön genom att använda någon av de beräkningsalgoritmer som har ingått i kursen. Samtliga mätvärden ska utnyttjas. I ditt program ska du förutsätta att x- och d-värdena finns lagrade i två vektorer x respektive d, som finns sparade i filen measurements.mat. I den här uppgiften får du högre poäng om du själv formulerar beräkningsalgoritmen i Matlab, lägre poäng om du använder ett inbyggt Matlab-kommando för algoritmen. För full poäng krävs dessutom att du argumenterar för varför den algoritm du valt är den lämpligaste i detta fall, bland de algoritmer som ingått i kursen. Det blir inget avdrag för rena matlabfel, så länge det framgår att programmet i princip är korrekt. En lösning motsvarande mål 2, betyg 4, ska i princip innehålla följande: Beräkningen av tvärsnittsarean är detsamma som beräkning av integralen: xn x 0 d(x)dx där d(x) är djupet vid position x. Denna integral kan beräknas numeriskt med användning av de givna mätvärdena. Vi väljer att göra detta med trapetsformeln. Eftersom mätpunkterna ligger med ojämna mellanrum, så måste vi tillämpa trapetsformeln på varje delintervall för sig och sedan summera resultaten. En lösning som därtill motsvarar mål 2, betyg 5 innehåller en argumentation i stil med nedanstående: De två metoder för numerisk kvadratur som har ingått i kursen är trapetsformeln och Simpsons formel. Simpsons formel förutsätter att det åtminstone är lika avstånd mellan punkterna i varje dubbelintervall. Detta villkor är inte uppfyllt i det aktuella fallet. Trapetsformeln går däremot att tillämpa här, på det sätt som beskrivits ovan. Trapetsformeln är därför den enda av de metoder som ingått i kursen, som går att använda i detta fall. En lösning som dessutom motsvarar mål 4, betyg 3 innehåller ett program i stil med: load measurements.mat area = trapz(x,d) disp( Area: num2str(area) kvadratmeter ) En lösning som motsvarar mål 4, betyg 4 innehåller i stället ett program i stil med: load measurements.mat n = length(x); area = 0; for i = 1:n-1 area = area + 0.5*(x(i+1)-x(i))*(d(i+1)+d(i)); end disp( Area: num2str(area) kvadratmeter ) Uppgift 7: Integral av mätvärden Max målbetyg: 5 5 5 5 Antag att du är inblandad i ett projekt där det ingår att lösa en integral b f(t)dt, där a funktionen f(t) inte är känd. Istället har man har mätvärden tillgängliga enligt: t t 1 t 2 t n f(t) f(t 1 ) f(t 2 ) f(t n ) Det mätinstrument som används vid mätningarna ger en noggrannhet på två korrekta decimaler. Eftersom mätningar är komplicerade och dyra att göra vill man ha så få mätpunkter som möjligt. Å andra sidan vill man att noggrannheten ska vara så bra som möjligt. I projektet vill man förutom själva beräkningar av integralen därför också veta hur noggrann lösningen är. Företaget vill nu ha en algoritm eller skiss för hur man kan lösa problemet. Du kan t ex använda en matlabliknande kod i din skiss (inga avdrag görs för rena matlabfel). Företaget vill också veta vad man kan säga om noggrannheten i lösningarna och hur man går tillväga för att få fram noggrannheten. De vill också veta hur man på billigast möjliga sätt går tillväga för att förbättra noggrannheten om det krävs. När du utför ovanstående är det viktigt att du använder relevanta begrepp (på ett korrekt sätt).
Algoritm: Eftersom det är dyrt med mätningar är Simpsons metod ett bra alternativ. Å andra sidan sätter den metoden krav på att det är jämnt antal intervall och steglängden måste vara lika över varje dubbelintervall. Om detta är möjligt praktiskt bör man välja Simpsons metod, i annat fall får man använda Trapets (diskussion liknande detta ska ingå för betyg 5). Den övergripande algoritmen/strategin kan t ex vara att inledningsvis beräkna integralen med få punkter. Om man använder Simpson blir det minsta möjliga antalet 5 punkter (4 intervall) om man även ska kunna använda feluppskattning. Beräkna sedan integralen S(h) och uppskatta diskretiseringsfelet R(h) med Richardsonextrapolaton. För att förbättra noggrannheten bör man även addera feluppskattningen, S(h) + R(h). Om det inte uppfyller toleransen (för tolerans, se under Analys) kan man beräkna ungefärligt antal ytterligare punkter som krävs med hjälp av metodens noggrannhetsordning, n.o. 4 om man använder Simpsons metod. Man får sedan göra de mätningar som krävs, dvs göra de mätningar som krävs för att uppnå tillräcklig noggrannhet (här är det bra om man kan utnyttja de punkter som redan finns, så det kan vara bra att tänka i termer av intervallhalveringar), sedan upprepa beräkningarna med den kortare steglängden. För säkerhets skull bör man även göra feluppskattning. Observera att det inte här fungerar bra med en adaptiv metod eftersom den automatiska förfiningen kräver att man har många punkter uppmätta (och det kan då bli onödigt många mätningar). För betyg 5 ska en övergripande algoritm liknande ovanstående finnas, enbart val av Simpsons metod ger inte fullt betyg. Val av Smpson/trapets inklusive diskussion ger betyg 4. Analys: Till att börja med har vi ett funktionsfel som här är ganska stort. Det blir E f (t n t 1 ) 0.5 10 2. Beräkningarna kan aldrig bli bättre än detta och det finns inga skäl att ha ett diskretiseringsfel som är betydligt bättre än detta. Man kan därför t ex använda en tolerans för diskretiseringsfelet på exempelvis tol 10 2. Det totala felet i beräkningarna blir som högst R(h) + E f där R(h) kan uppskattas med Richardsonextrapolation. För att beräkna hur många ytterligare mätningar man behöver göra kan man använda sig av metodens noggrannhetsordning. Om man använder använder Simpsons metod medför varje halvering av stegläng att felet minskas med en faktor 16. På det sättet kan man räkna ungefär hur många ytterligare halveringar som krävs. Begrepp: Begrepp som ska ingå är noggrannhetsordning, diskretiseringsfel, funktionsfel och för fullt betyg ska de kopplas samman med problemet och med varandra enligt ovan. Programmering: För betyg 5 ska matlabliknande kod för algoritmen ovan finnas, inklusive Simpsons metod (om den används).
Obligatorisk svarsblankett: Beräkningsvetenskap I (1TD393 DEMO) I rutan Svar anger du det slutliga värdet på frågan. I rutan Formel anger du de formler du hänvisar till för din beräkning (inte hur man deriverar polynom, men sådant du lärt dig i kursen, inklusive från formelsamlingen) I rutan Beräkning visar du hur du kommit till svaret, med tal instoppade i formler, och de beräkningssteg och/eller motiveringar som behövs för att göra beräkningen förståelig för läraren. Om någon/några av rutorna saknas för en uppgift men du ändå känner att du vill redovisa något som skulle passat i den rutan, redovisa det istället i en av de rutor som finns. Använd sunt förnuft. Rutornas storlek är anpassade för att du ska kunna svara bekvämt. De ger en viss ledtråd om hur mycket du förväntas skriva. Om du i ett undantagsfall inte får plats med ett svar, markera detta tydligt, och komplettera på den sista, blanka, sidan i häftet. Uppgift Integraler 1a: 3 Formel: Beräkning: Uppgift Integraler 1b: 3 Uppgift Icke-linjära funktioner 2a: 3 Uppgift Icke-linjära funktioner 2b: 3 Beräkning: Uppgift Icke-linjära funktioner 2c: 3 Beräkning: Uppgift Nyckelbegrepp 3a:
Uppgift Nyckelbegrepp 3b: Uppgift Linjära ekvationssystem 4: Beräkning: Uppgift Programmering 5a: Uppgift Programmering 5b:
Uppgift Sjön Tämnaren 6: Max målbetyg: 5 4
Uppgift Integral av mätvärden 7: Max målbetyg: 5 5 5 5
Undantagsfall som inte fick plats kompletteras här