Dagens föreläsning (F15) Problemlösning med datorer Carl-Mikael Zetterling bellman@kth.se KP2+EKM http://www.ict.kth.se/courses/2b1116/ 1
Innehåll Programmering i Matlab kap 5 EKM Mer om labben bla Deluppgift 2 http://www.ict.kth.se/courses/2b1116/ 2
Delar av ett program Inmatning Beräkningar/beslut Utmatning http://www.ict.kth.se/courses/2b1116/ 3
Program: inmatning a=input( Mata in ett tal : ); a=input( Mata in ett lösenord:, s ); % för textsträngar Vad händer om orimliga värden matas in? Exempel: inmatning av tal 0 (eftersom en division ska utföras) http://www.ict.kth.se/courses/2b1116/ 4
Program: inmatning med if % Exempel: inmatning av tal 0 a = input( Mata in ett tal som inte är noll: ); if a = = 0 a = input( INTE noll sa jag! ); else disp( Bra jobbat! ); svar = 75 / a end http://www.ict.kth.se/courses/2b1116/ 5
Program: inmatning med for % Exempel: inmatning av tal 0 for i = 1 : 100 a = input( Mata in ett tal som inte är noll: ); if a = = 0 disp( INTE noll sa jag! Försök igen. ); else break end end svar = 75 / a http://www.ict.kth.se/courses/2b1116/ 6
Program: inmatning med while % Exempel: inmatning av tal 0 a = 0; while a = = 0 a = input( Mata in ett tal som inte är noll: ); end svar = 75 / a http://www.ict.kth.se/courses/2b1116/ 7
Program: villkorssatser if villkor then A; else B; end for i=1:1:10 a(i)=beräkning; end while villkor i=i+1; end Exempel: F15enkel.m http://www.ict.kth.se/courses/2b1116/ 8
Program: utmatning b=a^2 skrivs automatiskt ut b=a^2; skrivs inte ut med ; på slutet skriv ut inmatningshjälp mm disp( Program för primtalstestning ); disp([ Sträckan blir, num2str(x), m. ]); fprintf( Sträckan blir %f m.\n, x); http://www.ict.kth.se/courses/2b1116/ 9
Program: funktioner Strukturera program Separera variabelnamn Återanvänd kod Samma filnamn som funktionen function a = kvadrat(b); a = b.*b; x = 7; % påverkar ej x utanför funktionen http://www.ict.kth.se/courses/2b1116/ 10
Några tips: Dela upp problemet i mindre bitar Skriv pseudokod eller rita flödesscheman först Använd funktioner Kan återanvändas Kan testas för sig http://www.ict.kth.se/courses/2b1116/ 11
Valutaomvandlingar Gör ett program för att skriva ut valutaomvandlingar, ungefär som www.forex.se Omvandla mellan dollar, euro och kronor Beräkna sälj och köpkurser med procentuell marginal http://www.ict.kth.se/courses/2b1116/ 12
Valutaomvandling, pseudokod: Mata in valutakurser och marginal Räkna ut köp- och säljkurser Skriv ut hjälptext Mata in val av omvandling Mata in belopp att omvandla Skriv ut resultat http://www.ict.kth.se/courses/2b1116/ 13
Valutaomvandling, kurser: Forex 2006-10-04: Euroland EUR köp 9,2146 sälj 9,4560 (medel: 9,3345) Dollar USD köp 7,2045 sälj 7,4295 (medel: 7,316) Köpkursen är lägre, tex 7,316 kronor/dollar / 1,0155 Tänk på enheterna, kronor/dollar resp kronor/euro dollar till euro: gör dollar till kronor, sedan kronor till euro, dvs två omvandlingar i serie: 10 dollar * 7,2 kronor/dollar * 0,11 euro/krona = 7,9 euro http://www.ict.kth.se/courses/2b1116/ 14
Valutaomvandling, dialog: Vill du omvandla 1. kr till dollar 2. dollar till kronor 3. kr till euro 4. euro till kr 5. dollar till euro 6. euro till dollar > 2 Hur mycket? > 100 100 dollar blir 790 kronor http://www.ict.kth.se/courses/2b1116/ 15
Valutaomvandling, program: F15kurser.m används bara för att mata in kurser och marginal; anropas bara om kurserna inte existerar F15valuta.m är huvudprogrammet http://www.ict.kth.se/courses/2b1116/ 16
Repetition och Regelbundna pauser http://www.ict.kth.se/courses/2b1116/ 17
Deluppgifter Deluppgift 1. Enkla uppgifter kort rapport 2. Kurvanpassning språkgranskad rapport 3. Programmering muntlig redovisning Obligatorisk? Nej (gör alla 7) Ja Nej (välj en av 7) Max labbpoäng 1 2,5 2 Ofullständiga uppgifter kan behöva kompletteras. Deluppgifter får poäng i halvpoängssteg upp till angiven maximal labbpoäng. Minst 3 labbpoäng krävs för labbkursen. http://www.ict.kth.se/courses/2b1116/ 18
Betyg och slutbetyg labbpoäng: TEN1(3p): LAB1(2p): 3 4 5 3 3 3 4 4 3 3,5 3 4 4 4 4 3 4 5 4 4,5 4 4 5 5 5 4 4 5 5 5,5 4 5 5 Slutbetyg = round + (( 3* TEN1 2* labbpoäng) / 5) http://www.ict.kth.se/courses/2b1116/ 19
Labbrapport - deadlines Se KP2 för detaljer Senast 4 oktober kl 23.59 ska skiss på rapport del 2 skickas till richard1@kth.se Senast 12 oktober ska del 3 redovisas muntligt på handledningspasset L5 (13-17) Senast 1 november kl 23.59 ska hela labbkursen vara inskickad till richard1@kth.se och bellman@kth.se http://www.ict.kth.se/courses/2b1116/ 20
Deluppgift 1 Uppvärmningsuppgifter Ni får labba ihop, men varsin rapport och inlämning, tala om vem ni labbat med! Enkel rapport Maila rapport + filer till bellman@kth.se Deadline 2006-11-01 http://www.ict.kth.se/courses/2b1116/ 21
Deluppgift 3 Valfri programmeringsuppgift Gör bara en av de sju 3.1 enklast, 3.7 svårast Muntlig redovisning för assistent Senast 2006-10-12 Visa att programmet fungerar, förklara hur det fungerar Om ni är två måste båda kunna svara på frågor om hur programmet fungerar Maila programmet till bellman@kth.se http://www.ict.kth.se/courses/2b1116/ 22
Deluppgift 2, rapportskiss Varsin rapport även om ni labbat tillsammans, skriv vem ni labbat med! Rapport bedöms språkligt av Richard Nordberg, feedback F18, 11/10 Rapportskiss senast 2006-10-04 till richard1@kth.se Alla delar enligt KP2 sid 6 Kurvanpassa två av modellparametrarna: n och I 0 http://www.ict.kth.se/courses/2b1116/ 23
Deluppgift 2, rapportskiss 1. Titelsida 2. Sammanfattning 3. Innehållsförteckning 4. Inledning 5. Problem och syfte 6. Metod och utförande ca 1 200 1 500 ord 7. Resultat 8. Diskussion och slutsatser 9. Eventuella referenser http://www.ict.kth.se/courses/2b1116/ 24
Deluppgift 2, slutrapport Senast 2006-11-01 kl 23.59 Till både richard1@kth.se och bellman@kth.se Alla delar i rapporten efter feedback Alla tre modellparametrar n, I 0 och R krävs för full poäng. Ni får labba ihop, men varsin rapport och inlämning, tala om vem ni labbat med! http://www.ict.kth.se/courses/2b1116/ 25
Deluppgift 2, ekvation i = I 0 e nk q B T ( v i R) 1 Symbol Beskrivning Enhet Status i strömmen genom dioden A uppmätt, finns i filen (kallas IF) v spänningen över dioden V uppmätt, finns i filen (kallas VF) q elementarladdningen C konstant, finns i tabell 2.5 i KP1 k B Boltzmanns konstant J/K konstant, finns i tabell 2.5 i KP1 T absolut temperatur K given, mätningen gjordes vid 300 K I 0 kortslutningsström A modellparameter som ska bestämmas n idealitetsfaktor - modellparameter som ska bestämmas R resistans för dioden Ω modellparameter som ska bestämmas http://www.ict.kth.se/courses/2b1116/ 26
Deluppgift 2, ledningar Läs in mätdata i Matlab. Gör en plot av mätdata i en figur. Välj logaritmisk skala för strömmen i som funktion av spänningen v, då ser man att grafen är linjär i ett delintervall. Modellanpassa först parametrarna n och I0 till det linjära intervallet i grafen. Välj ut en delmängd av mätpunkterna med hjälp av figuren ni gjorde. Anpassa en rät linje till dessa mätdata och avläs lutningen och skärningen med y-axeln. Från detta kan ni räkna fram n respektive I0. NOT: n är normalt mellan 1 och 2. http://www.ict.kth.se/courses/2b1116/ 27
Deluppgift 2, plot(v,i) http://www.ict.kth.se/courses/2b1116/ 28
Deluppgift 2, semilogy(v,i) http://www.ict.kth.se/courses/2b1116/ 29
Deluppgift 2, plot(v,log(i)) Påverkan av R Påverkan av -1 http://www.ict.kth.se/courses/2b1116/ 30
Deluppgift 2, delintervall http://www.ict.kth.se/courses/2b1116/ 31
Deluppgift 2, förenkling i i i = I I I 0 0 0 e e e q nk q nk q nk B B B T v T v T ( v i R) 1 om e 1 om i >> 1 Modellen ovan kan förenklas om man gör en approximation baserat på att exponentialtermen är mycket större än ettan för positiva strömmar. Dessutom kommer termen i. R bara att ha någon inverkan för stora värden på strömmen i. http://www.ict.kth.se/courses/2b1116/ 32 q nk B v T litet
Deluppgift 2, logaritmering i I logi logi 0 e q nk B v T = log I = log I 0 0 om e + log e q + n k T B q nk B v T q nk B v v T >> 1 log i är nu en linjär funktion av v eftersom q, n, k B och T är konstanter (varav n ska bestämmas) http://www.ict.kth.se/courses/2b1116/ 33
Deluppgift 2, kurvanpassning 3 varianter: 1. utför summeringarna (jobbigt) 2. använd polyfit/polyval (logaritmera först) 3. curve fitting toolbox (enklast? men svårdokumenterat) http://www.ict.kth.se/courses/2b1116/ 34
Problemlösning med datorer Motivering: Teknisk problemlösning kräver beräkningar Grafer ett bra sätt att visualisera resultat Dokumentering av hur man löst problemet Möjlighet att återanvända tidigare resultat Kontroll av resultat För IT och ME har vi valt Matlab som verktyg http://www.ict.kth.se/courses/2b1116/ 35