Tentamen i Beräkningsvetenskap I och KF, 5.0 hp, 2015-08

Uppsala universitet
Institutionen för informationsteknologi
Avdelningen för beräkningsvetenskap
Tentamen i Beräkningsvetenskap I och KF, 5.0 hp, 2015-08-29
Skrivtid: 0900 − 1200 (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
3
3
3
3
3
3 3
4
5
Del A
1. Vid lösning av linjära ekvationssystem Ax = b är standardmetoden baserad på LUfaktorisering med pivotering.
(a) Hört i korridorerna:
i. ”Det där med pivotering det gör man typ för att konditionstalet ska bli
bättre”.
ii. ”Pivotering det gör man för att noggrannheten ska bli bättre”.
Är ovanstående sant eller falskt? Kort motivering av dina svar krävs.
(b) Vad kan man säga om noggrannheten i lösningen x om cond(A) = 102 och
i. högerledet b beräknas av Matlab via funktionsberäkningar, så att det enbart
är fel orsakade av flyttalsrepresentationen?
ii. högerledet b består av mätdata med 1% fel?
För godkänt krävs en bedömning av om felet eventuellt kan bli stort eller om
det kommer att vara litet i respektive fall.
1
2. Visa att du behärskar algoritmen för LU-uppdelning med pivotering, genom att utföra
algoritmen på matrisen


1 4 4
A =  −4 8 4  .
2 5 8
Ange LU-faktorerna och pivoteringsmatrisen P explicit.
3. Mängden vatten i Fyrisån som passerar en viss plats (dvs ett visst snitt av ån) kan
beräknas med
Z tn
v(t) · w · h(t)dt,
(60 · 60 · 24)
t1
där v(t) är hastigheten vid tiden t (i m/s), w är bredden på ån och h(t) är vattennivån
(höjden) vid tiden t (båda i meter). Om vi mäter höjd och bredd i meter blir resultatet
i enheten m3 /dygn. Man har mätt upp hastighet och höjd några dagar i följd och
fått följande värden (medelvärden över respektive dygn):
t
1
h(t) (m)
2.05
v(t) (m/s) 1.02
2
2.22
1.03
3
2.18
1.50
4
2.20
1.80
5
2.00
1.80
Bredden på ån vid mätstället är w = 8m. Beräkna flödet med någon av de metoder
som ingår i kursen och uppskatta även diskretiseringsfelet med Richardsonextrapolation.
4. (a) Matlabs inbyggda integral-lösare innehåller s k adaptiva metoder. Förklara kort
vad det begreppet betyder (du behöver inte beskriva algoritmen).
(b) För lösning av icke-linjära ekvationer används som regel iterativa metoder, t
ex Newton-Raphsons. Nedan ser du en sekvens av beräknade lösningar xk från
Newton-Raphsons metod och en annan metod (det spelar ingen roll vilken metod). Tyvärr vet vi inte vilken sekvens som tillhör vilken metod. Avgör detta
och motivera.
x0
x1
x2
x3
x4
x5
x6
x7
= 0.9
= -2.4845756
= 2.2971761
= 1.9818160
= 1.9349357
= 1.9337545
= 1.9337538
= 1.9337538
x0
x1
x2
x3
x4
x5
x6
x7
2
=
=
=
=
=
=
=
=
1.9000000
1.9455591
1.9293465
1.9353621
1.9331618
1.9339709
1.9336740
1.9337831
5. (a) Nedanstående program beräknar Fibonacci-talen. Torrexekvera programmet då
funktionen anropas med s = fibonacci(4). Med ’torrexekvering’ avses att du
följer programmet och redovisar rad för rad vad som händer (och skriver ut
successiva värden på parametrar etc).
function fib = fibonacci(limit)
if limit <= 0
fib = NaN;
return;
end
fib = [1; 1];
n = 3;
f = 2;
while (f <= limit)
n = n+1;
fib = [fib; f];
f = fib(n-1)+fib(n-2);
end
(b) Skriv den matematiska funktionen
f (p) = sin(p) −
p2 − 1
2p
som en Matlabfunktion med namnet func1. Matlabfunktionen ska vara skriven
så att den lagras i en egen m-fil i Matlab.
3
Del B
6. Kalkylatorappar, t ex miniräknare på mobiltelfoner,
har normalt en knapp för ”n:te
√
n
roten ur” som t ex kan vara markerad med a. Parametern n är här ett positivt
heltal och a ett positivt reellt tal. Miniräknaren visar 10 siffror på displayen, och
dessa siffror ska vara korrekta. Din uppgift är att beskriva hur detta kan räknas ut,
dvs kort beskriva en lämplig algoritm som uppfyller kraven ovan. Algoritmen får
enbart använda de aritmetiska operationerna addition, subtraktion, multiplikation
och division.
Tips: Problemet kan skrivas som x = a1/n , vilket medför att det kan skrivas som
xn = a.
7. När man har system av m st icke-linjära ekvationer och använder Newton-Raphsons
metod förvandlas f 0 (xk ) till en m × m-matris av derivator, den s k Jakobianen J(x̄k ).
Divison med f 0 (x) blir då istället en matrisinvers och formuleringen av NewtonRaphson förändras till
x̄k+1 = x̄k − J(x̄k )−1 · f¯(x̄k ),
(1)
där x̄k , x̄k+1 och f¯(x̄k ) är vektorer av längd m. Genom omskrivningen
ūk = −J(x̄k )−1 · f¯(x̄k ) ⇒ J(x̄k )ūk = −f¯(x̄k )
kan man formulera om Newton-Rapsons metod till
J(x̄k )ūk = −f¯(x̄k )
x̄k+1 = x̄k + ūk
(2)
(a) Omformuleringen från (1) till (2) påverkar beräkningarna på något sätt. Förklara på vilket sätt och varför.
(b) Man kan använda LU-faktorisering i lösningen av ovanstående. Tjänar man
något på det om man ser till antalet operationer?
4