MATLAB. Vad är MATLAB? En kalkylator för linlär algebra. Ett programspråk liknande t.ex Java. Ett grafiskt verktyg.

Relevanta dokument
MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Introduktion till MATLAB

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Beräkningsverktyg HT07

MATLAB Matrix laboratory

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Matriser och Inbyggda funktioner i Matlab

Matriser och Inbyggda funktioner i Matlab

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar

TANA17 Matematiska beräkningar med Matlab

TSBB14 Laboration: Intro till Matlab 1D

Datorövning 1: Introduktion till MATLAB

Matlabövning 1 Funktioner och grafer i Matlab

TAIU07 Matematiska beräkningar med Matlab

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Mer om funktioner och grafik i Matlab

Matriser och linjära ekvationssystem

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

(a) Skriv en matlabsekvens som genererar en liknande figur som den ovan.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Laboration: Grunderna i Matlab

Matlabövning 1 Funktioner och grafer i Matlab

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

Laboration: Grunderna i MATLAB

Introduktion till MATLAB

MMA132: Laboration 2 Matriser i MATLAB

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

Variabler och konstanter

Introduktion till Matlab

Matriser. Vektorer. Forts. Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Du kan söka hjälp efter innehåll eller efter namn

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Introduktion till Matlab

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

Mer om funktioner och grafik i Matlab

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

Vad är MATLAB? Användningsområden. Var kan man köra MATLAB? MATLAB-miljön: avsluta. MATLAB-miljön: Start. Informationsteknologi. Grunderna i MATLAB

MAM283 Introduktion till Matlab

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Matriser och vektorer i Matlab

Matlabföreläsningen. Lite mer och lite mindre!

Matriser. Vektorer. Grunderna i MATLAB 2. Informationsteknologi. Informationsteknologi.

Beräkningsvetenskap föreläsning 2

MATLAB - en kompakt introduktion av Tore Gustafsson

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

Introduktion till Matlab

Laboration: Vektorer och matriser

Matriser och vektorer i Matlab

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

Introduktion till Matlab

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Matriser och linjära ekvationssystem

TAIU07 Matematiska beräkningar med Matlab

Kort om programmering i Matlab

Laborationstillfälle 1 Lite mer om Matlab och matematik

Introduktion till Matlab

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

MATLAB övningar, del1 Inledande Matematik

Linjär algebra med tillämpningar, lab 1

Matematisk Modellering

Introduktion till Matlab

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning

Instruktion för laboration 1

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Introduktion till Matlab

Motivering för programmering. F1: Introduktion, Matlabrepetition (kap. 1 2) Att kunna programmera. Interpreterat/kompilerat

6. Matriser Definition av matriser 62 6 MATRISER. En matris är ett rektangulärt schema av tal: a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n A =

Laboration 1: Linjär algebra

Sanningar om programmering

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Funktioner och grafritning i Matlab

Introduktion till Matlab

Matematisk Modellering

Introduktion till Matlab

Innehåll. Vad är MATLAB? Vad är MATLAB? Informationsteknologi. Grunderna i MATLAB. Informationsteknologi. Informationsteknologi. Vad är MATLAB?

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Kort om programmering i Python

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

4.3. Programmering i MATLAB

4.4. Mera om grafiken i MATLAB

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

Mer om linjära ekvationssystem

TANA17 Matematiska beräkningar med Matlab

Matematisk Modellering

Laboration 0: Del 2. Benjamin Kjellson Introduktion till matriser, vektorer, och ekvationssystem

Grafritning och Matriser

Datorövning 1 Fördelningar

Kursuppläggning. F1: Introduktion, Matlabrepetition (kap. 1 2) Motivering för programmering. Att kunna programmera

MATLAB handbok Introduktion

Linjära ekvationssystem i Matlab

Introduktion till Matlab Föreläsning 1. Ingenjörsvetenskap

Transkript:

MATLAB Vad är MATLAB? En kalkylator för linlär algebra. Ett programspråk liknande t.ex Java. Ett grafiskt verktyg. 1

