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

Relevanta dokument
Introduktion till MATLAB

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

Introduktion till Matlab

MMA132: Laboration 2 Matriser i MATLAB

Matriser och linjära ekvationssystem

Beräkningsvetenskap föreläsning 2

Introduktion till Matlab

MMA132: Laboration 1 Introduktion till MATLAB

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

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

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

Matriser och Inbyggda funktioner i Matlab

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

Matriser och vektorer i Matlab

Matriser och Inbyggda funktioner i Matlab

Matriser och linjära ekvationssystem

Introduktion till Matlab

Kort om programmering i Matlab

Linjära ekvationssystem i 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:

TSBB14 Laboration: Intro till Matlab 1D

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

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Instruktion för laboration 1

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

Matlabövning 1 Funktioner och grafer i Matlab

Introduktion till Matlab

Laboration: Grunderna i MATLAB

Beräkningsverktyg HT07

Introduktion till Matlab

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

Matlabövning 1 Funktioner och grafer i Matlab

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

En introduktion till MatLab

Introduktion till Matlab

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

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

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

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

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

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

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

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

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

MAM283 Introduktion till Matlab

Laboration: Vektorer och matriser

TAIU07 Matematiska beräkningar med Matlab

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

Laboration: Grunderna i Matlab

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

a = a a a a a a ± ± ± ±500

Laboration 1: Linjär algebra

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

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

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

Linjär algebra med tillämpningar, lab 1

Mer om funktioner och grafik i Matlab

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

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 4 december 2015 Sida 1 / 26

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

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

Kort om programmering i Python

Mer om funktioner och grafik i Matlab

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

TANA17 Matematiska beräkningar med Matlab

SF1624 Algebra och geometri

Instruktion för laboration 1

1.1 MATLABs kommandon för matriser

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

Linjär Algebra M/TD Läsvecka 2

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

2 februari 2016 Sida 1 / 23

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

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

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

Några saker som jag inte hann: Ur trigonometriska ettan kan vi uttrycka och i termer av. Vi delar båda led i trig. 1:an med :

MATLAB övningar, del1 Inledande Matematik

Introduktion till Matlab

Matematisk Modellering

Mer om linjära ekvationssystem

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

linjära ekvationssystem.

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

Matriser och vektorer i Matlab

TANA17 Matematiska beräkningar med Matlab

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

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

Funktioner och grafritning i Matlab

TANA17 Matematiska beräkningar med Matlab

Användarhandledning Version 1.2

4 Numerisk integration och av differentialekvationer

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

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

TANA17 Matematiska beräkningar med Matlab

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

TAIU07 Matematiska beräkningar med Matlab

Lab 1, Funktioner, funktionsfiler och grafer.

Programmering i Matlab

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Transkript:

Inmatning: Här är lite exempel på inmatning i Matlab: >> pi 3.1416 >> format long >> ans 3.141592653589793 Matlabföreläsningen Lite mer och lite mindre! >> format %återställer format (%- tecknet gör att matlab struntar i allt till höger om det!) >> 7.5 %inte 7,5 7.5000 >> a=100 100 >> a=10; %a blir 10 men vi ser inte någon utskrift >> För alla möjliga format skriv help format. Testa sedan hur pi ser ut i olika format! De vanliga räknesätten är + - * / ^. Då två vektorer ska multipliceras, divideras eller upphöjas med varandra elementvis, då måste man använda.* eller./ respektive.^ Om man utelämnar punkten så blir det matrisoperationer, och två radvektorer kan inte matrismultipliceras med varandra! (Radvektor = [1 2], Kolonnvektor = [1 ; 2]) Nu lite mer exempel på inmatning: >> a=[8 9] %detta är en radvektor 8 9 >> a(1) %detta är elementet ur vektorn a som har index 1, dvs det första elementet 8 >> a(2) 9

>> length(a) 2 >> size(a) 1 2 >> size(a)(2) %matlab kommer inte att gilla dessa paranteser??? Error: ()-indexing must appear last in an index expression. >> ans(2) %men detta går bra! 2 >> a=[8;9] %nu är a istället en kolonnvektor 8 9 >> length(a) 2 >> size(a) 2 1 >> a' % '-tecknet efter a gör om a till en radvektor. ' gör också om rader till kolonner! 8 9 >> a=[1 2; 3 4] % efter ; hoppar vi neråt till nästa rad 1 2 3 4 >> a=1:5 % a= start: slut 1 2 3 4 5 >> a=0:0.1:0.6 % a=start:steglängd:slut 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000

