1 SF1520 VT2017 NA, KTH 16 januari 2017 Laboration 3 Funktioner, vektorer, integraler och felskattning Efter den här laborationen skall du kunna använda och skriva egna funktioner med flera in- och utparametrar, och hantera vektorer. Du kan göra olika typer av kurvanpassningar och kan uppskatta lösningsnoggrannheten och du kan skatta integraler Läsanvisning: GNM: kap 2,5. PEng: Kap 5-8. 1. Funktions-motion Skapa en funktion för f(x) = exp(x) x 3, kalla den funk1. Skapa sedan flera (minst 2) egna funktioner med namn och utseenden som du väljer själv. De skall alla vara funktioner av en variabel och ligga på separata filer med lämpliga namn. Du skall nu skriva ett program som skall kunna tabellera, plotta och integrera funktioner. Det skall först fråga efter namnet på funktionen. (Programmet får inte i förväg veta funktionernas namn. Programmet skall också fungera för Matlabs inbyggda funktioner, som tex sin och log.) Sedan skall programmet upprepat för denna funktion erbjuda tabellering, uppritning, integration och/eller nollställesökning med hjälp av en meny. Man kan sedan byta funktion och fortsätta med den nya funktionen på samma sätt. Programmet skall fortsätta tills man väljer att avsluta. Dialogen kan se ut enligt nedan Vad heter funktionen? funk1 Ditt val: 1 Tabellering: Vilket är undre gräns? 1 Vilket är övre gräns? 3 Vilket steg? 0.5 x f(x) 1.0000 1.7183 1.5000 1.1067 2.0000-0.6109
2 2.5000-3.4425 3.0000-6.9145 Ditt val: 4 Finna nollställe: Ange ett startvärde: 2 Ett nollställe är x = 1.8572 Ditt val: 5 Välja ny funktion: Vad heter den nya funktionen? sin Ditt val: 4 Finna nollställe: Ange ett startvärde: 6.3 Ett nollställe är
3 x = 6.2832 Ditt val: 6 Tack och hej! Provkör ditt program med flera olika funktioner. (Ledning: Du måste alltså läsa in namnet på funktionen. För att sedan anropa funktionen rekommenderas tex Matlab-funktionerna feval eller str2func.) 2. Varmast På filen vintersol.m finns mätdata som visar temperaturen vid ett antal olika tillfällen under ett vinterdygn. a) Skriv ett program som läser in data från filen och sedan skattar dygnets högsta temperatur med en lämpligt vald metod. (Anpassa en lämplig kurva till mätdata och beräkna kurvans minsta värde.) Vid redovisningen får du motivera varför ni valt den metod ni valt. Tag rejäl hänsyn till mätnoggrannheten! (Här finns många rimliga val och överväganden att göra!). OBS! Inläsning av rådata sker här lättast genom att köra data-filen. Den är en m-fil! Att skriva av (kopiera in) siffrorna i sitt eget program är inte godkänt. Låt programmets redovisning av resultatet också innehålla en beskrivande plot. Denna uppgift kan lösas på många olika sätt! Välj en lämplig metod. Förklara vid redovisningen varför du valt just den metod du valt! Du skall kunna försvara ditt val! b) Varför skall du inte skriva av/kopiera in siffrorna i ditt eget program? c) Om de givna temperaturerna antas ha avrundats till en decimal, hur stor inverkan kan detta ha på din beräknade maxtemperatur? (alltså: beräkna hur stort tabellfelet är i din beräknade maxtemperatur).
4 3. Enkel integral Beräkna följande integral (a) analytiskt. I = 9 1 x 5 dx Lös sedan integralen numeriskt med papper och penna och miniräknare med (b) trapetsregeln och steglängderna h = 8, h = 4 och h = 2 (c) gör Richardson-extrapolation på de tre trapetsregelvärdena ovan. (d) Utgå från dina erhållna värden i uppgift b och c ovan (inte a!). Skatta ur dem ett så bra numeriskt värde på integralen du kan (inklusive en numeriskt skattad felgräns). (e) Jämför nu med det analytiska värdet du tog fram i uppgift a. Stämmer det? (f) Gör nu ännu en trapetsregelberäkning (med h=1) och gör nu upprepad Richardsonextrapolation (dvs beräknaˆt). Vad händer? Varför? Har det att göra med att h = 1? Lös sedan integralen numeriskt med datorn och (g) trapetsregeln, (valfria steglängder, dock minst 5 st (fler steglängder ger en mer lättolkad plott!)) (h) trapetsregeln följd av richardson-extrapolation (pröva minst 1 upprepning, gärna fler). (i) Undersök hur trunkeringsfelet, E h, beror av steglängden, h, genom att plotta felet i deluppgifterna g och h som funktion av steglängen. Använd gärna MATLABs kommando loglog för plottarna. Uppskatta metodernas noggrannhetsordning, p, med hjälp av dessa plottar. För en metods noggrannhetsordning gäller E h = I analyt I approx (h) konstant h p däri approx (h) är det numeriskt uträknade integralvärdet med först bara trapetsregeln och sedan trapetsregeln följt av richardson-extrapolationen och I analyt är det analytiskt uträknade integralvärdet. Stämmer detta med vad som gäller för felen enligt formlerna i kursboken? (j) Illustrera integralens värde genom att färga arean under kurvan grön. (Hint: fill).
5 4. Integral Vi vill skatta integralen I = 2π 0 x π ( 9e 0.0006 )2 dx med MATLAB-program. Integralen kan skattas analytiskt med minst tio decimaler med värdet I ref = 0.0054 π. Använd detta värde som referensvärde. Börja skatta integralen över hela intervallet med MATLABs quad eller integral. Börja med standard-toleransen. Sätt sedan hårdare tolerans. Stämmer det med refensvärdet? Lös sedan integralen med trapetsregeln. Börja med att dela intervallet i 20 delar. Hur mycket och varför skiljer sig integralvärdet från referensvärdet? Halvera sedan steglängden i trapetsregeln tills dess att I ref I trap 10 8. Hur många halveringar behövde du? Hur många funktionsevalueringar har trapetsregeln gjort? Hur många funktionsevalueringar gjorde quad? Vilken av metoderna har använt flest funktionsevalueringar? Varför? (Tips: Om du gör anropet [I_quad,fnceval]=quad( fun_name,a,b,tol) när du använder quad så innehåller variabeln fnceval antalet funktionsevalueringar quad har använt vid beräkningen av resultatet. För trapetsregeln kan du titta på steglängden, i hur många punkter har integranden beräknats?) 5. Krympt integral Byt nu ut övre gränsen i föregående uppgift från 2π till 6. a) Skatta för hand, en övre gräns för hur mycket integralvärdet maximalt kan ha ändrats när intervallet krymptes. Justera sedan ditt referensvärde så mycket som behövs. b) Beräkna sedan integralen numeriskt med de tre metoderna (dvs quad, integral och trapetsregeln), med ett trunkeringfel på högst 10 8. Hur många funktionsevalueringar behövdes med respektive metod? Vilken metod föredrar du? Varför? c) Frivillig: Hur få funktionsevalueringar kan du komma ned till och ändå få rätt svar med minst 8 decimaler (jämfört med referensvärdet)? (Tips: Se till att ditt program beräknar rätt integralvärde) 6. Kombo Läsanvisning: GNM Kap X+Y (vilka två kapitel är det?) a) Bestäm ett positivt k (dvs k > 0) med minst 8 säkra decimaler så att 5 0 e k(x 4)2 k +x dx = 1 k2 /4 (med en effektiv algoritm). b) Finns det mer än en lösning med positivt k? c) Hur många funktionsfiler bör ditt program ha? Vilka då? Hur ser de ut?
6 d) Hur tog du fram ett startvärde till ditt program? Har du kommit på ett bättre sätt nu efter att du löst uppgiften? Om så, vilket sätt är det? Tips: Börja med att strukturera problemet. Vilka delproblem behöver lösas och vilka numeriska metoder är tillämpliga? Vilka kapitel i boken beskriver dessa numeriska metoder? Inför lämpliga beteckningar och formulera en algoritm. Fundera sedan på hur trunkeringsfelen i metoderna bidrar till felgränsen för det som söks. Lämpliga startvärden erhålles förslagsvis med trial-and-error. / NC /