Ingenjörsmetodik IT & ME 2011 • Problemlösning med datorer • Vi introducerar programmet MATLAB, installation, ’miljön’, centrala begrepp • Går igenom kapitel 1 & 2 i MATLAB boken • Beskriver labbens upplägg, schema och gruppindelning 1 Läsanvisning till boken Introduction to MATLAB Kapitel Att läsa (avsnitt) 1 2 1.1 & 1.3 + diskutera kring 1.2 Hela 3 4 3.1-3.3 3.4 delar 3.4.2 sidan 90 om statistik behandlas separat 3.6 4.1 4.2 om 3D-plottar vid intresse 4.3 Uppgiftsnummer (rekommenderade) 31-33 hör ihop 34-36 hör ihop 37 40-42 hör ihop 1-5 6-7 om statistik 19-21 om fördelningar 1-4 hör ihop 5-6 hör ihop 7-8 hör ihop 5 5 väldigt översiktligt, men Special characters & find kommandot är nyttiga - 6 Ligger matematiskt utanför denna kurs passar in med Algebra i period 2! Hela 8.1, 8.2, 8.3 - 7 8 Kapitel 1 2 3 4 5 6 7 8 Att läsa (avsnitt) OBS förra upplagans numrering! Hela Hela 3.1.1, 3.1.2, 3.1.4 och 3.1.5 3.2 Exemplen kan läsas vid intresse Översiktligt Speciellt 5.3 Funktioner 5.4 6.3.1, 6.3.2 7.3 8.1, 8.2, 8.3 och 8.5 Uppgiftsnummer (rekommenderade) Ej tillgängliga än för nya upplagan 3,7, 8, 9, 10 1-4, 6, 7, 9 4 och 6 1-4, 7-10 hör ihop 1-2, 7-10 hör ihop 2 Dagens föreläsning • Matlabmiljön • Grunderna i MATLAB, vad är en MATRIS??? • Vanliga kommandon • Grafer och figurer bla ’Plot-funktionen’ • Enkla program/funktioner • Om solpanelen, USB loggern 3 Grunderna i MATLAB • MATLAB kan • Räkna med matriser, vektorer och komplexa tal • Skapa grafer (olika varianter av plotkommandot) • Användas för programmering och mer komplicerade beräkningar • Symbolisk matematik (symbolic toolbox) 4 Grunderna i MATLAB • Vad är en matris? • Ett sätt att samla ihop flera tal för en beräkning • Vanligaste exemplet är en vektor 1 2 en 2x2 matris 3 4 1 2 en radvektor med 2 element (kolumner) 1 en kolumnvekt or med 2 element (rader) 3 5 Grunderna i MATLAB >> a=[1 2] a= 1 >> kallas prompten 2 [] (fyrkantiga parenteser) >> b=[3 4]' skapar en matris b= 3 4 Det lilla tecknet ’ ändra formen på en matris genom att byta plats på rader och kolumner >> 6 Vektorer & matriser • Byt mellan rad och kolumnvektor med kommandot ’ (transponat) • Ta reda på vilken vektortyp du har genom kommandot size • Den första siffran i svaret syftar på RADERNA, den andra på KOLUMNERNA >> size(a) ans = 1 2 >> size(b) ans = 2 1 >> size(b') ans = 1 2 7 Grunderna i MATLAB • >> c=[ 1 2 • 3 4] Ett kommando kan matas in på flera rader • c= • • 1 3 2 4 • >> 8 Grunderna i MATLAB • >> c=[ 1 2 • 3 4]; • >> Ett semikolon ; efter inmatningen gör att inget svar skrivs ut Detta är NORMALVARIANTEN i LÅNGA UTRÄKNINGAR för att det ska bli SNABBARE! 9 Grunderna i MATLAB • De vanliga räknesätten fungerar även för matriser och vektorer • MATLAB använder ofta symbolen punkt ’.’ för matrisberäkningar, dvs när flera uträkningar ska göras ’samtidigt’ • Följande kombinationer finns för elementvis operation: • .* ./ .^ • .+ .- finns men behövs inte! 10 Grunderna i MATLAB • Elementvis operationer används när ingående variabler har samma ’form’ • radvektor .* radvektor • Kolumnvektor ./ kolumnvektor • ’2x2’ Matris .* ’2x2’ matris • I alla andra fall används de vanliga räknesätten +,-,*,/,^ • För matriser finns även ett ’felvänt’ divisionstecken \ 11 Vektorer & matriser >> a*b 3 1 2* 1* 3 2 * 4 11 4 3 3 6 * 1 2 4 4 8 ans = 11 >> b*a ans = 3 4 >> 6 8 12 Vektorer & matriser • För att räkna med .* måste alla variabler ha samma ‘form’ • >> a.*b • ??? Error using ==> times • Matrix dimensions must agree. • >> a.*b' • ans = • 3 8 13 Uppräkning • För att t.ex. Skapa värden på en x-axeln kan man göra en uppräkning till en vektor • >>x=-3:0.01:3; • Svaret i detta fall hamnar i 601 kolumner, se nedan • Columns 598 through 600 • • • 2.9700 2.9800 2.9900 Column 601 3.0000 14 Uppräkning • Andra nyttiga varianter är • zeros(rader,kol) • ones(rader,kol) 15 HELP kommandot • help • HELP topics • matlab\general - General purpose commands. • matlab\ops - Operators and special characters. • matlab\lang - Programming language constructs. • matlab\elmat - Elementary matrices and matrix manipulation. • matlab\elfun - Elementary math functions. • matlab\specfun - Specialized math functions. • matlab\matfun - Matrix functions - numerical linear algebra. 16 HELP kommandot • Finns en sammanfattning på sidan 50-51 i boken >> help ops Operators and special characters. Arithmetic operators. plus - Plus + uplus - Unary plus + minus - Minus uminus - Unary minus mtimes - Matrix multiply * times - Array multiply .* mpower - Matrix power ^ power - Array power .^ mldivide - Backslash or left matrix divide \ mrdivide - Slash or right matrix divide / ldivide - Left array divide .\ rdivide - Right array divide ./ 17 HELP menyn • Snabbkommando F1 tangenten 18 Exempel • Omvandla vinklar från grader till radianer theta=[45.1 45.3 44.8 45.1 45.0 45.4 45.2 45.6]' theta = 45.1000 45.3000 44.8000 45.1000 45.0000 45.4000 45.2000 45.6000 19 En enkel vektorberäkning radianer=pi/180*theta radianer = 0.7871 0.7906 0.7819 0.7871 0.7854 0.7924 0.7889 0.7959 20 Inbyggda funktioner mean(theta) ans = 45.1875 >> std(theta) ans = 0.2475 21 Index medel=sum(theta)/8 medel = 45.1875 >> medel=(theta(1)+theta(2)+theta(3)+theta(4)+... theta(5)+theta(6)+theta(7)+theta(8))/8 medel = 45.1875 Vanliga parenteser ( ) kallas index för ett matriselement 22 Inbyggda funktioner • >> n=size(theta) • n= • 8 1 • >> n(1) • ans = • 8 23 Inbyggda funktioner • Standaravvikelsen med vektorberäkning och (elementvis upphöjt till 2) .^2 • >> s=sqrt(1/(n(1)-1)*sum((theta-medel).^2)) • s= • 0.2475 24 Grafer och figurer 45.6 45.4 45.2 45 44.8 44.6 2 4 6 8 • Plot kommandot för att rita ut mätpunkter • Line kommandot för linjer • >> plot(theta,'ro') • >> line([1 8],[medel medel]) • >> line([1 8],[medel+s medel+s]) • >> line([1 8],[medel-s medel-s]) 25 Grafer och figurer 2 • >> hist(theta) 1 0 44.5 45 45.5 46 26 Ingenjörsrollen • Från DNs kultursidor • http://www.dn.se/DNet/jsp/polopoly. jsp?d=&a=827474&sb2231i0=1_827 474 ”Jag läste till en examen i teknisk fysik på KTH för att jag trodde att matematiken och siffrorna skulle vara ett bättre språk än svenskan för att beskriva världen ...” 27 Matriser och speciella räknesätt • a=[pi 5] skapar en matris • a(1) tar ut det första elementet (index=1) ur matrisen a => svaret blir 3.1415 • ; stänger av utmatning av svar • .* multiplicerar ihop matriser med samma form/storlek 28 Matriser och speciella räknesätt • Hela matrisen kan hanteras på en och samma gång! • Inga uppräkningar eller slingor behövs i programkoden • Räknesätten med punkten framför utförs elementvis i hela matrisen • Matriser och vanliga tal kan blandas – då utförs beräkningen också elementvis 29 Matriser och speciella räknesätt • Exempel: skapa en lagom stor matris fylld med siffran 2 • Lösning: funktionen ones(m,n) ger matris fylld med ettor • Siffran 2 kan multipliceras in på VARJE element 30 Matriser och speciella räknesätt >> ettor=ones(6,6) ettor = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 >> tvaor=2*ettor tvaor = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 31 Matriser och speciella räknesätt • Exempel: beräkna rörelseenergin för en bil vid hastigheterna: 30,50 70 km/h • Formel E=mv2/2 eller E=mv*v/2 • Alltså behövs ’upphöjt till’ ^ eller ’gånger’ * • Fungerar ^ eller * direkt, nej eftersom element i matriser ska hanteras 32 Matriser och speciella räknesätt >> v=[30 50 70]/3.6 v= 8.3333 13.8889 19.4444 >> m=1000; >> E=m*v^2/2 ??? Error using ==> mpower Matrix must be square. >> E=m*v*v/2 ??? Error using ==> mtimes Inner matrix dimensions must agree. >> E=m*v.^2/2 E= 1.0e+005 * 0.3472 0.9645 1.8904 >> E=m*v.*v/2 E= 1.0e+005 * 0.3472 0.9645 1.8904 33 Matriser och speciella räknesätt >> ettor=ones(6,6) ettor = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 >> tvaor=2*ettor tvaor = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 34 Studentaktivitet • Övning skapa 1:ans till 5:ans multiplikationstabell och presentera resultatet i en tabell. • Behöver inte vara tjusigt • Använd uppräkning, vektorer och/eller matriser 35 Studentaktivitet >> (1:5)'*(1:5) ans = 1 2 2 4 3 6 4 8 5 10 3 6 9 12 15 4 5 8 10 12 15 16 20 20 25 >> 36 Vad är ett program 1. Ett program består av funktionsanrop och formler/ekvationer 2. Villkorssatser: for-loopen kapitel 5 3. Kommentarer för läsbarheten 37 Funktioner och program Tre varianter – 1. antingen ’inline’ för formler 2. eller med programfiler som skapas i en editor 3. Funktionsfiler som sparas från editorn 38 Skript eller programfiler 1. Öppna matlab-editorn 2. Skriv in dina ekvationer 3. Spara filen med lämpligt namn och prefixet .m 39 Funktionsfiler 1. Öppna matlab-editorn 2. Definiera in- och ut-värden till funktionen och funktionens NAMN 3. Skriv in dina ekvationer 4. Spara filen med samma namn som funktionen och suffixet .m 40 Program vs. funktion Enkelt program statenkel.m Enkel funktion stat.m x=randn(100,1); n = length(x); medel = sum(x)/n; s = sqrt(sum((xmedel).^2/(n-1))); function [medel,s] = stat(x) n = length(x); medel = sum(x)/n; s = sqrt(sum((x-medel).^2/(n1))); 41 Jämförelse funktion/program • Programmet definierar sina egna xvärden • Funktionen kan hantera godtyckliga x-värden som användaren skickar in 42 Program innehåller funktioner • Alla inbyggda kommandon i matlab har formen av en funktion • T.ex. cos(x), size(x), ... • Man kan ANROPA sina EGNA funktioner 43 Program innehåller funktioner • Anropa funktionen stat • stat(randn(100,1)) • Svaret blir? 44