När används MATLAB? Några exempel: För små beräkningar när en räknedosa inte riktigt räcker till. För litet större beräkningar. Vid utveckling av större program. Man kan skriva prototypprogram som man sedan översätter till Java etc. 2

< M A T L A B > Copyright 1984-1999 The MathWorks, Inc. Version 5.3.0.10183 (R11) Jan 21 1999 To get started, type one of these: helpwin, helpdesk, or demo. For product information, type tour or visit www.mathworks.com. 3 >> 2+4 ans = 6 >> 2^5, 2*(3+7)

ans = 32 4 ans = 20 >>

Aritmetiska operationer I prioritetsordning 1. ^ upphöjt till 2. * multiplikation / högerdivision \ vänsterdivision 3. + addition - subtraktion Alla operationer utförs med flyttalsaritmetik. Matematiska funktioner abs(x), sign(x), sqrt(x), sin(x), besselj(n,x),... 5

Datatyper Grundläggande datatyp är matriser med reella eller komplexa element. Variabler föds i det ögonblick man tilldelar dem ett värde. Ex. >> a=1 a = 1 >> z=sqrt(-25) z = 0 + 5.0000i Normalt visas bara fem värdesiffror, men matlab räknar alltid med ungefär 15 värdesiffror. För att se dessa skriver man >> format long >> pi ans = 3.14159265358979 format short återställer till visning av fem siffror. 6

Matriser och vektorer skrivs med hakparenteser och semikolon. >> A=[1 2;3 4] A = 1 2 3 4 Varje tilldelning skrivs ut på skärmen, om inte raden avslutas med ; Så här kommer man åt matriselement: >> A(2,2) ans = 4 Elementen i en matris numreras kolumnvis: >> A(3) ans = 2 7

Matriser allokeras dynamiskt. Därför kan man skriva >> A(3,3)=5 A = 1 2 0 3 4 0 0 0 5 Utrymme för de nya elementen skapas. Dynamisk allokering är tidskrävande. Stora matriser bör därför på något sätt initieras till rätt storlek. Ex. >> B=zeros(1000,200); Detta skapar en matris av storleken 1000 200 med nollor. En följd av heltal kan enkelt skapas med : -notationen: >> serie=3:8 serie = 3 4 5 6 7 8 8

Matrisoperationer Genom : -notationen kan man komma åt delar av en matris. Ex. >> A(:,1) ans = 1 3 0 >> A(2:3,2:3) ans = 4 0 0 5 En matris transponeras med : >> A ans = 1 3 0 2 4 0 0 0 5 9

De aritmetiska operationerna är definierade enligt räknereglerna från linjär algebra. Vänsterdivision \ används för att lösa linjära ekvationssystem Ax = b För att lösa 1 2 3 4 x = 3.3 4.5 kan man skriva >> A=[1 2;3 4]; >> b=[3.3;4.5]; >> x=a\b x = -2.1000 2.7000 10

Andra matrisoperationer >> size(a) ans = 2 2 ger antalet rader och kolumner i A. >> length(x) ger längden av x, eller den största dimensionen om x hade varit en matris. Fler exempel >> eig(a), det(a), rank(a), cond(a),... >> norm(a), LU(A), expm(a),... 11

Att skapa matriser Nya matriser kan skapas på flera olika sätt. Ex: >> ones(m,n) ger en m n-matris med ettor. >> eye(n) ger enhetsmatrisen av ordning n. Vektorer kan skapas med linspace. >> x=linspace(a,b,n) ger en radvektor med n jämnt fördelade tal i intervallet [a, b]. Funktioner kan operera på vektorer och matriser: >> y=sin(linspace(0,2*pi,125)) ger en vektor y innehållande sinus av 125 jämnt fördelade vinklar i intervallet [0, 2π]. 12

