Tentamen i Beräkningsvetenskap I/KF, 5.0 hp, 2015-03
Transcription
Tentamen i Beräkningsvetenskap I/KF, 5.0 hp, 2015-03
Uppsala universitet Institutionen för informationsteknologi Teknisk databehandling Tentamen i Beräkningsvetenskap I/KF, 5.0 hp, 2015-03-17 Skrivtid: 1400 − 1700 (OBS! Tre timmars skrivtid!) Hjälpmedel: Bifogat formelblad och miniräknare. För fullt uppfyllda mål och kriterier på uppgifterna krävs fullständiga räkningar och utförliga resonemang samt motivering till alla svar. Kursmål (förkortade), hur de täcks i uppgifterna och maximalt betyg (med reservation för modifieringar). Fråga nr 1 2 3 4 5 6 7 Nyckelbegrepp Algoritmer Analys Programmering 3 (a) 3 (b) 3 3 (a) 3, (b) 3 (a) 3, (b) 3 4 4, 5 Del A 1. Matrisen A i ett linjärt ekvationssystem Ax = b har LU-faktoriserats till matriserna L, U och P så att P A = LU . Matriserna är 1 0 0 1 2 1 0 1 0 1 L = 0 1 0 U = 0 2 P = 0 0 1 . 1/2 0 1 0 0 −1/2 1 0 0 2 4 . Använd LU-faktoriseringen för att lösa ekvationssystemet med b = 6 Utnyttja att L är undertriangulär och att U är övertriangulär för att spara beräkningar. Redovisa beräkningarna. 1 2. I figuren nedan visas den icke-linjära ekvationen sin(5x) + cos(3x) + 1 = 0 (x-värden i radianer, inte grader). 3 2.5 2 f(x) 1.5 1 0.5 0 -0.5 -1 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 x (a) Genom zoomning i plotten kan man se att första positiva roten ligger i intervallet [0.6 0.8]. Visa att du behärskar Bisektionsmetoden genom att hitta denna rot med den metoden. Använd intervallet ovan som startintervall, och iterera tills lösningen har en decimals noggrannhet, dvs felet är < 0.05. (b) Antag att du istället ska lösa samma problem (dvs hitta första positiva roten) på en dator med Newton-Raphsons metod. Tyvärr har du inte plottat funktionen och vet därför inte riktigt hur funktionen ser ut. Ange två problem som kan uppstå. 3. En vän till dig har utvecklat en numerisk metod för att beräkna integraler. Din vän påstår att metoden har noggrannhetsordning 3. För att undersöka om det verkligen stämmer testar du metoden på en integral Z 1 I= f (x) dx , 0 där f är en känd funktion, som är så pass enkel att du kan beräkna integralen analytiskt. När du diskretiserar integrationsintervallet med steglängden h = 0.2 finner du att det absoluta felet |Iber − I| är 0.152, där Iber är det integralvärde som du beräknat med din väns metod. Förutsatt att metodens noggrannhetsordning verkligen är 3, hur stort bör felet |Iber − I| bli, om du gör en ny beräkning med den mindre steglängden h = 0.1? 2 4. (a) En iterativ metod för att lösa en icke-linjär ekvation med lösning x∗ = 0 ger dessa rotuppskattningar i tre på varandra följande iterationer: x1 = 0.1, x2 = 0.01, x3 = 0.0001. Vilka av påståendena nedan stämmer? Kort motivering krävs i. ii. iii. iv. Metoden Metoden Metoden Metoden har noggrannhetsordning 2. har konvergenshastighet 2. divergerar. konvergerar. (b) En av lärarna på kursen har i Matlab implementerat Simpsons metod för att beräkna en integral numeriskt. Här används en ekvidistant indelning av integrationsintervallet, dvs steglängden h är densamma över hela intervallet. Då integralen beräknas med olika h finner man att det relativa felet i beräkningarna ändras enligt grafen nedan. Uppenbarligen beter sig det relativa felet väldigt annorlunda för h < 10−3 , jämfört med för h > 10−3 . Detta beror på att två olika typer av fel påverkar beräkningarna. Ange vilken typ av fel är det som dominerar för (i) h > 10−3 ? (ii) h < 10−3 ? 10 -2 10 -4 relativt fel 10 -6 10 -8 10 -10 10 -12 10 -14 10 -16 10 -10 10 -8 10 -6 10 -4 h 3 10 -2 10 0 5. (a) Vad skrivs ut på skärmen när följande program körs? N = 3; j = 1; for i = 1:N if j > 2 disp(’i är: ’) disp(i) elseif j == 2 disp(’j är: ’) disp(j) else disp(’i+j är: ’) disp(i+j) end j = 2*j; end (b) I ett Matlab-program för att beräkna medelvärdet av en vektor x har raderna tyvärr blivit slumpmässigt omkastade. Dessutom har en extra onödig rad tillkommit och indenteringen försvunnit. Återställ den sekvens av kodrader som bildar programmet som beräknar medelvärdet av vektorn x och detta värde tilldelas variabeln medel vid programmets slut. Ange de sex kodradernas nummer (t ex 2, 3, 4, 5, 6, 7) i den ordning som kodraderna måste skrivas för att bilda programmet. Observera att en av raderna ska tas bort. Motivering behövs inte. Nummer 1 2 3 4 5 6 7 Kodrad end for i=1:length(x) x = [5 1 2 3 1]; medel = summa/length(x); summa = summa + x(i); summa = summa + i; summa = 0; 4 Del B Rb 6. När man löser integraler a f (x)dx numerisk kan integranden f (x) vara given antingen som en kontinuerlig funktion eller som en datamängd (en tabell) med t ex mätvärden enligt x2 ··· f (x2 ) · · · xi x1 f (xi ) f (x1 ) xn f (xn ) Vi förutsätter här att antalet värden n i tabellen ska kunna vara vilket som helst, dvs både udda eller jämnt antal. (a) Under de här förutsättningarna, beskriv vilka metoder (av de som ingått i kursen, dvs Simpson eller Trapets) som är lämpliga i fallet då f (x) är en kontinuerlig funktion, respektive när den given som diskret datamängd enligt ovan. Du måste motivera ditt val av metod för de två fallen. (b) Beskriv även det totala felet i de båda fallen, genom att ge formler för felen där du med korrekt begreppsapparat kort beskriver de olika komponenterna i formlerna. (c) Du kan anta att f (xi ) (i tabellen ovan) har en noggrannhet på 3 korrekta decimaler, dvs att absoluta felet i f (xi )-värdena är ≤ 0.5 · 10−3 . På vilket sätt påverkar detta felet? Vad i ditt uttryck i (b) påverkas. 7. Tryckförhållandena i knutpunkterna i vattenledningsnätet i Lutorp kan beräknas som lösningen till det linjära ekvationssystemet Ap = b, där A är en n × n-matris, p och b är kolonnvektorer med vardera n element. Det finns n stycken knutpunkter i vattenledningsnätet och vektorelementet pk är trycket i knutpunkt nummer k. Vattnet i nätet kommer från en vattenreservoar och vattentrycket i reservoaren avgör hur stort trycket blir i de olika knutpunkterna. Vi antar här att trycket i varje knutpunkt är > 0. Vattentrycket r i reservoaren påverkar högerledet b, men inte koefficientmatrisen A i ekvationssystemet ovan. För att vattenledningssystemet ska fungera tillfredställande måste trycket i knutpunkterna överstiga ett undre värde c. Nu vill ingenjörer på Tekniska kontoret i Lutorp beräkna hur stort trycket i vattenreservoaren minst behöver vara för att vattentrycket i knutpunkterna ska bli större än eller lika med c (den knutpunkt med det lägsta trycket måste alltså minst vara c). Din uppgift är beskriva hur man skulle kunna lösa detta problem och utforma ett program eller algoritm för att bestämma det tryck i vattenreservoaren r som gör 5 att det minsta elementet i vektorn p får värdet c. Uttryck programmet i Matlab eller Matlab-liknande notation. Du får använda Matlabs inbyggda kommandon för att lösa olika typer av beräkningsproblem, så du behöver inte implementera en egen numerisk metod. Vidare kan kommandot min(p) användas för att hitta minsta värdet i vektorn p. Du får också anta att det finns en färdig Matlab-funktion hogerled(r), som genererar ekvationssystemets högerled (dvs givet ett visst värde på r så skapas högerledet). Det blir inget avdrag för rena Matlab-fel, så länge det framgår att programmet i princip är riktigt. 6