F1: Introduktion, Matlabrepetition (kap. 1 2)

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

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

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

F1: Introduktion, Matlab (kap. 1 2)

F1: Introduktion, Matlab (kap. 1 2)

Varför program? F1: Introduktion, Matlab (kap. 1 2)

Kursinnehåll. Introduktion till kursen. Hederskodex. Programmering

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

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

Introduktion till 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

Beräkningsvetenskap föreläsning 2

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

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

Beräkningsverktyg HT07

TDIU01 - Programmering i C++, grundkurs

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

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

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

Instruktion för laboration 1

TSBB14 Laboration: Intro till Matlab 1D

TAIU07 Matematiska beräkningar med Matlab

Svensk Matlab-terminologi

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

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

Objektorienterad programmering Föreläsning 4

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

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

Introduktion till Matlab

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Programmering för språkteknologer I, VT2012. Rum

Kapitel 4. Programmet MATLAB

Klassdeklaration. Metoddeklaration. Parameteröverföring

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

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

Programmering A. Johan Eliasson

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

Matriser och vektorer i Matlab

Objektorienterad Programmering (TDDC77)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

TDDC77 Objektorienterad Programmering

Laboration 1: Linjär algebra

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

MATLAB Matrix laboratory

Matriser och vektorer i Matlab

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

Datorövning 1: Introduktion till MATLAB

Introduktion till MATLAB Föreläsning 1

Matriser och Inbyggda funktioner i Matlab

Introduktion till Matlab

Matlabövning 1 Funktioner och grafer i Matlab

TANA17 Matematiska beräkningar med Matlab

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Instruktion för laboration 1

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Översikt över Visual Basic

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

Introduktion till Matlab

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

Introduktion till Matlab

Introduktion till Matlab

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

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

SMD 134 Objektorienterad programmering

Linjära ekvationssystem i Matlab

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

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

Matriser och Inbyggda funktioner i Matlab

MMA132: Laboration 2 Matriser i MATLAB

Objektorienterad programmering i Java

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

Laboration: Vektorer och matriser

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

4.3. Programmering i MATLAB

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Matlabövning 1 Funktioner och grafer i Matlab

TANA17 Matematiska beräkningar med Matlab

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmeringsteknik med C och Matlab

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

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

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Introduktion till 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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TAIU07 Matematiska beräkningar med Matlab

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Transkript:

F1: Introduktion, Matlabrepetition (kap. 1 2) Gemensam intro Kursinnehåll Varför programmera? Egenskaper hos Matlab Kommando-, redigerings-, arbetsplats-, tabell-, guide- hjälpfönster, kommando-, funktions-, m- och loggfil Tabeller, storlek, dimension, variabel, identifierare, sökväg Uttryck, tilldelning, tysta kommandon, radindelning, litteraler Operatorer, aritmetiska, jämförande, logiska, komponentvisa Skapa tabell, indexera Datatyper Resten av kursen

Motivering för programmering Civilingenjören och teknologen behöver: göra snabba kalkyler, visa kalkyler som övertygar uppdragsgivare/kund, producera hjälpmedel som uppdragsgivare/kund kan använda, producera program som ingår i produkter, göra program som personliga hjälpmedel m.m. Egenskaper hos Matlab: kan användas interaktivt, som kalkylator, innehåller många inbyggda funktioner och kan byggas ut med egna kommandofiler och funktioner och extra verktygslådor (toolbox), kan relativt lätt skapa diagram och annan grafik, är normalt interpreterat Träna logiskt tänkande och problemlösning.

Interpreterat/kompilerande Man skriver Matlabkommandon i kommandofönstret och i m-filer (kommandofiler eller funktionsfiler). Kommandona översätts till p-kod (pseudokod). P-kod är maskinoberoende. En interpretator läser p-koden och utför en p-kodsinstruktion i taget. P-koden sparas under den aktuella sessionen eller tills minnet blir fullt. Interpretering ger inte maximal effektivitet men maskinoberoende. I Matlab finns möjlighet att kompilera, dvs. att översätta till maskinberoende maskininstruktioner. När det är gjort kan programmet utföras maximalt effektivt. Många klassiska programspråk är kompilerade t.ex. Fortran och C. Java fungerar som Matlab, dvs. använder en sorts p-kod som kan kompileras när den exekveras första gången, för att de snabbare maskininstruktionerna ska användas om programdelen exekveras igen. Perl, Applescript, Javascript m.fl. programspråk interpreteras normalt.

