Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Matematisk institutt Side 1 av 5 BOKMÅL EKSAMEN I EMNET MAT160 Beregningsalgoritmer 1 Mandag 12 februar 2007 LØSNINGSFORSLAG Tillatte hjelpemidler: Matlab primer og godkjent kalkulator samt oppgitte formler. Oppgave 1 a) Vi finner dp (t)/dt = Q 0 [k exp( kt)(t+t r ) (1 exp( kt))]/(t+t r ) 2. Settes dp (t)/dt = 0 må telleren være 0 slik at Multipliserer med exp(kt) og finner som skulle vises. Settes k exp( kt)(t + t r ) (1 exp( kt)) = 0. exp(kt) = k(t + t r ) + 1 f(t) exp(kt) kt kt r 1 finner vi at f(0) = kt r < 0 og siden eksponentialfunksjonen vokser raskere enn den lineære funksjonen vil f(t) > 0 når bare t er stor nok. Pga kontinuitet er det derfor minst ett nullpunkt for positiv t. Videre har vi at f (t) = k exp(kt) k = k(exp(kt) 1) 0 for positiv t slik at funksjonen er monotont voksende. Dette innebærer maksimalt ett nullpunkt for positiv t og dermed har funksjonen ett entydig nullpunkt for positiv t. b) Newtons metode gir med k = 0, 75 of t r = 1 t i+1 = t i f(t i )/f (t i ) x 0 = 1, 5 x 1 = 1, 368464451017999 x 2 = 1, 357663206732834 x 3 = 1, 357594344854338 x 4 = 1, 357594342070331
MAT160 Beregningsalgoritmer 1 Side 2 av 5 som gir s = 1, 3576 korrekt avrundet til 4 desimaler. Vi ser at allerede x 2 synes å ha nesten 4 korrekte desimaler slik at med ca en dobling av antall korrekte desimaler vil en vente at x 3 har nesten 8 korrekte slik at å beregne x 4 er unødvendig når en bare krever 4 korrekte desimaler. c) Dividert differens tablå. Siden en skal interpolere til 0.6 velges punktene rundt denne verdien 0, 5 1, 715353 1, 510555 2, 682417 2, 402722 0, 7 1, 413242 1, 778797 1, 481056 5, 131289 0, 4 1, 946881 1, 33448 4, 046700 1, 0 1, 146193 2, 14382 0, 2 2, 861249 med t 0 = 0, 5 og t = 0, 6 finner vi lineær approksimasjon p 1 = 1, 715353 + (0, 6 0, 5) ( 1, 510555) = 1, 5642975. p2 = p1 + (0, 6 0, 5) (0, 6 0, 7) 2, 682417 = 1, 53747333. Avbruddsfeil: (0, 6 0, 5) (0, 6 0.7) (0, 6 0, 4) ( 2, 402722) 5 10 3. Dersom vi benytter den absolutt største tredje-ordens dividerte differensen blir estimert avbruddsfeil doblet til 10 2. d) Vi har g(t) = 1 k ln(kt + kt r + 1) og finner at g (t) = 1/(kt + kt r + 1) slik at 0 < g (t) = 1/(kt + kt r + 1) C = 1/(kt r + 1) < 1, for alle t 0 siden t r og k begge er positive. Vi vet at vi har et entydig fikspunkt, s = g(s), s > 0, og at med t 0 0 så vil alle t i > 0 fordi da vil kt i + kt r + 1 > 1 slik at ln(kt i + kt r + 1) blir positiv. Da vil og siden C < 1 har vi konvergens. t i+1 s = g(t i ) g(s) = g (ξ i ) t i s C t i s e) Med t r = 1 og k = 0, 6 blir C = 1/1, 6 = 5/8. Vi finner C/(1 C) = 5/3. Dette gir i t i 5 t i t i 1 /3 0 1, 50000000 1 1, 52715122 0, 0452 2 1, 53797648 0, 0180 3 1, 54227300 0, 0071 4 1, 54397522 0, 0028 Dermed kan vi gi svaret 1, 544 med usikkerhet 0, 003. NB: skal vi her runde av til 2 desimaler (andre siffer 4 eller 5?) må vi ta minst ett steg til. Tallfølgen er monotont voksende (Dette stemmer med at g (x i ) > 0.). Skal vi her sjekke om siste siffer skal være 4 eller 5 så kan vi starte med 1.545, hvis neste tilnærmelse er større er siste siffer 5 ellers er siste siffer 4.
MAT160 Beregningsalgoritmer 1 Side 3 av 5 g (t 4 ) = 0, 3958 g (s), som er asymptotisk feilreduksjonsfaktor. Antall steg, n, er minste n slik at 0, 3958 n 10 6 eller n 6 ln 10/ ln 0, 3958 14, 9 som gir n = 15 steg i tillegg. Oppgave 2 a) Vi benytter feilforplantningformelen: tre variable d 1, d 2 og approksimasjonen til π. Vi ser på hvert ledd i formelen δπ V/ π = δπv/π 0, 366 δd 1 V/ d 1 = 0.5πLvd 2 1δd 1 /d 1 107, 5 δd 2 V/ d 2 = 0.5πLvd 2 2δd 2 /d 2 122, 9 Summeres disse får vi en øvre skranke for feilen 231. Dette innebærer at den oppgitte verdien har ingen sigifikante siffer som tilnærmelse til vekten. Svaret kan oppgies som (767 +/- 231) kg. b) Vi finner V = 3, 14(d 2 t)tlv 795, 693. Effekten av feil i approks. verdi for π blir uendret. Mht d 2 finner vi med 1% usikkerhet Mht t finner vi med 1% usikkerhet δd 2 V/ d 2 = πtlvd 2 δd 2 /d 2 8.3 δt V/ t = πtlv(d 2 2t)δt/t 7.7 Total usikkerhet blir derfor ca 16.4 kg. Dvs med avrunding (796 +/- 17) kg. Grunnen til at denne formelen er bedre er at vi her ikke har det signifikanstapet som differensen d 2 d 1 medfører i første formel. c) Ved gjentatte multiplikasjoner med 2 finner vi de binære sifrene ordnet fra komma: siffer rest 0, 1 0 0, 2 0 0, 4 0 0, 8 1 0, 6 1 0, 2 Stopper når 0,2 opptrer for andre gang: dette gir 0,1 binært 0, 00011001100110011... siden siffer 13 er 1 må vi runde opp slik at svaret blir (0, 000110011010) 2 = 2 4 + 2 5 + 2 8 + 2 9 + 2 11 = (1 + 1/2 + 1/16 + 1/32 + 1/128)/16 (0, 10009765625) 10 som gir en feil på 10 4.
MAT160 Beregningsalgoritmer 1 Side 4 av 5 Oppgave 3 6 2 0 0 1 6 2 0 0 1 6 2 0 0 1 6 x 1 x 2 x 3 x 4 = 1 2 3 4 a) Både Jacobis og Gauss-Seidels iterative metoder vil konvergere nyttet på systemet fordi koeffisientmatrisen er diagonaldominant. Dette gir G J = max(2, 3, 3, 1)/6 = 3/6 = 1/2. Beregn vektor r = (0, 1/6, 1/6, 1/6) og vektor s = (2/6, 2/6, 2/6, 0) som gir G GS max i s i /(1 r i ) = max(1/3, 2/5, 2/5, 0) = 2/5. b) En LU faktorisering av matrisen gir L = 1 0 0 0 0, 166667 1 0 0 0 0, 176471 1 0 0 0 0, 177083 1. U = 6 2 0 0 0 5, 666667 2 0 0 0 5, 647059 2 0 0 0 5, 645833 Eliminasjon på høyresiden gir ˆb T = (1 1, 833333 2, 676470 3, 526043) og tilbakesubstitusjon ˆx = (0, 088561 0, 234317 0, 252767 0, 624539) T. Residyvektoren r T = (0 0, 3 0, 3 0, 1) 10 5. A 1 1/(6 3) = 1/3 slik at ˆx x 0, 3 10 5 /3 = 10 6 c) Gitt en generell diagonaldominant matrise, T. Matlab kode, function [l,d,c]=trilu(a,b,c), når den tridiagonale matrisen er gitt på tre vektorer a, b og c. function [l,d,u]=trilu(a,b,c) %[l,d,u]=trilu(a,b,c) LU faktoriserer matrisen T gitt ved de tre vektorene %a,b og c (hhv subdiagonalen, diagonalen, og superdiagonalen i T) %Vi antar at matrisen er diagonaldominant slik 0-divisjon ikke kan %forekomme. %Ut matrisene L og U er representert ved tre vektorer: l: subdiagonalen %i L, d og u som er diagonal og superdiagonal i U. %Dette kalles ofte for Thomas algoritmen. %Bemerk at verdiene av a(1) og c(n) ingen betydning har i algoritmen. n=length(b); %c-vektoren blir ikke endret i denne algoritmen==> sett u lik c. u=c;
MAT160 Beregningsalgoritmer 1 Side 5 av 5 d(1)= b(1); %Eliminasjons-steget for i = 2:n, l(i)=a(i)/d(i-1); d(i)=b(i)-l(i)*c(i-1); end Vi ser her at det er tre flops i løkken slik at totalt blir det 3(n 1) 3n flops.