MATLAB Matrix laboratory

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

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

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

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

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

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

Vad är MATLAB? Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

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

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

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

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

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

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

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

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

Beräkningsverktyg HT07

Grunderna i MATLAB. Beräkningsvetenskap och 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:

Introduktion till MATLAB

Laboration: Vektorer och matriser

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

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

Laboration: Grunderna i MATLAB

Beräkningsvetenskap föreläsning 2

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

TSBB14 Laboration: Intro till Matlab 1D

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

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

Introduktion till MATLAB Föreläsning 1

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

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Sanningar om programmering

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

Laboration: Grunderna i Matlab

TANA17 Matematiska beräkningar med Matlab

MMA132: Laboration 2 Matriser i MATLAB

2 februari 2016 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

TAIU07 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

Matematisk Modellering

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

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

TANA17 Matematiska beräkningar med Matlab

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Sanningar om programmering. Sanningar om programmering. Programmeringsprocessen. Att skriva program i Matlab. Programmeringsprocessen

Datorövning 1: Introduktion till MATLAB

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

Variabler och konstanter

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

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

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Matematisk Modellering

Matriser och linjära ekvationssystem

Sanningar om programmering. Ett vardagsexempel. Ett vardagsexempel (forts.) Grundläggande byggstenar i algoritmer/program. Programmet som recept

Grundläggande kommandon

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

Matriser och vektorer i Matlab

TAIU07 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

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

Matematisk Modellering

Kapitel 4. Programmet MATLAB

Matriser och linjära ekvationssystem

Sanningar om programmering. Sanningar om programmering. Programmeringsprocessen. Att skriva program i Matlab. Programmeringsprocessen

Lab 1, Funktioner, funktionsfiler och grafer.

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

Linjära ekvationssystem

Introduktion till Matlab

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

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

Introduktion till Matlab

MATLAB handbok Introduktion

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

MATLAB. En kort praktisk introduktion. Olof Hultin FAFA Omarbetad efter original av Henrik Persson

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

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

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

MAM283 Introduktion till Matlab

Laboration 1: Linjär algebra

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

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

4.3. Programmering i MATLAB

Matriser och Inbyggda funktioner i Matlab

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

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

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

Matlabövning 1 Funktioner och grafer i Matlab

Introduktion till Matlab

Introduktion till MATLAB, med utgångspunkt från Ada

Introduktion till MATLAB

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

Introduktion till Matlab

Stora problem och m-filer

Mer om linjära ekvationssystem

TAIU07 Matematiska beräkningar med Matlab

MAPLE MIKAEL STENLUND

Instruktion för laboration 1

LABORATION I MAPLE MIKAEL STENLUND

Transkript:

MATLAB Matrix laboratory Utvecklat av MathWorks Inc Introduktion till MATLAB Stefan@it.uu.se Utvecklat av MathWorks, Inc Första versionen klar i slutet av 70-talet Matematisk labmiljö för Numeriska beräkningar Grafik Programmering En enkel miljö för att snabbt testa idéer och för att studera resultat Vad är MATLAB? Vad är MATLAB? Avancerat interaktivt mjukvarupaket för beräkningar och visualiseringar. Ursprungligen MATrix LABoratory. Många kraftfulla fördefinierade funktioner med möjlighet att definiera egna. Eget objektorienterat programmeringsspråk. Samverkan med C++, Java och FORTRAN möjlig. Över 5 tilläggsprogram (toolboxar) finns för speciella tillämpningsområden, t ex: signalbehandling bildbehandling statistik symbolisk matematik finansiell matematik Körs under UNIX/Linux, Windows eller Macintosh. 1

Vad är MATLAB? Vad är MATLAB Toolboxar MATLAB är inte är symbolmanipulerande program som Maple eller Derive MATLAB genererar numeriska lösningar (siffror) Maple och Derive genererar formeluttryck och är matematikverktyg Varför inte generera numeriska lösningar genom att stoppa in siffervärden i folmeluttrycken? Ineffektivt Omöjligt I många fall Användningsområden Användningsområden Överallt där det förekommer beräkningsproblem! Undervisning: matematik, särskilt linjär algebra, beräkningsvetenskap, fysik, kemi, teknik, ekonomi, etc. Forskning: tekniska beräkningar, algoritmutveckling, analys av metoder och visualisering av resultat. Industrin: Spritt inom industrin MATLAB kan användas interaktivt som en avancerad räknedosa. Enkelt! MATLAB kan användas för att generera grafik. Enkelt! MATLAB kan också användas som ett programmeringsspråk på ett mer avancerat sätt.

