440 likes | 650 Views
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. Läsanvisning till boken Introduction to MATLAB.
E N D
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
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
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)
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
Grunderna i MATLAB >> a=[1 2] a = 1 2 >> b=[3 4]' b = 3 4 >> >> kallas prompten [] (fyrkantiga parenteser) skapar en matris Det lilla tecknet ’ ändra formen på en matris genom att byta plats på rader och kolumner
Vektorer & matriser >> size(a) ans = 1 2 >> size(b) ans = 2 1 >> size(b') ans = 1 2 • 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
Grunderna i MATLAB • >> c=[ 1 2 • 3 4] • c = • 1 2 • 3 4 • >> Ett kommando kan matas in på flera rader
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!
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!
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 \
Vektorer & matriser >> a*b ans = 11 >> b*a ans = 3 6 4 8 >>
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
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
Uppräkning • Andra nyttiga varianter är • zeros(rader,kol) • ones(rader,kol)
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.
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 ./
HELP menyn • Snabbkommando F1 tangenten
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
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
Inbyggda funktioner mean(theta) ans = 45.1875 >> std(theta) ans = 0.2475
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
Inbyggda funktioner • >> n=size(theta) • n = • 8 1 • >> n(1) • ans = • 8
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
Grafer och figurer • 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])
Grafer och figurer • >> hist(theta)
Ingenjörsrollen • Från DNs kultursidor • http://www.dn.se/DNet/jsp/polopoly.jsp?d=&a=827474&sb2231i0=1_827474 ”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 ...”
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
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
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
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 >> 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 2 2 2 2 2 2 2 2 2 2 2 2
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
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
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 >> 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 2 2 2 2 2 2 2 2 2 2 2 2
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
Studentaktivitet >> (1:5)'*(1:5) ans = 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 >>
Vad är ett program • Ett program består avfunktionsanrop och formler/ekvationer • Villkorssatser: for-loopen kapitel 5 • Kommentarer för läsbarheten
Funktioner och program Tre varianter – • antingen ’inline’ för formler • eller med programfiler som skapas i en editor • Funktionsfiler som sparas från editorn
Skript eller programfiler • Öppna matlab-editorn • Skriv in dina ekvationer • Spara filen med lämpligt namn och prefixet .m
Funktionsfiler • Öppna matlab-editorn • Definiera in- och ut-värden till funktionen och funktionens NAMN • Skriv in dina ekvationer • Spara filen med samma namn som funktionen och suffixet .m
Jämförelse funktion/program • Programmet definierar sina egna x-värden • Funktionen kan hantera godtyckliga x-värden som användaren skickar in
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
Program innehåller funktioner • Anropa funktionen stat • stat(randn(100,1)) • Svaret blir?