Programmering i MATLAB MATLAB-kommandon kan lagras i en kommandofil, med suffixet.m De flesta satser i t.ex C++ eller Java har motsvarigheter i MATLAB. Kommandofilen körs genom att man skriver dess namn på kommandoraden. >> mittprog kör filen mittprog.m. Variabler som används i en kommandofil finns kvar i den globala arbetsarean efter att programmet har körts. 13

if-satsen % Om alla element i första kolonn % i A är noll, ta bort kolonnen if abs(a(:,1)) < eps A = A(1:end,2:end); end if-satsen kan kombineras med else och elseif enligt if...... elseif...... else... end 14

Relationsoperatorer Relationsoperatorerna i matlab är: skrivsätt == = ~= < < <= > > >= betydelse Dessa operatorer jämför element och returnerar 0 eller 1 beroende på omjämförelsen är sann eller falsk. 15

Repetitionssatser I matlab finns for- och while-konstruktioner, for k=1:10... end % Varning för i och j eller for k=1:2:9 % k antar värdena 1, 3, % 5, 7, 9... end eller helt enkelt for k=v... end om v är en radvektor innehållande de värden k skall anta. 16

for-slingan kan avslutas med break for k=1:1000 if errorval break end end while fungerar som: % så länge a<=b och c är skilt från d while (a<=b & c~=d)... end 17

Funktioner Funktionesfiler kan definieras. En enkel funktionsfil kan se ut som function y =minfunk(x) % MINFUNK beräknar minfunk av % elementen i x. y = sin(2*x)+cos(2*x); Variabler som avänds i funktioner är lokala, dvs de lever inte utanför funktionen. Motsatsen gäller också. Långa rader Långa rader kan brytas med...: sum1 = sum1 + 0.5*(a + b)*... linspace(a,b,n) + c*d/(k + l + m); 18

Glesa matriser Antag att vi vill arbeta med en tridiagonal matris A av storleken 1000 1000 element. Lagring av alla dessa element skulle kräva 1000 1000 8 byte = 8 Mb, men bara ungefär 300 av dessa är nollskilda. MATLAB:s glesa format sparse gör det möjligt att bara lagra de nollskilda elementen i A. Några användbara kommandon: >> spalloc(m,n,nzmax) Allokerar en gles m n matris med plats för nzmax nollskilda element. >> sparse(a) ger den glesa representationen av A. 19

Ex. >> u=[1 2 4];v=[2 3 5];a=[2.2 3 3i]; >> sparse(u,v,a) ans = (1,2) 2.2000 (2,3) 3.0000 (4,5) 0 + 3.0000i skapar en gles matris. Elementet på plats u i,v i är a i. e = ones(n,1); A = spdiags([e -2*e e], -1:1, n, n); skapar den glesa representationen av den klassiska andra ordningens differensoperatorn i N punkter (Moment i senare delen av kursen) >> full(a) ger den fulla representationen av A. 20

Effektiv programmering I stället för for Imånga fall är det lämpligt att ersätta for-satser med vektoroperationer. Ex: Antag att vi har en vektorf med värden f =(f 1,f 2,f 3,...,f n ) Vi vill beräkna f 1 +2f 2 +...+2f n 1 + f n. Följande två sätt är i princip ekvivalenta: % metod 1: tmp = f(1); for k = 2:n-1 tmp = tmp + 2*f(k); end sum = tmp + f(n); 21

Den andra metoden baseras på observationen att summan kan skrivas som en skalärprodukt mellan två vektorer. sum =(1, 2, 2,...,2, 1) % metod 2: sum = [1 2*ones(1,n-2) 1]*f ; % observera -tecknet f 1 f 2. f n 1 f n I de flesta fall är operationer av den andra typen att föredra, då de exekveras mycket fortare än for-slingor. 22

.-notation matlab:s så kallade punktnotation är mycket användbar. Punktnotation får operatorer att verka på matriser och vektorer elementvis. Ex: prod1 = A^2 %matrisprodukten A*A prod2 = A.^2 %ger matrisen {aij^2} Ex: Antag att vi har ett antal punkter på x-axeln lagrade i vektorn x. Dessutom har vi koordinaterna för e n punkt (x 0,y 0 ). Beräkna avstånden mellan (x 0,y 0 ) och alla punkterna i x. %Pythagoras sats: dist = sqrt((x-x0).^2+y0^2); Resultatet av operationen är en vektor avst innehållande de intressanta avstånden. Även punktnotation u tförs mycket snabbare än en motsvarande for-konstruktion. 23

