Ingenjörsmetodik IT & ME 2009 1 Dagens tema Att tänka rätt är stort att tänka fritt är större MATLAB programmering är väldigt kreativt men minsta tecken har en noga definierad betydelse 2 Läsanvisning till EKM • 1. Introduction (läs 1.3) • 2. Matlab environment (Hela) • 3. Matlab functions (3.1.1, 3.1.2 3.1.4 3.1.5 + 3.2) • 4. Plotting (främst 4.1) översiktligt • 5. Programmering (främst 5.3 funktioner och 5.4 for-loopar) • 6. 6.3.1 6.3.2 • 7. Symbolisk matematik bara 7.3.1 symbolisk derivering • 8. Numeriska metoder (främst 8.1 + 8.2 8.3 samt 8.5 numerisk derivering) • A. Appendix med funktioner mm 3 Dagens föreläsning • Grunderna i MATLAB, vad är en MATRIS??? • Vanliga kommandon • Grafer och figurer bla ’Plot-funktionen’ • Enkla program/funktioner 4 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) 5 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 6 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 >> 7 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 8 Grunderna i MATLAB • >> c=[ 1 2 • 3 4] Ett kommando kan matas in på flera rader • c= • • 1 3 2 4 • >> 9 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! 10 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! 11 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 \ 12 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 13 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 14 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 15 Uppräkning • Andra nyttiga varianter är • zeros(rader,kol) • ones(rader,kol) 16 Studentaktivitet • Övning skapa 1:ans till 3:ans multiplikationstabell och presentera resultatet i en tabell. • Behöver inte vara tjusigt • Använd uppräkning, vektorer och/eller matriser 17 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. 18 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 ./ 19 HELP menyn • Snabbkommando F1 tangenten 20 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 21 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 22 Inbyggda funktioner mean(theta) ans = 45.1875 >> std(theta) ans = 0.2475 23 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 24 Inbyggda funktioner • >> n=size(theta) • n= • 8 1 • >> n(1) • ans = • 8 25 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 26 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]) 27 Grafer och figurer 2 • >> hist(theta) 1 0 44.5 45 45.5 46 28 Funktioner 1. Öppna matlab-editorn 2. Definiera in- och ut-värden till funktionen 3. Skriv in dina ekvationer 4. Spara filen med samma namn som funktionen 29 Funktionen stat.m function [medel,s] = stat(x) n = length(x); medel = sum(x)/n; s = sqrt(sum((x-medel).^2/(n-1))); 30