>> a=ones(2,3) %ettor... 2 rader, 3 kolonner... antalet rader anges alltid först! 1 1 1 1 1 1 >> b=zeros(2,1) b = 0 0 >> A=[a b; b 2*a] % när man skapar matriser går det bra att skriva in färdiga matriser. % ;-tecknet gör att de staplas på varandra. A = 1 1 1 0 1 1 1 0 0 2 2 2 0 2 2 2 OBS: vi har fått matrisen [a b] [b 2a]!!! Vi kan komma åt ett element mitt i matrisen om vi vill: >> A(3,2) % elementet på rad 3 och kolonn 2 i matrisen A 2 >> size(a) 4 4 >> a=1:3 ; b=2:4 ; >> a.*b %a och b måste ha samma längd. multiplikationen sker elementvis. 2 6 12 >> clear a % rensar variabeln a, clear all rensar alla variabler >> a??? Undefined function or variable 'a'. >> log(sqrt(exp(1))) % ln(rotenur(e^1)) = 1/2 0.5000 skriv help elfun för att få en lista på alla vanliga matematiska funktioner... arctan, sin, etc >> a=linspace(start,slut,antal) % testa hur detta fungerar! kan vara smidigare än a=st:lä:sl!!!

Strängar: Detta fanns inte med på föreläsningen: En sträng består av två 'fnuttar' och text, t.ex. s='matte rockar fett!!' Om en sträng egentligen är ett tal kan man konvertera den till ett tal med hjälp av str2num, t.ex. >> s='3.14159' s = 3.14159 >> str2num(s) 3.1416 Den andra riktningen går också bra, men vi använder num2str: >> n=3.14159 n = 3.1416 >> num2str(n) 3.1416 Man kan sätta ihop strängar precis som vektorer och matriser: >> ['Hej ' 'jacob' '!(' num2str(2009) ')'] Hej jacob!(2009) Testa nu följande (vad tror du att det blir?) >> str2num (['1' num2str(3.14)]) + 1 Kurvritning >> x=linspace(-2,2,100); %x går mellan -2 och 2 och 100 punkter plottas >> y=x.^2 + 1; >> plot(x,y) % ritar funktionen y=x^2+1... obs man måste skriva.^2... Nu en funktion av 2 variabler... f(x,y) = sin(x)*y. Vi låter både x och y gå mellan -2pi och 2pi. >>x=linspace(-2*pi,2*pi,300);y=x; >>[X,Y]=meshgrid(x,y); %skapar matriser med storleken 300x300 som innehåller x respektive y %upprepade flera gånger. >>Z=sin(X).*Y; %observera igen punkten. detta beräknar funktion f(x,y) i angivna gitterpunkter >>mesh(x,y,z) % detta plottar funktion... nu kan man vrida och flytta den med muspekaren om man % först trycker på motsvarande ikoner i figurfönstret Testa att rita funktionerna z=+/-sqrt(x^2+y^2). Konens ekvation är z^2 = x^2 + y^2... Varför?!! Man kan inte rita konen som en a graf!!

Script- och funktionsfiler Ett skript är en fil som innehåller en lista kommandon som man skulle kunna skriva själv direkt in i Matlab, men när man skriver namnet på skriptfilen körs denna lista igenom automatiskt, precis som om man skulle skrivit in den själv. Skriptfiler ska sparas som blabla.m En funktionsfil är samma som en skriptfil, men kan anropas med indata och ger utdata. T.ex. kan man ha skrivit en funktion dubblera som dubblerar alla tal i en matris. Om man då skriver A=dubblera(ones(3)) får man en 3x3 matris A, som består av 2:or. Funktionsfiler måste börja med function utdata=funktionsnamn(indata) %hjälptext (om man vill). Funktionsfilen ska också sparas som filnamn.m För att skriva.m filer öppna matlabs inbyggda editor genom att trycka på nyfil-ikonen uppe till vänster. OBS!!!! kopiera, klistra in, spara, etc har andra tangentbordskombinationer, lär er dessa direkt, onödigt att slösa med tid! För att kunna köra era.m filer måste den mappen ni sparar filerna i vara samma som den som står under current directory i matlabfönstret. Glöm inte att spara.m filerna innan ni testkör, det sker inte automatiskt! Detta är innehållet i dubblera.m: function d=dubblera(x) % dubblera dubblerar elementvis matrisen x d=2*x; %obs vi skriver ; för att när funktionen körs inte få d = blabla utskrivet på skärmen!! Nu dubhalv.m: (VIKTIGT) function [d,h] = dubhalv(x) % d är matrisen x dubblerad % h är matrisen x halverad d=2*x; h=x/2; Vi testar nu denna funktion: >> dubhalv(1:3) %om vi skriver såhär så får vi bara ut de dubblerade värdena 2 4 6 >> [d h] = dubhalv(1:3) % här får vi ut allt... det spelar ingen roll om våra variabler d och h heter d = h = 2 4 6 0.5000 1.0000 1.5000 % samma sak som de gör i funktionsfilen. De kan heta något annat också. Vi skriver nu en skriptfil heter.m som vi såg på föreläsningen namn=input('vad heter du?\n'); %semikolon behövs!! \n betyder ny rad disp(['hej ' namn '!'])

