Beräkningsvetenskap I Augusti 2011 Laboration: Grunderna i Matlab Att arbeta i kommandofönstret Den här delen av laborationen handlar om hur man arbetar med kommandon direkt i Matlabs kommandofönster. Det kan liknas vid att använda Matlab som en mycket avancerad miniräknare, med kommandon för både beräkningar och grafik. Att göra Att komma igång och att söka hjälp 1. Starta Matlab genom att dubbelklicka på Matlab-ikonen 2. När Matlabfönstret kommer upp ska du börja med att flytta till rätt mapp/katalog. I fönstrets överkant finns en ruta: Klicka på knappen och sök dig fram till din katalog. När du kommit till rätt katalogikon och klickat på den, så ska katalognamnet dyka upp i rutan för Current Directory. 3. I Matlab-fönstrets överkant finns menyer. Klicka på menyn Help och välj sedan alternativet MATLAB Help eller Product Help beroende på vilken version av Matlab du använder (du kan också klicka på knappen med frågetecken). Ett hjälpfönster ska nu öppnas. När hjälpfönstret kommer upp ser du att det finns en mängd information under olika flikar. Klicka på fliken Index. I sökrutan längst upp i indexfönstret kan man skriva in vad man vill veta mera om. Prova med att skriva in exponential och se vad som händer. Klicka i rutan till vänster, så kommer förklarande text upp till höger. Om allt fungerat som det skulle, så kommer du att få information om hur exponentialfunktionen ex ser ut i Matlab och hur det går till att anropa den. Beräkningsvetenskap I Augusti 2011 Kommandofönstret Matlab-fönstret består av olika delfönster, bl a Command Window (kommandofönstret), Workspace och Command History Workspace Kommandofönstret Command History Inledningsvis är markören placerad i kommandofönstret. När man skriver in Matlabkommandon där, så utförs de omedelbart. Om man skriver in ett aritmetiskt uttryck och trycker på ’Enter’tangenten, så får man direkt se resultatet. 4. Beräkna nu e 2 3 sin 0.8 genom att i kommandofönstret skriva exp(2)*sqrt(3)*sin(0.8). Observera att du måste skriva ut tecknet för multiplikation. 5. Resultatet av beräkningen ovan hamnade automatiskt i variabeln ans (som står för ’answer’). Beräkna nu kvadratroten av 2, sqrt(2). Notera att nu hamnade det resultatet i ans. I och med detta försvann det tidigare värde som var lagrat i ans. 6. Tilldelning Om man vill ha kvar ett värde för att kunna återanvända det senare under Matlabsessionen, så måste man spara det i en egen variabel. Detta åstadkoms genom tilldelning. I Matlab är likhetstecknet, ”=” tilldelningsoperator. För att beräkna värdet e 2 3 sin 0.8 och spara resultatet i variabeln z ska du skriva z = exp(2)*sqrt(3)*sin(0.8). Man säger då att z tilldelas det värde som beräknas i högerledet. 7. Likhetstecknet ’=’ i Matlab står alltså inte för likhet, utan för tilldelning. För likhet, som är en test om något (t ex två tal) är lika, används istället en annan operator i Matlab, nämligen ’= =’. Skriv i Matlabs kommandofönster följande (tecknet >> skrivs inte ut, utan är Matlabs så kallade kommandoprompt): >> a = 1 >> b = 3 >> c = a >> a == b >> a == c Beräkningsvetenskap I Augusti 2011 De första tre raderna är tilldelningar, dvs variablerna a, b och c tilldelas värden. Men vad innebär rad fyra och fem? Försök tolka resultaten. Delfönstren Workspace och Command History 8. Titta på delfönstret Workspace. Där syns de variabler som du har skapat hittills under Matlab-sessionen. Ge i kommandofönstret kommandot clear z. Vad händer? Ge i kommandofönstret kommandot clear eller clear all. Vad händer? 9. Titta på delfönstret Command History. Där syns de kommandon som du gett. Du kan återskapa ett kommando genom att dubbelklicka på kommandot i Command History. Använd den metoden för att upprepa den beräkning där z tilldelades ett värde. Notera också att z då kommer att synas i Workspace igen. Du kan också med musen ”ta tag i” ett kommando i Command history och dra det till kommandofönstret. Använd denna metod till att utföra beräkningen av z igen. Kommandon kan också återskapas genom att man låter markören står i kommandofönstret och ”bläddrar” bakåt med uppåtpil-tangenten. Prova den metoden för att återfinna kommandot som beräknade kvadratroten ur 2. Presentation av resultat på skärmen 10. Om man inte vill se resultatet av en beräkning omedelbart, så ska man avsluta kommandot med semikolon. Tilldela nu variabeln y värdet z+5 och avsluta med semikolon. 11. Om du senare vill se y:s värde så kan du helt enkelt på tom kommandorad skriva y och sedan trycka på ’Enter’ (Return-tangenten). Gör det. 12. Om man inte har gett någon annan anvisning till Matlab, så visas resultaten med fyra decimaler. Ge kommandot format long. Ge sedan kommandot y igen. Vad händer? Ge kommandot help format, så får du mera information om vilka alternativ som finns för hur Matlab kan presentera resultat av beräkningsoperationer. Undersök på egen hand några olika format. Observera att de olika sätten att presentera resultat påverkar inte hur noggrant resultatet är, utan enbart på vilket sätt det presenteras på skärmen. Beräkningsvetenskap I Augusti 2011 Vektorer och matriser 13. Matriser och vektorer omges i Matlab av hakparenteser. Mata in matrisen ⎛ 2 −1⎞ A=⎜ ⎟ ⎝ −4 8 ⎠ genom att i kommandofönstret skriva A = [2 -1; -4 8] Notera att raderna åtskiljs med semikolon. Semikolon innanför hakparanteser medför alltså radbyte i matrisen. En annan möjlighet är att göra ’Enter’ efter varje rad. Prova nu att mata in A på det viset. (Gör clear A först för att ta bort den redan inmatade versionen av A.) 14. Vektorer kan uppfattas som specialfall av matriser. En kolonnvektor är en matris med bara en kolonn och en radvektor har bara en rad. Därför kan du nu, genom att utnyttja det som du lärde dig i föregående steg, mata in radvektorn u och kolonnvektorn v: ⎛ 1 ⎞ u = (3 − 1) v = ⎜⎜ ⎟⎟ ⎝ 0.5 ⎠ a. Nu ska du prova några av de grundläggande operationera med matriser och vektorer: b. Ge kommandot A(1,2). Vad händer? c. Ge kommandot 2*u. Vad händer? d. Ge kommandot u + v. Vad händer och varför? e. Ge kommandot u*v, skalärprodukten mellan u och v f. Ge kommandot A*v, matris-vektor-produkten mellan A och v g. Ge kommandot A*u. Vad händer och varför? h. Ge kommandot B = inv(A), B sätts till inversen av A. Kolla att inversen blev rätt genom att (i Matlab) beräkna produkten B*A. (Vad ska resultatet av denna operation bli om B är inversen av A?) i. Ge kommandot B = A’, B sätts till transponatet av A. Prova också att ge kommandona u’ respektive v’. Vad händer? j. Ge kommandot A(1,:). Vad händer? Ge också kommandot A(:,2). k. Ge kommandot A = [A; u]. Vad händer? Detta kan användas för att exempelvis successivt bygga upp en tabell, som lagras i en matris och där man lägger till en tabellrad i sänder. l. Ge kommandot sin(v). Vad händer? m. Ge kommandot v^2 (operatorn ^ står för ”upphöjt till”). Detta fungerar inte, för operationen att multiplicera en vektor med sig själv är inte definierad matematiskt. n. Ge kommandot v.^2. Observera punkten före upphöjningsoperatorn. Den betyder att den efterföljande operatorn ska appliceras på varje enskilt element i vektorn. Resultatet av operationen skall alltså ha blivit att varje element i v kvadrerades. Prova nu att ge kommandot A.^2 och se vad som händer.