Att kunna programmera Behärska programspråket och programmeringsmiljön. Veta hur man hanterar vanliga delproblem. Söka fel, testa och ta hänsyn till effektivitet. Dokumentera och skriva program så att de är lätta att underhålla. Känna till människans förmåga och ta hänsyn till den i designprocessen och i själva programmet.

Repetition av Matlab Matlab finns för många plattformar, bl.a. Unix, Windows, Mac OS 9 och Mac OS X. Det finns många viktiga fönster. Kommandofönstret är centralt. Där skriver man kommandon som utförs direkt. Matlab skriver normalt resultat i detta fönster. Mycket av det som man kan göra i andra fönster, kan man också göra med kommandon i kommandofönstret. Man kan starta kopiering av kommandofönstret till en fil med diary filnamn. Med diary off slutar man spara. De inbyggda funktionerna och programdelar som man gör själv är normalt m-filer som innehåller Matlabkommandon och har filnamn som slutar på».m». M-filer kan redigeras med Matlabs redigeringsprogram eller med något annat redigeringsprogram, MSWord, emacs e.d. I Matlabs redigeringsfönster har man också tillgång till avlusningsfunktioner för att sätta stoppunkter, stega och inspektera variabler. I arbetsplatsfönstret kan man inspektera och i tabellfönstret kan man också ändra variabler.

Hjälp Det finns mycket hjälpinformation om Matlab förutom kursen och läroböcker. Via hjälpmenyn (eller med kommandot helpbrowser) når man hjälpfönstret med massor med länkad information. Kommandot lookfor text söker efter m-filer med text i första dokumentationskommentarrad. Kommandot help filnamn skriver alla dokumentationskommentarer dvs. inledande kommentarrader i m-filen filnamn.m. Det är lämpligt att förbereda egna m-filer så att de fungerar bra för lookfor och help.

Tabeller Matlab står ju för matrix laboratrory (matrislabb). Med matris menar man ju normalt en tabell med rader och kolumner. Vi kommer att använda termen»tabell» för Matlabs mer generella matriser. Man kan se praktiskt taget allt som Matlab kan hantera som tabeller. En tabell har en storlek (size) som är en vektor med antalet komponenter i de olika riktningarna/dimensionerna. Antalet komponenter i storleken är tabellens dimension. En matris är en tabell med dimension 2. Vektorer hanteras som matriser med endast en komponent i den ena dimensionen. En radvektor har en komponent i första dimensionen (en rad) och en kolumnvektor har en komponent i andra dimensionen (en kolumn). Skalärer (tal) hanteras som matriser med storleken [1 1]. Tabeller med dimension 3 eller större finns men används sällan. Alla element i normala tabeller har samma typ. Det finns andra sorters tabeller.

Variabler En tabell som man vill spara till senare under räkningarna lagrar man i en variabel. En variabel har ett namn (identifierare) och man kan se variabeln som en namngiven plats i datorns minne där man kan spara/lagra en tabell. Identifierare kan innehålla A Z, a z, siffror och _ (understreck) och måste börja med bokstav. Versaler och gemena (stora och små bokstäver) anses olika och identifierare har en maximalt tillåten längd (vanligen 19 tecken). Normalt använder man gemena. För s.k. globala variabler använder man versaler. Det är viktigt att välja bra identifierare. De variabler som man använder i kommandofiler ingår i arbetsplatsen. Man kan se vilka det är med who, få mer information, bl.a. storlek, minnesutrymme och elementtyp, med whos och radera med clear. Det finns några fördefinierade variabler såsom ans, eps, realmax, realmin, pi, inf, NaN, i, j. Variabeln eps påverkas inte av clear.

Sökväg m.m. Matlab har en aktuell sökväg. När Matlab ska tolka en identifierare prövas tolkningar i denna ordning: variabel, inbyggd funktion eller inbyggt kommando, m-fil längs aktuell sökväg. Om Matlab verkar ha hängt sig, pröva med C-c. På vissa plattformar kan man skicka kommandon till OS med!kommando. Det finns särskilda fönster (guidefönster) för att skapa användargränssnitt och hantera grafiska objekt.