Testkörning: >> heter Vad heter du? 'jacob' Hej jacob! Obs att jag var tvungen att skriva 'jacob' för programmet vill ha en sträng. Skriver jag bara jacob så blir det felmeddelande. Polynom För att skriva in polynom i Matlab så använder man sig av vektorer. T.ex. svarar vektorn [0101] mot 0x^3 + 1x^2 + 0x +1, dvs x^2+1. Vektorn [1 0 1] ger samma polynom. Vill vi addera två vektorer måste de ha samma längd. Om de heter A och B kan vi göra följande: A=[zeros(1,length(B)-length(A) A]; B=[zeros(1,length(A)-length(B) B]; Vi kan nu skria A+B för att få summan av motsvarande polynom. För att multiplicera polyonom använder vi kommandot conv(a,b). Division ges av deconv, men detta får såklart inte användas i den första labben, eftersom ni själva ska programmera polynomdivision. För att hitta rötter till polynomet A skriver vi bara roots(a). Matlab räknar alltid numeriskt, så det finns ingen garanti att den hittar exakta värden för rötterna. För att räkna ut ett polynoms värden, (och därför också för att plotta ett polynom): Använd polyval(a,x) för att räkna ut A(x). Det går bra om x är en matris... polynomets värde räknas ut elementvis, dvs varje tal i matrisen sätts in i polynomet, och vi får därför en hel matris av värden. En if-sats ser ut såhär: if villkor då händer följande elseif annat villkor else då händer följande i övriga fall händer detta Vi kan också ha enklare if-satser if villkor då händer detta eller en ifsats som innehåller if, else,. If-satser

I samtliga fall utför bara Matlab koden som står under ETT av villkoren. Om inget villkor är sant så går Matlab bara förbi hela ifsatsen utan att göra något. Exempel på villkor: a>2 a==b % två likhetstecken i rad 1<2 a<=b % a är mindre än eller lika med b a>=b % a är större än eller lika med b a~=b % a är inte lika med b Följande var inte med på föreläsningen: Om det är sant att a>2 så är uttrycket a>2 lika med ett! Om det är falskt så är a>2 lika med noll. Man kan därför skriva if 1 blablabla. Då kommer alltid blablabla att utföras. Om man vill vända ett sant påståe (1) till ett falskt (0) eller tvärtom så använder man symbolen ~. Alltså ~0 = 1 och ~1 = 0. Ex. if ~(a==0) blabla While: while (villkor) gör blabla Loopar While-satser och For-satser Om villkoret villkor är sant så utförs blabla om och om igen tills att villkoret är falskt. Skriver man while (1) så stannar inte loopen alls (om inte kommandot break anropas). For: for var=vek %var är en variabel, den får heta vad som helst blabla % vek är en vektor som får vara vad som helst Denna loop går length(vek) stycken varv. I det första varvet får var värdet vek(1), i nästa varv får den värdet vek(2), osv... Alltså: var får alla värden som finns i vek ett i taget. Ex. for i=1:100000 disp('all work and no play makes Jacob a dull boy.')

Linjär algebra För att lösa ett ekvationssystem [A b], där A är koefficientmatrisen och b är högerledet så skriver vi i matlab A\b. Även om det teoretiskt sett inte finns en lösning så bryr sig inte Matlab om det utan beräknar ändå en lösning. Matlab kommer dock att ge en varning att matrisen är lite 'knepig'. Dessutom så kan vissa matriser vara 'knepiga' även om det finns en unik lösning till systemet. Det kan då vara svårt för matlab att få många korrekta decimaler på lösningen. Vi får då samma varning. Man bör alltså kontrollera lösningen x=a\b genom att skriva A*x och kolla om det blir b. Detta ingår i kursen linjär algebra: En matris kan multipliceras med en vektor. Om man skriver A*x = b så får man en vektorekvation som precis innehåller samma ekvationer som ekvationssystemet [A b]. Dvs, om man skriver ekvationssystemet på matrisform så ser det ut som A*x=b. Detta är förklaringen till att man ska kolla att A*x = b. Ett annat sätt att lösa ekvationssystemet är att skriva in den utökadematrisen i Matlab (skriv U=[A b]). Använd sedan rref(u) för att få trappstegsformen av U. Sedan kan man med papper och penna skriva upp lösningen.