Ett slående exempel Betrakta följande funktion som beräknar sinus av en vektor på tre olika sätt function [x,y,z]=sinvec(v) for k=1:length(v) x(k)=sin(v(k)); end y=zeros(size(v)); for k=1:length(v) y(k)=sin(v(k)); end z=sin(v); 24

Med profile-verktyget, kan man mäta prestanda för funktionsfiler. Ett anrop av sinvec med en vektor av längd 20 000 gav följande resultat: 100% of the total time was spent on lines: [4 9 5 10 12 7] 3: for k=1:length(v) 86.27s, 94% 4: x(k)=sin(v(k)); 0.68s, 1% 5: end 6: 0.20s, 0% 7: y=zeros(size(v)); 8: for k=1:length(v) 3.47s, 4% 9: y(k)=sin(v(k)); 0.44s, 0% 10: end 11: 0.27s, 0% 12: z=sin(v); 25

Hur man skriver effektiva program Skriv på hög abstraktionsnivå Behandla matriser som vilka variabler som helst Använd.- och:-anrop. Använd sparse formatet för att lagra glesa matriser. Undersök funktioner med profile-verktyget. Skriv hjälptext till dina funktioner. Kommentera dina program. Kommentera dina program. Oavsett hur smart en algoritm var när den en gång skrevs blir den värdelös när ingen längre minns vad den var till för eller hur den fungerade. ( en gång =förra veckan). 26

Grafik >> plot(v) ritar värdena i vektorn v som funktion av index. >> plot(x,y) Ritar y som funktion av x. x och y måste vara lika långa. >> mesh(a) ritar värdena i matrisen A som höjden ovanför en rektangel. >> surf(a) ritar matrisen A som en ytgraf. mesh och surf kan också användas med argument som specificerar nodernas x- och y-koordinater. 27

>> hold on Gör att man kan rita flera kurvor i samma ritområde utan att de gamla raderas. >> axis([xmin xmax ymin ymax]) Sätter om axelskalorna så att de löper mellan xmin och xmax samt ymin och ymax. >> title( Min graf ); xlabel( x-axel ); >> ylabel( y-axel ) anger titel och namn på axlarna. >> legend( Kurva 1, Kurva 2 ) Lägger in en liten ruta med förklarande text till kurvorna i ett ritområde. 28

>> print -dps min_graf.ps skapar en PostScript-fil innehållande aktuell figur. Filen kan skrivas ut som vanligt: $ lp -d pr2446 min_graf.ps >> figure skapar en ny figur. >> figure(n) gör figur nr. n till aktuell figur. >> clf tömmer grafikfönstret 29

Interaktivt arbete med MATLAB Några små tips pl format compact ctrl-c Piltangent uppåt återkallar tidigare kommando. Återkallar senaste kommandot vars namn började med pl. Minskar mellanrummet mellan svarsraderna. Avbryter exekveringen av ett kommando eller en.m-fil, men stoppar inte matlab. 30

>> clear raderar alla variabler. >> who visar alla definierade variabler. >> whos visar alla definierade samt deras storlekar. >> help kommando ger hjälptext för kommando. >> lookfor ord Ger en lista övre alla kommandon där ord förekommer i beskrivningen. Kom ihåg att allt som görs i en kommandofil påverkar den globala arbetsarean. 31

Enstaka programrader testas enkelt genom kopiering och klistring mellan terminalfönstren. Utvecklingsmiljö Det finns ett editerings/felsökningsverktyg som kan startas genom att man skriver >> edit minfunk Verktyget gör det möjligt att följa exekveringsgången, sätta brytpunkter, kolla värdet på variabler osv. 32