Uttryck och tilldelning När man skriver en formel/ett uttryck i kommandofönstret beräknas uttryckets värde, värdet tilldelas variabeln ans och variablen skrivs ut. Man kan lagra uttryckets värde i en annan variabel med ett tilldelningskommando. Man kan undertrycka utskriften genom att skriva»;» (semikolon) efter kommandot. Man kan styra hur mycket plats utskrifterna tar med format compact/format loose. Man kan skriva mer än ett kommando på en rad med»,» (kommatecken) eller»;» mellan kommandona. Ett kommando kan fortsättas på nästa rad om man avslutar raden med»» (tre punkter). Uttryck byggs upp ungefär som matematikens formler av tallitteraler, parenteser, operatorer, [] (hakparenteser),, (kommatecken), ; (semikolon) (för att sätta ihop tabeller) och funktionsanrop. Litteral är beteckning för ett värde. Litteraler kallas ibland för konstanter, men i programmeringssammanhang är en konstant en variabel vars värde inte kan ändras, när den har fått sitt första värde (write once).

Operatorer Matlab har många operatorer: +, addition, subtraktion * multiplikation / division (högerdivision) 10/5 är 2 \ vänsterdivision 10\5 är 5/10 är 0,5 ^ exponentiering (upphöjt till) 2^3 är 8 För tabeller finns det elementvisa operationer. För att A op B ska vara tillåtet måste A och B ha samma storlek eller åtminstone den ena vara skalär: +, elementvis addition, subtraktion.* elementvis multiplikation./ elementvis division.\ elementvis vänsterdivision.^ elementvis exponentiering

A = [1 2;3 4]; B = [2 4;8 16]; C = 5; A+B ans = 3 6 11 20 A./B ans = 0.5 0.5 0.3750 0.25 C.\B ans = 0.4 0.8 1.6 3.2

Icke elementvisa operatorer När den ena operanden är skalär fungerar dessa operatorer elementvis. C = A*B matrismultiplikation, A och B har högst dimension 2 och sista dimensionens storlek i A är lika första dimensionens storlek i B C = A/B matrisdivision, lösning av linjärt ekvationssystem C = B\A C = A*inv(B) resp. C = inv(b)*a C = A' komplexkonjugering, c ij =conj(a ji ) C = A.' transponat, c ij = a ji C = A^p A är kvadratisk, p är skalär C = A* *A (p ggr)

Logiska operationer Värdet 0 betraktas som falskt (false), alla andra värden betraktas som sant (true). Resultatet sant lagras som 1. < elementvis mindre än <= elementvis mindre än eller lika med > elementvis större än >= elementvis större än eller lika med == elementvis lika med ~= elementvis skilt från & elementvis och elementvis eller ~ elementvis icke && genvägsoch genvägseller

Prioritet 1 ^,.^, ',.' 2 +, -, ~ (med en operand, unära) 3 *,.*, /,./, \,.\ 4 +, (binära) 5 : 6 ==, ~=, <, <=, >, >= 7 & 8 9 && 10 Ordningen kan förbigås med parenteser. Operatorer med samma prioritet utförs från vänster till höger, utom de unära som utförs från höger till vänster.

v = ~17 ans = 0 a = [1]; b = 1>3 & a(2); b = 1>3 && a(2); c = 1>3 & 6==10+--7 5/2/2\10

Skapa tabell I en tabellitteral räknar man, mellan»[» och»]», upp elementen med»;» eller radbyte mellan raderna och»,» eller blanktecken mellan kolumnerna. Om tabellen ska ha dimension 3 eller mer skapar man ett lager i taget. Man kan också sammanfoga befintliga tabeller: A = [1 2;3 4]; B = [5 6;7 8]; x = [9 10]; y = [11;12]; z = [13 14]; Tre sätt att skapa xnew som [9 10 0 15]: xnew = x; xnew(3) = 0; xnew(4) = 15; xnew = [x 0 15]; temp = [0 15]; xnew = [x temp];

