Facit Tentamen i Beräkningsvetenskap I (1TD9) STS ES W K1 Utför överskådlig beräkning, och presentera svar på följande frågor. Det bifogade svarsarket måste användas, så lös först uppgifterna på ett kladdpapper, överför senare en ren och tydlig lösning på svarsarket. Del A Uppgift 1: 4p Adaptiva metoder I kursen ingår begreppet adaptivitet och adaptiva metoder. I ett av miniprojekten skrevs en egen adaptiv metod - nedanståe figur kommer från detta miniprojekt. Graferna visar, ordnade uppifrån och ner, integralens värde, steglängden respektive feluppskattningen. I samtliga grafer representerar Ü-axeln djupet för vilken integralen räknas ut. Toleransen är satt till 0 5 10 4 i detta exempel. Förklara varför kurvan som visar feluppskattningen ser ut som den gör. Uppgift 1 Det krävs mindre och mindre steglängd h för att integralen ska kunna lösas med noggrannhetskravet uppfyllt när integrationsområdet blir större. Man ser i undre figuren att felet ökar ända tills det når den övre gränsen (toleransen). I detta läge krävs att h minskar och metoden väljer automatiskt en mindre steglängd h (vanligtvis halverad steglängd). Vi får då hacken i den undre figuren. I och med att ett mindre h valts kommer felet att minska kraftigt, och vi får även motsvarande hack på samma plats i mellersta figuren. Uppgift 2: 4p Talrepresentation Två tal, 100 och 16007, representeras som 1 000 10 respektive +ÁÒ i talsystemet Ô Ä Í. Ange i de fall det går värden på Ô Ä och Í baserat på den givna informationen. Uppgift 2 Basen = 10, Ô = 5 värdesiffror (eller 4 om man anger antal decimaler). Största exponenten Í = Minsta exponenten Ä känner vi inte, men mindre än.
Uppgift : 4p Icke-linjära ekvationer Funktionen ( ) = 2 Ê 10 har ett nollställe vid den vattennivå som motsvarar att en vattentank är fylld med 10Ñ vatten. Beräkna 1 genom en (1) iteration med Newton-Raphsons metod om 0 = 1 1 och Ê =. Räcker iterationen för att uppnå 2 decimalers noggrannhet? Uppgift Formler: +1 = ( ) ¼ ( ) Ja, 6 0009 10 04 0 005 ( ) = Ê 2 10 ¼ ( ) = 2Ê 2 Ber 1 = 1 1 (1 1) ¼ (1 1) = 1 0994 1 0 = 6 0009 10 04 0 005 Uppgift 4: 4p Linjära ekvationssystem ¼ ¼ 1 0 0 Ä = 0 5 1 0, Í = 1 1 1 1 2 0 2 0 0 5 ¼, È = 1 0 0 0 1 0 0 0 1 ¼, = Beräkna Ü för systemet Ü =. Matriserna Ä Í È är resultatet av en lu-uppdelning av. Använd framåt- och bakåtsubstitution. Uppgift 4 Formler: Pb beräknas till b ty P är enhetsmatrisen Ly = Pb Ux=y Framåtsubstitution: ¼ ¼Ly=Pb ¼ 1 0 0 Ý 1 1 0 5 1 0 Ý 2 = 0 1 1 1 Ý Ý 1 = 1 1 = 1 Ý 2 = (0 ( 0 5 Ý 1 )) 1 = 0 5 Ý = ( (1 Ý 1 + 1 Ý 2 ) 1 = 1 5 Bakåtsubstitution: ¼ ¼ Ux=y ¼ 1 2 Ü 1 1 0 2 Ü 2 = 0 5 0 0 5 Ü 1 5 Ü = 1 5 5 = 0 Ü 2 = (0 5 ( Ü )) 2 = 0 7 Ü 1 = (1 (2 Ü 2 + Ü ) 1 = 0 5 1 0. Ü = (0 5 0 7 0 ) Ì Uppgift 5: 4p Programmering Följande program i matlab hjälper ett företag att utföra några beräkningar på ett linjärt ekvationssystem de har: 1 2 4 5 6 load( matrisdata )%läser in matrisen A for i=1:5 x=input( Ange konstant: ) b=[zeros(length(a)-2,1); x; x];%skapa vektor (0 0... 0 x x) A\b ;
Företaget använder stora matriser och har hört att det går att göra programmet snabbare, och har bett dig om hjälp. Använd de programrader av ovanståe du vill. Du får även använda följande extra rader, men inte lägga till andra egenskrivna rader: 7 8 9 [L U P] = lu(a); U \ y y = L\ (P*b); Svara med den följd av radnummer som ger det önskade programmet (radnumren står tryckta till vänster om varje programrad). Uppgift 5 Korrekt kod (radordning): 1 7 2 4 9 8 6. Rad 5 utgår Del B Uppgift 6: Icke-linjära ekvationer En funktion (Ü) ser ut enligt följande graf: y f(x) 0.5 1.0 1.5 2.0 2.5.0 x a: 2p Baserat på ovanståe figur, hur många steg behöver du köra bisektionsmetoden för att intervallet ska innehålla precis en lösning, om startintervallet sätts till [0 5 0]? Vilket intervall har du då? Redovisa alla steg du gör i bisektionsmetoden. b: 1p Ursprungsintervallet [0 5 0] förutom det intervall du kom fram till i deluppgift a, innehåller också lösningar. Vilken rot hittas om man kör bisektionsmetoden på det intervallet? c: 2p Enligt samma figur, ungefär vilket svar förväntar du dig om du använder Newton-Raphsons metod med startvärde 0 5? Glöm inte motivera (illustrera?) ditt svar. d: 1p Enligt samma figur, ungefär vilket svar förväntar du dig om du använder Newton-Raphsons metod med startvärde 1 5? Glöm inte motivera (illustrera?) ditt svar. Uppgift 6a Uppgift 6b Efter två halveringar. (0 5) 0, ( 0) 0 ok mitten är 1.75 och (1 75) 0 så nytt intervall 1.75...0 mitten är 2.750 och (2 750) 0 så nytt intervall 2.750...0. I det intervallet finns bara ett nollställe (ungefär vid Ü = 2 8). Bisektion kan ej genomföras Intervallet som är kvar är 0.5...2.75, men då (0 5) 0 och (2 75) 0 kan bisektion ej genomföras.
Uppgift 6c Ungefär 0.7. Tangenten är ungefär som funktionen och pressar snabbt alla iterationer mot det närbelägna nollstället: y 0.5 - Uppgift 6d Ungefär 0.7 ty den första tangenten korsar x-axeln i samma område som deluppgift c: y 0.5 1.5 - Uppgift 7: 6p Matlab Nedanståe matlabkod beräknar integralen Ê (Ý) Ý för = 10 11 100 med hjälp 0 av trapz, dvs trapetsmetoden. I koden görs också en feluppskattning och steglängden beräknas automatiskt så att en viss feltolerans tol är uppfylld. Integranden tänker vi oss att den beräknas i matlabfunktionen integrand som alltså finns tillgänglig. tol = 0.5*10^(-4); I1 = zeros(91,1); for D = 10:100 h(d-9) = D/2; fel(d-9) = tol + 1; while abs(fel(d-9)) > tol y1 = [0:h(D-9):D]; y2 = [0:2*h(D-9):D]; I1(D-9) = trapz(y1,integrand(d,y1) ); I2 = trapz(y2, integrand(d,y2) ); fel(d-9) = (I1(D-9) - I2)/; h(d-9) = h(d-9)/2; Nu vill man skriva om koden till en matlabfunktion med namn vattentryck där man via anrop till funktionen kan variera undre och övre gränsen för. Exempelvis ska anropet [I, D] = vattentryck(20, 250); leda till att integralen beräknas för = 20 21 250. Parametrarna D och I ska efter anropet vara två vektorer där D innehåller alla -värden och Á motsvarande integralvärden. Modifiera koden ovan enligt dessa önskemål.
Uppgift 7 Koden kan förslagsvis ändras till: function [I, D, fel] = vattentryck(dl, du); tol = 0.5*10ˆ (-4); D = [dl:du]; n = length(d); I1 = zeros(1,n); fel = length(1,n) for i = 1:n h = D(i)/2; fel(i) = tol + 1; while abs(fel(i)) tol y1 = [0:h:D(i)]; y2 = [0:2*h:D(i)]; I1(i) = trapz(y1, integrand(d(i),y1)); I2 = trapz(y2, integrand(d(i), y2)); fel(i) = (I1(i) - I2)/; h = h/2; Uppgift 8: 8p Kemisk process I en av laborationerna i kursen beräknades hur stor andelen av vattenmolekylerna som sönderdelades i en viss kemisk process. Sambandet mellan andelen sönderdelade vattenmolekyler Ü (ett tal mellan 0 och 1) och trycket Ô kan i detta fall uttryckas som: (Ü Ô) = à där à är reaktionens jämviktskonstant. För den reaktion vi studerar är alltså à konstant. Om man vidare bestämmer sig för ett visst tryckvärde man kan sedan ur sambandet ovan beräkna ett motsvarande värde på Ü. På så vis kan värdet på Ü uppfattas som en funktion av Ô. För ett fixt värde på Ô får man fram Ü(Ô) genom att lösa ekvationen ovan. Antag nu att vi vill beräkna integralen av Ü(Ô) över ett intervall av Ô-värden: Ü(Ô) dp Din uppgift är att skissa ett Matlab som genomför dessa beräkningar genom att använda de inbyggda Matlab-kommandona quad och fzero. (Du får anta att (Ü Ô) finns tillgänglig som Matlab-funktion,etc.). Du ska även besvara följande: Antag att du i quad använder en tolerans tol1 och i fzero en tolerans tol2, där toleransen i båda fallen avser det absoluta felet. Ungefär hur stort kommer i så fall det absoluta felet i det beräknade närmevärdet till integralen att vara? (Svaret måste underbyggas med ett teoretiskt resonemang.)
Uppgift 8 Æ tol1 + ( )tol2 Huvudprogram: global K a = input( Ange undre integrationsgräns: ) b = input( Ange övre integrationsgräns: ) K = input( Ange jämviktskonstantens värde: ) I = quad(x,a,b) disp([ Beräknat värde på integralen: num2str(i)]) Funktionen x(p): function y = x(p) global pr K pr = p y = fzero(f,[0 0.9]) Funktionen F(x): function y = F(x) global pr K y = g(x,pr) - K Feluppskattning: Beteckningar: Æ: felet i det beräknade integralvärdet; : trunkeringsfelet i integralberäkningen; : funktionsfelet i integralberäkningen. Det gäller att Æ +. I quad görs feluppskattning med femtondelsregeln, vilket innebär en uppskattning av. Därför gäller det approximativt att tol1. För funktionsfelet gäller att ( ), där är en övre gräns för beloppet av absoluta felet i beräkningarna av integrandens värde. Eftersom integranden i vårt fall beräknas genom anrop av fzero, så kommer det att gälla att tol2. Vi kan nu dra slutsatsen att det ungefär gäller att: Æ tol1 + ( )tol2