Beräkningsvetenskap föreläsning 2

Relevanta dokument
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

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

For-sats/slinga. Notis

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

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

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

Laboration: Vektorer och matriser

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

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

Användarhandledning Version 1.2

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

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

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

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

MMA132: Laboration 2 Matriser i MATLAB

Beräkningsverktyg HT07

Inledande programmering med C# (1DV402) Summera med while"-satsen

Matlabövning 1 Funktioner och grafer i Matlab

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

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

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

TDIU01 - Programmering i C++, grundkurs

1 Grundläggande kalkyler med vektorer och matriser

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

2 februari 2016 Sida 1 / 23

Matlabövning 1 Funktioner och grafer i Matlab

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

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

TAIU07 Matematiska beräkningar med Matlab

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

MMA132: Laboration 1 Introduktion till MATLAB

Introduktion till MATLAB Föreläsning 1

Objektorienterad programmering Föreläsning 4

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

Översikt över Visual Basic

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

TANA17 Matematiska beräkningar med Matlab

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

Linjär Algebra M/TD Läsvecka 2

Mer om linjära ekvationssystem

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

MATLAB - en kompakt introduktion av Tore Gustafsson

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

Programmeringsteknik med C och Matlab

linjära ekvationssystem.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

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

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

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

Data, typ, selektion, iteration

Föreläsning 3-4 Innehåll

Matriser och vektorer i Matlab

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträ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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

MMA132: Laboration 1 & 2 Introduktion till MATLAB

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

Programmeringsteknik I

MATLAB Matrix laboratory

Logik och kontrollstrukturer

Objektorienterad programmering i Java

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

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Tentamen i. Programmering i språket C

Klassdeklaration. Metoddeklaration. Parameteröverföring

Matriser och Inbyggda funktioner i Matlab

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

Matriser och linjära ekvationssystem

Variabler och konstanter

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Innehåll. 1 Linjärt ekvationssystem (ES) 5. 2 Grundläggande algebra 13

Grunderna i MATLAB. Beräkningsvetenskap och Matlab

Föreläsning 6: Introduktion av listor

Språket Python - Del 1 Grundkurs i programmering med Python

TDDC77 Objektorienterad Programmering

MULTIPLIKATION AV MATRISER, BASER I RUMMET SAMT FÖRSTA MÖTET MED MATRISINVERSER = = =

Matriser och linjära ekvationssystem

Vektorgeometri för gymnasister

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

TDIU01 - Programmering i C++, grundkurs

Övning2. Variabler. Data typer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TSBB14 Laboration: Intro till Matlab 1D

Tentamen i Programmering grundkurs och Programmering C

Matriser och vektorer i Matlab

MATLAB handbok Introduktion

Visual Basic, en snabbgenomgång

LÖSNINGSFÖRSLAG TENTAMEN

Föreläsning REPETITION & EXTENTA

Exempel på ett litet Ada-program

Transkript:

Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa kan det finnas en else-sats som specifierar andra förhållanden. Det Behövs ej parenteser kring villkor och ej heller klamrar runt uttrycket.! Villkoret "skilt från" skrivs inte som i java!= utan ~=. "Icke" skrivs ~. Annars är alla logiska operatorer samma som i java och andra språk. De logiska boolean-värdena lagras som 1 eller 0, inte true eller false. p = (x > 0); Här skulle ett booleanskt värde lagras, i MATLAB blir detta alltså 0 eller 1 istället.

Upprepningssatser While-satser while [[villkor]] [[sats]] [[sats]] Satserna upprepas så länge villkoret är sant, villkoret testas i början av varje loop. Denna fungerar alltså precis på samma sätt som i Java. Det kan bli många "" i slutet, precis som det kan bli många klamrar i slutet vid Java. Ett bra sätt att skriva kan vara att göra tabbar i början av varje rad för att visa vilken "nivå" det gäller. For-looper Används ofta när man vet hur många gånger en sak skall utföras. While-satser kan användas i det sammanhanget också, men en for-loop är bättre. Kan exempelvis användas för att skriva en tabell över talen 1 till 100 och kvadraterna till dessa tal. for k=1:100 disp([k k^2]) I MATLAB finns inte operatorn ++, i en for-loop adderar således MATLAB alltid ett om inget annat anges. Variabeln k existerar även utanför for-loopen. Även om man inom for-loopen sätter k till ett fix värde, exempelvis 17 kommer MATLAB ignorera detta när den kommer upp till starten av loopen igen, den vet redan innan vilket nästa värde i loopen skall vara. Man kan även ta andra steg for k=1:2:99 % Här kommer k att anta värdena 1, 3, 5,... Även negativa steg går bra for k=100:-1:1 % Antar 100, 99, 98,... I MATLAB går det alldeles utmärkt att använda flyttal (float), detta kanske dock inte är så användbart for x=0:0.1:1 Vid for-loopar finns det en liten marginal som täcker upp små små avrundnignsfel på bitnivå. Detta finns dock inte i while-satser, så det är rekommerat att använda sig av heltal i både i for-loopar och while-satser.