Skapa tabell forts. Man kan lägga en ny rad eller en ny kolumn till A: Anew = [A;z]; Anew = [A;[13 14]]; Anew = [A y]; Anew = [A [11;12]];

Indexering Man kan nå enstaka element eller subtabeller med indexering. Elementen lagras i följd motsvarande att tidiga index varierar fortare än senare index. Man kan skriva ut elementen i denna ordning med A(1:numel(A)) eller A(:). Man kan ange en subtabell som vänsterled i en tilldelning. A = reshape( 1:9,3,3) A = [1 4 7 2 5 8 3 6 9] A(:)' ans = [1 2 3 4 5 6 7 8 9]

Indexering forts. A(1:4:9) = 1; A([3 5 7]) = [1 2 3] A = [1 4 3 2 2 8 1 6 1] A([1 3],[1 3]) = 0 A = [0 4 0 2 2 8 0 6 0]

Skapa speciella tabeller b:s:e en radvektor med elementen b b+s b+2*s b+3*s b+n*s så att n är det största heltal som gör b+n*s<=e linspace(a,b,n) a:(b-a)/(n-1):b linspace(0,12,6) [0 2.4 4.8 7.2 9.6 12] linspace(a,b) linspace(a,b,100) ones(n), matris med storlek [n n] resp. [m n p] med ettor ones(m, n,, p) zeros(n), matris med storlek [n n] resp. [m n p] med nollor zeros(m, n,, p) eye(n), matris med storlek [n n] resp. [m n] med ettor i eye(m, n) diagonalen och nollor f.ö.

Serier Formler kan lagras som text. En aritmetisk serie a, a+s, a+2*s,, a+(n 1)*s kan vi summera med f = 1:99; summa = sum(f) summa = 4950 Summan är ju (a+a+(n-1)*s)*n/2 så vi lagrar formeln i variabeln str. str = '(2*a+(n-1)*s)*n/2'; a = 1; s = 1; n = 99; eval(str) ans = 4950

Polynom Matlab lagrar polynom som en koefficientvektor med högstagradskoefficienten först. Med p(x)=x 4 +5x 3 2x 2 +7x 11 kan vi beräkna: p = [1 5-2 7-11]; polyval(p,1) p = 0 val = polyval(p,[2 3 5 7 9]) val = 51 208 1224 4056 10096 Det finns många andra funktioner för att skapa speciella tabeller.

Datatyper En datatyp kan vi i Matlab se som ett sätt att lagra data/tolka en variabels värde. I många programspråk anger programmeraren för varje variabel vilken sorts data (datatyp) den ska innehålla. I Matlab kan en variabel ha olika datatyp vid olika tillfällen. Data (värden) lagras som bitföljder i datorns minne. Det finns ju oändligt många tal. Egentligen skulle man därför reservera oändligt mycket plats för varje variabel. Istället har man olika datatyper, med olika minnesutrymme, för olika behov. int8 heltal 8 bitar 128..127 int16 heltal 16 bitar 32 768..32 767 int32 heltal 32 bitar 2 147 483 648..2 147 483 647 single flyttal 32 bitar ung. 3,4E 38..3,4E38 med 7 siffror double flyttal 64 bitar ung. 1,7E 308..1,7E308 med 15 siffror char tecken 16 bitar teckenkod (räcker till Unicode)

Datatyper forts. uint8 heltal utan tecken 8 bitar 0..255 uint16 heltal utan tecken 16 bitar 0..65 535 uint32 heltal utan tecken 32 bitar 0..4 294 967 295 logical inte egen datatyp Numeriska data lagras normalt som double. Man kan själv välja datatyp. d1 = 32; d2 = uint8(32); whos d1 d2 Name Size Bytes Class d1 1x1 8 double array d2 1x1 1 uint8 array

Resten av kursen Programmeringsdelen med 3 laborationer. Villkorssatser, slingor, egna funktioner, diagram och grafiskt användargränssnitt ska vi behandla. Numerikdelen sköter Peter Pohl och Kristina Gustavsson. Den handlar om metoder för att lösa ingenjörens beräkningsproblem. Kursen avslutas med ett projekt som ger möjlighet att fördjupa delarna i kombination och få betygshöjning. Titta ofta på kursens webbplats.