Starta MATLAB När MATLAB startas öppnas ett kommandofönster: Arbeta interaktivt I kommandofönstret kan man arbeta interaktivt som en avancerad miniräknare Semikolon undertrycker utskrift Om inget variabelnamn anges läggs variabeln i ans (=answer) >> a=75 a = 75 >> b=34; >> c=a*b c = 550 >> a+b 109 Variabler i MATLAB Variabler i MATLAB Behöver inte deklareras skapas när de behövs Ingen typdeklaration Matris grundläggande datatyp - alla variabler är matriser (skalär är en 1 1-matris) Finns även andra datatyper, t ex Strängar Sparse (för glesa matriser) Struct (en matris med olika poster) Finns Heltal, reella tal komplexa tal Logiska 0 = sant, 1 = falskt = tilldelning == likhet >> c = sqrt(-) c = 0 + 1.414i >> 1 == 0 >> 1+1 == 1 3

Hur skapas en matris? Matrisalgebra >> x = [; 1] Skapa 1 A = 5 7 3 Semikolon eller retur i matrisen ger radbyte >> A = [1 7; 5 3]; >> A A = 1 7 5 3 >> A = [1 7 5 3] A = 1 7 5 3 Vanliga räkneregler för matriser/vektorer gäller. x = 1 >> A*x 9 13 >> x*a??? Error using ==> * Inner matrix dimensions must agree. Att bygga ut en matris 1 7 >> A = [A; 1]; Skapa A = 5 3 alternativt 1 >> temp = [ 1]; >> A = [A; temp]; Skilj på rad- respektive kolonnvektorer! >> temp = [;1]; >> A = [A; temp];??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. Element, rader och kolonner Man kan arbeta med enskilda element, rader, kolonner, submatriser Kolon (:) betecknar hel rad respektive kolonn >> A(,1) 5 >> A(,:) 5 3 >> A(,:) = [0 0] A = 1 7 0 0 1 4

Speciella matriskommandon Finns inbyggda funktioner för att skapa vanliga (och ovanliga) matriser Kan skapa mer avancerade matriser genom kombinationer eye(n) enhetsmatrisen ones(m,n) ett-matris zeros(m,n) noll-matris + ett stort antal andra >> B = ones(,3) B = 1 1 1 1 1 1 >> eye() 1 0 0 1 >> C = zeros(,) C = 0 0 0 0 Elementvisa operationer Operationer, t ex *,/,^ kan även utföras elementvis Exempel) B^ = B*B men b B.^ = b 11 1 b b 1 >> B = [1 7;5 3]; >> B^ 36 8 0 44 >> B.^ 1 49 5 9 Elementvisa operationer Funktioner och operatorer På samma sätt är B C vanlig matrismultiplikation mellan två matriser medan b11c11 b1c1 B.*C = b1c1 bc Ibland kan detta >> a = [ 4]; generera fel >> a.^ 4 16 >> a^??? Error using ==> ^ Matrix must be square. Finns mängder av inbyggda funktioner abs(x), sqrt(x), sin(x), log(x), log10(x), >> a = [- 4]; >> abs(a) 4 >> log(a) 0.6931 + 3.1416i 1.3863 Observera att alla arbetar på vektorer och matriser 5

Funktioner och operatorer Fler exempel min(x) ger minsta värdet i x, kolonnvis om x matris max(x) på samma sätt, men största värde sum(x) summan av elementen i x mean(x) medelvärdet av elementen i x std(x) standardavvikelsen av elementen i x exp(x) e x för alla element i x real(z) reealdelen av elementen i x imag(z) imaginärdelen av elementen i x log(x) tvålogaritmen av elementen i x lu(a) LU-faktorisering av matrisen A Funktioner och operatorer Backslash-operatorn, \ Används för att lösa ekvationssystem, Ax=b >> A = [- 4; 5]; b=[1;]; >> x=a\b x = 0.1667 0.3333 Är en intelligent operator som ändrar metod efter vilket problem som ska lösas Om triangulärt system utförs framåt resp bakåtsubstitution Etc, etc Funktioner och operatorer Enkel grafik (D) Några andra användbara operationer size(a) ger antal rader och kolonner i A length(x) ger längden av vektorn x eig(a) rank(a) norm(a) egenvärden och egenvektorer A:s rang A:s norm (-norm) norm(a,inf) A:s maxnorm cond(a) A:s konditionstal (i -norm) Inv(A) A:s invers Gången när något ska plottas är Skapa en horisontell axel (t ex x-axel) Beräkna funktionsvärden (y-axel) Plotta x mot y, plot(x,y) >> x = linspace(0,*pi,50); >> y = cos(x)+sin(x); >> plot(x,y) 6

