Kapitel 4. Programmet MATLAB

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

3.3. Symboliska matematikprogram

Introduktion till MATLAB

Laboration 1: Linjär algebra

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

Laboration: Vektorer och matriser

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

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

Inledning till matematik med Matlab kompendium för M1 och TD

Matriser. En m n-matris A har följande form. Vi skriver också A = (a ij ) m n. m n kallas för A:s storlek. 0 1, 0 0. Exempel 1

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

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

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

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

5.7. Ortogonaliseringsmetoder

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

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

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

Beräkningsverktyg HT07

15 september, Föreläsning 5. Tillämpad linjär algebra

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äkningsvetenskap föreläsning 2

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

MAM283 Introduktion till Matlab

TSBB14 Laboration: Intro till Matlab 1D

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

Allmänt om Mathematica

Introduktion till MATLAB Föreläsning 1

1.1 MATLABs kommandon för matriser

Matlab har en enkel syntax. Inga deklarationer behövs och det finns i princip en enda 1 datatyp, nämligen matriser.

Instruktion för laboration 1

MAPLE MIKAEL STENLUND

Subtraktion. Räkneregler

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Laboration: Grunderna i Matlab

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

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

TANA17 Matematiska beräkningar med Matlab

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

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

MATLAB Matrix laboratory

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

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

1 Inledning. 2 Att logga in och ta sig in i MATLAB. 3 MATLABs grundfunktioner

MMA132: Laboration 2 Matriser i MATLAB

Användarmanual till Maple

Linjär Algebra M/TD Läsvecka 2

jsp?d=&a=827474&sb2231i0=1_

x = som är resultatet av en omskrivning av ett ekvationssystemet som ursprungligen kunde ha varit 2x y+z = 3 2z y = 4 11x 3y = 5 Vi får y z

4.3. Programmering i MATLAB

Linjär algebra med MATLAB

2 Matrisfaktorisering och lösning till ekvationssystem

Enhetsvektorer. Basvektorer i två dimensioner: 1 1 Basvektorer i tre dimensioner: Enhetsvektor i riktningen v: v v

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

Linjär algebra med tillämpningar, lab 1

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

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

TAIU07 Matematiska beräkningar med Matlab

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 =

Moment 6.1, 6.2 Viktiga exempel Övningsuppgifter T6.1-T6.6

MATLAB övningar, del1 Inledande Matematik

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