Arrayer (vektorer, matriser) I Java är det en sorts objekt som man måste deklarera typ och storlek innan den används. Detta behövs INTE i MATLAB. Dessa uppstår - liksom andra variabler - vid tilldelning. Om man exempelvis vill ha en imensionell array med tre element skulle detta skrivas x(1) = 2.5; x(2) = 1.4; x(3) = -1; Detta har nu skapat arrayen x [ 2.5 1.4-1 ]. Lägsta index för en array i MATLAB är 1, inte 0 som i många andra programmeringsspråk. Index skrivs inom parenteser efter arraynamnet. Om man skriver 0, negativt eller float som index för en array så kommer MATLAB visa ett felmeddelande. Längden på arrayen är vad den är för tillfället, man kan alltid tilldela nya index i arrayen. x(100) = 2; MATLAB fyller upp alla platser mellan det tidigare högsta indexet till det nyligen tilldelade med nollor. Om man på detta sätt förlänger en array godtyckligt kommer det krävas en relativt stor mängd minne som behöver lokaliseras.! Man kan bara använda existerande element i högerledet då man använder dem för att tilldela ett värde till en annan variabel. Matrisen ovan kan tilldelas på ett annat, enklare sätt x = [2.5 1.4-1]; Detta skapar en radvektor, man kan även skapa en kolonnvektor x = [2.5; 1.4; -1]; För att transponera en array skriver man en apostrof efter variabeln x = x' Tvådimensionell array a(1,1) = 2; a(1,2) = 1; a(2,1) = -3; a(2,2) = 5; Bildar den kvadratiska matrisen 2 1-3 5 En tvådimensionell är alltid kvadratisk, MATLAB fyller icke tilldelade platser i en icke kvadratiskt matris med nollor så att en kvadratisk matris bildas.

På samma sätt som ovan kan man tilldela en flerdimensionell matris på ett enklare sätt a = [2 1; -3 5]; Stora arrayer bör skapas med en funktion x = zeros(1,10000); y = ones(1,10000); a = zeros(1000,1000); a = eye(1000,1000); % 1x10000 % 1x10000 % 1000x1000 % 1000x1000 enhetsmatris Arrayoperationer A och B är n*n-arrayer x och y är n*1-arrayer (kolonnvektorer) z = A * x; % matris-vektor-multiplikation, z kommer att bli en kolonnvektor (n*n * n*1 = n*1) C = A * B; n*n-matris w = x * y; % matrismultiplikation, z kommer att bli en ny % detta är FÖRBJUDET, fel storlekar MATLAB kan användas för att lösa ekvationssystem Ax = b. Detta ekvationssystem har formellt lösningen x = A^-1b. x = A \ b; \ används istället för / för att division med en vektor anses vara multiplikation med invers, men samtidigt måste matrisen A vara till vänster. Elementvisa operationer För att addera två arrayer till varandra elementvis kan man skriva z = x + y; som motsvarar for k = 1:n z(k) = x(k) + y(k); Naturligtvis går även subtraktion att utföra. Om man däremot vill multiplicera varje element i en array med motsvarande element i en annan array används andra operatorer. z = x.* y;

som på liknande sätt motsvarar for k = 1:n z(k) = x(k) * y(k); De andra operatorerna är z = x./ y; z = x.^ y; Standardfuktionerna fungerar elementvis, man kan exempelvis ta sinusvärdet för varje element i en vektor. w = sin(x); w = sin(x) + 3 * sqrt(1./ y); Här måste y och x vara lika stora vektorer. Alla operationer utförs elementvis. Delarrayer Antag att x och y är n*1-vektorer. z = x(1:5); x(4), x(5), som kolonnvektor % z blir delvektorn x(1), x(2), x(3), z = x(1:5) + y(2:6); % Fem element ur vardera vektor adderas och bildar en ny vektor z x(9) z = x(1:2:9); % Delvektorn x(1), x(3), x(5), x(7), Detta kan användas för att exempelvis vända på en vektor. z = x(9:-1:1); Detta gäller även för matriser. A(3:6,2:7) som ger matrisen a(3,2)... a(3,7)...... a(6,2)... a(6,7) Speciellt kan man hantera bara en rad/kolonn av en matris. A(3,:) A(:,4) % Ger tredje raden % Ger fjärde kolonnen

Kolon-notation Med ett kolon kan man enkelt skapa talserier. a = 3 : 8; 6 element. % Talserie från 3 till 8, a blir en vektor med x = 0:0.01:1; % Vektor med längd 101, innehåller värdena 0, 0.01, 0.02,..., 1

Egna funktioner! Motsvarar närmast Javas static-metoder. En funktion skapas exempelvis för att beräkna sinx/x, och även returnera 1 då x = 0: function r = singx(x) if x == 0 r = 1; else r = sin(x)/x; % End of singx (Denna kommentar är onödig, men trevlig att ha för att se slutet på funktionen) Funktionen skall skrivas i en egen fil, förslagsvis med samma namn som funktionen. Alla variabler i funktionen är lokala inom funktionen och kan inte kommas åt utifrån. Funktionen anropas sedan på samma sätt som standardfunktionerna. Om man har olika namn på funktionen och namnet på filen så anropas funktionen med filnamnet (som vanligt) men den går automagiskt till den första funktionen i filen. Man kan ha fler funktioner i samma fil, men dessa kan bara användas inom filen, det är bara den första funktionen som går att anropas utifrån.