Enkel grafik (D) X-axel skapas genom x = linspace(x0,x1,antal_pkt); eller x = [x0:steglangd:x1]; Plotkommandot kan utvidgas på många olika sätt, t ex >> plot(x,cos(x), -,x,sin(x), o ) Grafik i 3D Funktioner av två variabler kan visualiseras på många olika sätt mesh(x,y,z) Grafik i 3D Grafik I 3D surf(x,y,z) contour(x,y,z) 7

Skriv i filen MinFil.m följande: Ett MATLAB-program skrivs antingen som en s k kommandofil eller en funktion Alla MATLAB-program lagras i m-filer, dvs filer som har ändelsen.m En funktion ska man betrakta som en svart låda som kommunicerar med omvärlden med in- och utparametrar In Ut (resultat) En kommandofil är ett sätt att lagra kommandon som annars skulle skrivas interaktivt. Genom att köra filen exekveras alla kommandon i filen % En första kommandofil x0 = 0; x1 = *pi; n = 100; x = linspace(x0,x1,n); y = cos(x)+sin(x); plot(x,y) Kommandona körs nu genom kommandot >> MinFil Vill man ändra t ex intervallet från 0 till pi behöver man bara ändra x1, sedan köra filen igen Skriv i filen MinFunk.m följande: [x, y] = MinFunk(x0, x1, n) % Min testfunktion x = linspace(x0,x1,n); y = cos(x)+sin(x); plot(x,y) Funktionen anropas genom >> xstart=0; xslut=pi; n=100; >> [x, y] = MinFunk(xstart,xslut,n); En funktion måste alltid börja med funktionshuvud, t ex [x, y] = MinFunk(x0, x1, n) utparametrar inparametrar Alla variabler inne i funktionen är lokala, dvs existerar inte utanför funktionen Alla variabler i en kommandofil är globala 8

Villkorssatser If-sats: Repetitionssatser For-sats: k = input( Ge ett tal: ); If k==0 disp( Talet är noll ); elseif k>0 disp( Talet är positivt ) else disp( Talet är negativt ) for k=1:length(x) x(k)= %Antar värdena 1,,,(längden av x) eller t ex for k=1::length(x) x(k)= % Antar värdena 1,3,5,7, Repetitionssatser While-sats: % Så länge som fel < tol utför % beräkning fel = norm(x(i)-x(i-1)) while fel < tol i = i+1; x(i) = Effektiv programmering I största möjliga grad bör vektoroperationer användas Ex) Antag att f = (f 1, f,,f n ) skapats och vi vill beräkna f 1 +f + +f n-1 +f n % Metod 1 tmp = f(1); for k = :n-1 tmp = tmp + *f(k); sum = tmp + f(n) 9

Effektiv programmering Ex forts) Utnyttja att sum är en skalärprodukt mellan (1,,,,1) och (f 1, f,,f n ) T % Metod sum = [1 *ones(1,n-) 1]*f ; Metod är mycket snabbare! Tecknet i f betyder transponat, dvs f T Effektiv programmering Behandla vektorer och matriser som vilka variabler som helst Skriv generellt. Undvik att skriva funktioner som bara fungerar för ett problem Undvik siffror inne i loopar och inne i program. Använd bokstäver och sätt konstanter och parametrar initialt i koden. Effektiv programmering [m,n] = size(a); for i = 1:m är bättre än t ex for j = 1:n A(i,j) = A(i,j)- for i = 1:500 for j = 1:400 A(i,j) = A(i,j)- Några små tips Piltangent återkallar tidigare kommando Pl återkallar senaste kommando vars namn började med pl ctrl-c avbryter exekveringen av ett kommando (men stoppar inte MATLAB) diary kan användas för att spara skärmutskrifter i en fil >> diary uppg1.txt >> Allt som skrivs på skärmen hamnar nu i filen uppg1.txt >>diary off % stänger diary 10

Några små tips Hur får man hjälp? format ändrar utskriftsformatet Använd help interaktivt >> y = sin(*pi/3); >> y y = 0.8660 >> format long; y y = 0.8660540378444 >> format long e; y y = 8.66054037844387e-001 >> format short e; y y = 8.6603e-001 >> format short; y y = >> help plot PLOT Linear plot. PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the rows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector, length(y) disconnected points are plotted. PLOT(Y) plots the columns of Y versus their index etc, etc 0.8660 % Standardformatet åter Hur får man hjälp? Använd menyn Help Under t ex MATLAB help finns alla funktioner listade efter typ, man kan söka efter funktioner etc 11