MATLAB Perspektiv på materialdesign Lina Kjellqvist Email: [email protected] Rum: K324 Telefon: 790 8313 Matlab, föreläsning 1 Oktober 4 2007 1 Upplägg Matlab, föreläsning 1 Oktober 4 2007 • 2 föreläsningar. • 3 laborationer, i grupper om 2-3 personer. • De två första laborationerna redovisas muntligt. • Den tredje redovisas i form av en skriftlig rapport och betygsätts enligt skalan A, B, C, D, E, Fx eller F. 2 Exempel på matematiska verktyg Matlab, föreläsning 1 Oktober 4 2007 • Fortran, C, .... • Matlab - förenklat, men ganska effektivt. Finns en mängd fördefinierade funktioner. • Maple - symboliskt, långsamt för stora problem. 3 Användning Matlab, föreläsning 1 Oktober 4 2007 • Matlab är ett mjukvaruverktyg för tekniska beräkningar och är ett av de dominerande verktyget för ingenjörer. • Används inom många tekniska områden. • Numerisk lösning av komplexa problem. • Visualisering. 2D och 3D. Kan importera data från en mängd olika format. • Välutvecklat stöd för programmering. • Målet med kursen är att ge kunskaper om grunderna i Matlab. 4 Variabler • • • • • • • • Matlab, föreläsning 1 Oktober 4 2007 Alla variabler i Matlab är av typen matris av flyttal. En variabel har ett namn bestående av bokstäver och siffror, samt _. å, ä och ö får inte förekomma. Matlab skiljer på stora och små bokstäver, dvs man kan kalla en variabel för X och en annan för x. Matrisens dimension slås fast i och med att variabeln tilldelas en given matris. Matrisens dimension kan ändras genom att tilldela den ett nytt värde. a = 0.5 definierar en skalär a (=1x1 matris). v = [1 0.5 0] definierar en vektor v (=1x3 matris). A = [1 2 3;4 5 6;7 8 9] definierar en 3x3 matris A. 5 Grundläggande operationer Matlab, föreläsning 1 Oktober 4 2007 • +, -, * , /, ^ • pi, inf, eps • sin, cos, tan, exp • sqrt, min, max, mean, sum, sort, find, size 6 Vektorer En vektor är en lista med tal. Vektorer utgör ett smidigt sätt att lagra flera tal i en variabel. v = [1 2 3 4] Exempel på operationer: • • • length(v) = 4 v(2) = 2 v(3:4) = [3 4] • • • v+2 = [3 4 5 6] 2*(v+1) = [4 6 8 10] v.*v = [1 4 9 16] Vektorer som inte är lika långa går inte att addera. Om vi ändå försöker svarar Matlab med ett felmedellande. Matlab, föreläsning 1 Oktober 4 2007 7 Vektorer Ett smidigt sätt att tillverka vektorn v (= [1 2 3 4]) är med följande syntax: v = 1:1:4 eller v = linspace(1,4,4) • • • Vektorn börjar med talet 1, dvs talet före första kolonet. Resterande tal i vektorn fås genom att addera 1, dvs talet mellan kolonen till föregående tal. Detta forstätter tills vi når sista talet, dvs 4. Långa vektorer vill man ofta inte ha utskrivna. Detta slipper man genom att avsluta raden med ett semikolon. Matlab, föreläsning 1 Oktober 4 2007 8 Matriser 1 2 3 A 4 5 6 7 8 9 i Matlab A = [1 2 3;4 5 6;7 8 9] 4 5 A(2 : 3,1 : 2) 7 8 A(2,:) 4 5 6 2 A(:,2) 5 8 Matlab, föreläsning 1 Oktober 4 2007 9 Matris-operationer Matlab har en mängd inbyggda funktioner som behandlar matriser. T ex: • • • • • inv(A) det(A) eig(A) transpose(A) eller A' ... Det enklaste sättet att lösa ekvationssystem i Matlab är med 'backslash'-operatorn. För att lösa ekvationssystemet A x b där A och b är kända skriv: x A\b Matlab, föreläsning 1 Oktober 4 2007 10 Matrismultiplikation / elementvisa operationer a=[1 2 3] b=[1 2 3;3 4 5;5 6 7] b*b a*b matrismultiplikation, ex: b*a' 2*b 2*a elementvisa operationer (.), ex: b. * b b.^ b b.^ 2 b. / b Matlab, föreläsning 1 Oktober 4 2007 a. * a 11 Elementvisa operationer Operationen genomförs för varje par av element, ex: b(1) * b(1) b(2) * b(2) b. * b b(N) * b(N) om b är en kolumnvektor med N element. Matlab, föreläsning 1 Oktober 4 2007 12 Ekvationssystem 2 x1 x2 12.5 x1 x2 2.5 2 1 A 1 1 12.5 b 2. 5 5 x A \ b 2. 5 Matlab, föreläsning 1 Oktober 4 2007 13 Överbestämda ekvationssystem 2 x1 x2 12.5 x1 x2 2.5 3 x1 5 x2 4.75 2 1 A 1 1 3 5 Matlab, föreläsning 1 Oktober 4 2007 12.5 b 2.5 4.75 5.1360 x A \ b 2.1538 14 Skript-filer Matlab, föreläsning 1 Oktober 4 2007 • I stället för att skriva varje kommando ett och ett i Matlabs kommando-fönster kan man samla alla dessa i en s.k. skriptfil, och sedan exekvera denna fil genom att skriva filens namn vid prompten. • Skriptfiler skrivs enklast i Matlabs egen texteditor. • Skriptfiler slutar med .m. 15 if-satser Med en s.k. if-sats kan man kontrollera om ett villkor är uppfyllt eller ej. if <villkor> <satser> end if <villkor> <satser> elseif <villkor> <satser> else <satser> end Matlab, föreläsning 1 Oktober 4 2007 16 Exempel på villkor ab a b ab a ~ b ab Matlab, föreläsning 1 Oktober 4 2007 i Matlab ab ab a b ab ab ab a b 17 Logiska operatorer a b och b c a b eller b c inte a b Matlab, föreläsning 1 Oktober 4 2007 a b & b c i Matlab a ~ b || b c ~ ( a ~ b) 18 Loopar En for-loop används när man vill göra samma sak många gånger. for <variabel>=<radvektor> <satser> end Ett annat sätt att upprepa kod är med en s.k. while-loop. En while-loop upprepar alla rader mellan orden while och end tills det logiska testet efter ordet while blir falskt. while <villkor> <satser> end Matlab, föreläsning 1 Oktober 4 2007 19 Loopar break avbryter den 'innersta' for- eller while-loopen du befinner dig i. for <variabel>=<radvektor> while <villkor> <satser> if <villkor> break end end end Matlab, föreläsning 1 Oktober 4 2007 20 Funktionsfiler En funktionsfil tar inget, ett eller flera argument och returnerar inget, ett eller flera svar: function y = enFunktion(a,b) x = 0:0.01:1; y = a*x + b; Om du vill använda samma variabel i flera funktioner måste du skriva i varje funktion: global var1 var2 Man kan ha nästlade funktioner i hur många nivåer som helst. Matlab, föreläsning 1 Oktober 4 2007 21 Plottning Antag att vi vill rita funktionen f(x)=x2 på intervallet 0 ≤ x ≤ 1 x= 0:0.01:1; f = x.^2; plot (x,f) • • • • Matlab, föreläsning 1 Oktober 4 2007 Öppna en ny figur med figure. För att rita flera grafer i samma figur använd hold on. För att rita flera figurer i samma fönster använd subplot. Skriv förklarande text med xlabel, ylabel, title, legend... alternativt använd menyerna i figuren. 22 Tips • • • • • • • Matlab, föreläsning 1 Oktober 4 2007 Använd hjälpen - help kommando eller helpdesk. Skriv kommentarer i era m-filer. Allt efter % är kommentar. Radera alla existerande variabler i Matlab med clear all. Visa alla variabler med whos. Stäng alla figurer med close all. Med piltangenterna kan gamla kommandon bläddras fram och användas igen. Matlab är skrivet för att hantera matriser. På grund av detta är det väldigt ineffektivt att använda snurror. Ofta går det att undvika om man skriver smart, men ibland är man tvungen att använda for eller while. 23