Avsnitt 4, Matriser ( =

TANA17 Matematiska beräkningar med Matlab

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

BE MATLAB. (Matrix Laboratory) matlab.ico. för SIGNALER SYSTEM

Laboration: Grunderna i MATLAB

Matriser och Inbyggda funktioner i Matlab

Vad är MATLAB? Vad är MATLAB? Vad är MATLAB? Användningsområden. Att börja använda MATLAB. Informationsteknologi. Grunderna i MATLAB

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Matlabövning. Matlab har en enkel syntax och många av er har använt programmet tidigare. Inga deklarationer behövs.

TANA17 Matematiska beräkningar med Matlab

Mat Grundkurs i matematik 1, del I

Mer om funktioner och grafik i Matlab

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

Kursinnehåll. Introduktion till kursen. Hederskodex. Programmering

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

1 Grundläggande kalkyler med vektorer och matriser

Introduktion till Matlab

MATRISTEORI. Pelle Pettersson MATRISER. En matris är ett rektangulärt schema med tal, reella eller komplexa, vilka kallas matrisens

Lab 1, Funktioner, funktionsfiler och grafer.

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

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Vad är MATLAB? Användningsområden. Informationsteknologi. Informationsteknologi

15 februari 2016 Sida 1 / 32

Instruktion för laboration 1

Datorövning 1: Introduktion till MATLAB

1 Linjära ekvationssystem. 2 Vektorer

Matematisk programvara. Föreläsning 7 Matlab. Användning av Matlab. Matlab

Mer om linjära ekvationssystem

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

Mer om linjära ekvationssystem

TSRT04: Introduktionskurs i Matlab Datorlektion 1

Lab 2, Funktioner, funktionsfiler och grafer.

14 september, Föreläsning 5. Tillämpad linjär algebra

Linjära ekvationssystem

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

Introduktion & MATLABrepetition. (Kap. 1 2 i MATLAB Programming for Engineers, S. Chapman)

Moment Viktiga exempel Övningsuppgifter

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

Laborationstillfälle 1 Lite mer om Matlab och matematik

Transkript:

Kapitel 4. Programmet MATLAB MATLAB (namnet härlett ur MATrix LABoratory) är ett matematikprogram baserat på matrisalgebra, som blivit mycket använt för fysikaliska och tekniska tillämpningar. Den ursprungliga versionen, som skrevs på FORTRAN av Cleve Moler i University of New Mexico, saknade grafik, men bildade ändå stommen för senare versioner av MATLAB skrivna på C-språket. För att lära sig använda MATLAB, kan man utom handböckerna som levereras med programmet, också använda böcker, som beskriver fysikaliska och tekniska tillämpningar av MATLAB. En kort introduktion, MATLAB Primer som skrivits av Kermit Sigmon finns på nätet, se t.ex. http://www.internationaleconomics.net/documents/matlab.pdf, den nyaste versionen kan köpas i bokhandeln). En utförligare beskrivning av MATLAB finner man i The MATLAB Handbook skriven av Eva Pärt-Enander, Anders Sjöberg, Bo Melin och Pernilla Isaksson i Uppsala universitet. I Uppsala har också skrivits en svensk handledning (se http://www.it.uu.se/edu/bookshelf/). Det finns versioner av MATLAB för många slags datorer. De följande exemplen har testats med Windowsversionen, som är ganska lätt att använda, t.ex. via mikronätet (TOUKO). MATLAB (v. 6.5) finns dessutom på flere av Unix-datorerna i HU (rock, soul, heavy, etc). Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 1

Det finns också en studentversion av MATLAB som man kan köpa för ca 70 C =. MATLAB skiljer sig från de symboliska programmen därigenom, att den i allmänhet ger numeriska approximationer för de räkneoperationer man ber den utföra. I de nyaste versionerna av MATLAB (6 och högre) ingår dock även symboliska verktyg. MATLAB startas på de flesta datorer genom att man skriver matlab (för att undvika att den öppnar många grafiska fönster på en unix dator, vilket tar tid, kan man skriva matlab -nojvm). Programmet startar då upp och ger prompten >>. Om man själv vill öva sig i att använda MATLAB, kan man pröva kommandot intro, eller demo, som demonstrerar vilka slags problem som MATLAB klarar. Om man vill ha hjälp med något kommando i MATLAB, skriver man help kommando. För att avsluta en session med MATLAB använder man kommandot quit eller exit. Genom att trycka på uppåt-pilen får man på nytt ett tidigare kommando, med vänsterpil flyttar man sig till vänster ett steg, och delete (backspace) tar bort ett tecken. Om man tycker att någon räkneoperation tar för lång tid, kan man avbryta den med Ctrl-C. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 2

4.1. Grunderna till MATLAB MATLAB har en inbyggd hjälpfunktion, som ger information om olika kommandon, som t.ex. >> help pi PI 3.1415926535897... PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897... Med kommandot lookfor kan man söka upp sådana kommandofiler, som innehåller en given textsträng: >> lookfor root matlabro.m: % MATLABROOT Root directory of MATLAB installation. SQRT Square root. SQRTM Matrix square root. ROOTS Find polynomial roots. CPLXROOT Riemann surface for the n-th root. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 3

MATLAB kan användas som en vanlig kalkylator, i likhet med Mathematica: >> 4711 + 1174 5885 >> 3^4, 5*(4+12) 81 80 Resultatet anges som ans, om man inte sätter ut något variabelnamn. Normalt gör man detta, och resultatet av en räkneoperation kan då se ut på detta sätt: >> x =16 x = 16 >> y = 3*x y = 48 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 4

Observera användningen av parenteser: Om man skriver a/b +c läser MATLAB detta som a + c, medan b a/(b+c) uppfattas som a. Detta beror på räkneoperationernas olika prioritet. b + c För division finns det två tecken, vanlig division (/) och vänsterdivision (\). 2/5 betyder detsamma som 5\2. I matrisräkning har vänsterdivisionen en speciell betydelse, som vi skall se senare. Normalt skriver MATLAB ut resultaten med 5 siffrors noggrannhet. Vill man ha mera, kan använda kommandot format long (eller format long e, som ger exponentformat). Man kan också behandla komplexa tal i MATLAB. Variablerna i och j används för att beteckna den imaginära enheten (om de inte definierats på annat sätt), och man kan därför utföra räkneoperationer med dem: >> z=1+2i z = 1.0000 + 2.0000i >> conj(z) 1.0000-2.0000i Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 5

>> z^2 - z -4.0000 + 2.0000i >> imag(z^2-z) 2.0000 Observera, att conj(z) här betecknar den komplexa konjugaten av z, dvs z. Argumentet av ett komplext tal (dvs fasvinkeln i det komplexa planet) anges med angle, t.ex. >> arg=angle(z) arg = 1.1071 MATLAB känner till alla de vanliga elementära funktionerna: >> cos(45) 0.5253 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 6

>> pi 3.1416 >> cos (pi/4) 0.7071 sin(pi) är inte exakt 0, eftersom pi är en approximation för π: >> sin(pi) 1.2246e-016 Observera, att de trigonometriska funktionerna anges i radianer, men det är lätt att konvertera dem till grader, eftersom MATLAB känner till π (som vi sett). Vi skall ännu se på några andra exempel. Den naturliga logaritmfunktionen betecknas med log, och den briggska med log10: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 7

>> x=10; >> log(x) 2.3026 >> log10(x) 1 Nepers tal e får man genom att räkna ut exponentialfunktionens värde för x = 1: >> e=exp(1) e = 2.7183 I princip känner MATLAB till bara en matematisk storhet, en rektangulär matris. Ofta tolkas dock matriser med en rad eller en kolumn som vektorer och matriser med en rad och en kolumn som skalärer. En kolumnvektor och en radvektor anges på olika sätt i MATLAB: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 8

>> vcol = [1; 2; 3; 4] vcol = 1 2 3 4 >> vrow = [ 5 6 7 8] vrow = 5 6 7 8 Man kan operera på en vektor (elementvis) med en funktion, t.ex. kvadratroten: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 9

>> sqrt(vcol) 1.0000 1.4142 1.7321 2.0000 Om man vill se vilka variabler som hittills definierats, använder man kommandot who: >> who Your variables are: a b vrow y ans vcol x Om man vill stryka variabeldefinitionerna, använder man kommandot clear. Man kan också alstra en vektor med kolonoperatorn: >> v = 0:8 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 10

v = 0 1 2 3 4 5 6 7 8 >> v2=0:0.5:2 v2 = 0 0.5000 1.0000 1.5000 2.0000 Som vi ser, uppfattas argumentet mellan de två gränserna som en tillväxtterm. Ifall den fattas, antas tillskottet vara 1. Man kan också utföra operationer på en vektor: >> 2.^v 1 2 4 8 16 32 64 128 256 Observera punkten framför operatorn ^, som anger att operationen utförs elementvis. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 11

För att beräkna vektorprodukten av två vektorer, kan man använda funktionen cross. Produkten av de två vektorerna i + j och j + k (i = [100] etc.) kan sålunda beräknas som följer: >> a = [1 1 0]; >> b = [0 1 1]; >> c = cross(a,b) c = 1-1 1 Matriser kan konstrueras på olika sätt. Dels kan man konstruera dem direkt från en elementlista, dels kan man alstra dem med hjälp av MATLAB-kommandon, och dels kan de läsas in från filer. En matris kan konstrueras genom att räkna upp element för element: >> B(1,1)=1; B(1,2)=2; >> B(2,1)=3; B(2,2)=4 B = 1 2 3 4 men vanligen används en annan metod. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 12

En fyrradig matris kan man t.ex. läsa in genom att ange elementen radvis, åtskilda av semikolon, och omge hela uttrycket med klamrar: >> A = [ 1 2 3 4 ; 2 3 4 1 ; 3 4 1 2 ; 4 1 2 3 ] A = 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 (om man inte vill att MATLAB skall skriva ut matrisen, kan man tillfoga ett semikolon (;) efter kommandot). En radvektor kan anges på liknande sätt, elementen kan vara matematiska uttryck (observera, att pi betecknar symbolen π): >> x = [-0.5, 0.5, 1, pi ] x = -0.5000 0.5000 1.0000 3.1416 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 13

Emedan x är en radvektor, kan man inte utföra multiplikationen Ax, vilket observeras av MATLAB: >> b = A*x??? Error using ==> * Inner matrix dimensions must agree. Däremot fungerar multiplikationen xa: >> b=x*a b = 16.0664 7.6416 7.7832 9.9248 Genom att transponera x till en kolumnvektor med apostrofbeteckningen >> x = x x = -0.5000 0.5000 1.0000 3.1416 kan man utföra beräkningen: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 14

>> b = A*x b = 16.0664 7.6416 7.7832 9.9248 Låt oss definiera två matriser A och B: >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> B = [1 2 3; 4 5 6] B = 1 2 3 4 5 6 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 15

Vi kan lätt bilda matrisprodukten BA: >> B*A 30 36 42 66 81 96 men försöker vi räkna ut AB, lyckas det inte: >> A*B??? Error using ==> * Inner matrix dimensions must agree. Detta beror på, att raderna i matrisen A har tre element, medan kolumnerna i B har endast två element. Matrismultiplikationen kan alltså inte utföras. Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 16

Determinanten av matrisen A är noll, medan determinanten av B inte existerar: >> det(a) 0 >> det(b)??? Error using ==> det Matrix must be square. Detta leder till att matrisen A blir singulär och saknar invers, medan B definitionsmässigt inte har någon invers eftersom den inte är en kvadratisk matris. Vi ser detta genom att försöka beräkna inverserna med MATLAB: Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 17

>> inv(a) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.937385e-018 1.0e+016 * 0.3152-0.6304 0.3152-0.6304 1.2609-0.6304 0.3152-0.6304 0.3152 >> inv(b)??? Error using ==> inv Matrix must be square. Om man obetydligt förändrar något av elementen i A, får vi en matris som uppför sig bättre: >> A2 = [1 2 3; 4 5 6; 7 8 9.01]; >> det(a2) -0.0300 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 18

Determinanten är fortfarande ganska liten, men inversen existerar, även om konditionstalet rcond är litet: >> rcond(a2) 9.2695e-005 >> inv(a2) 98.3333-199.3333 100.0000-198.6667 399.6667-200.0000 100.0000-200.0000 100.0000 Ekvationssystemet Ax = b, där b är kolumnvektorn [456] kan dock lösas med hjälp av MATLAB på följande sätt: >> b = [4; 5; 6]; >> A\b Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 19

-0.3333-2.3333 3.0000 (observera vänsterdivisionen \). Om vi byter ut matrisen A mot den modifierade matrisen A2, fås b = [-3.3333, 3.6667, 0.0000], en rätt stor skillnad. Om ett lineärt ekvationssystem Ax = b innehåller flere ekvationer än obekanta, säges det vara överdeterminerat. Detta inträffar ofta då man anpassar kurvor till experimentella data. Ekvationssystemet brukar då lösas med Gauss minsta kvadratmetod. MATLAB använder denna metod automatiskt då man använder operatorn \. Nedan visas ett exempel härpå: >> A=[1 2; 3 4; 5 6]; >> b=[7; 8; 9]; >> A\b -6.0000 6.5000 Introduktion till vetenskapliga beräkningar I, Tom Sundius 2009 20