Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3

Relevanta dokument
Textsträngar från/till skärm eller fil

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

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

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

TAIU07 Matematiska beräkningar med Matlab

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

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

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

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

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

Variabler och konstanter

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

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

Instruktion för laboration 1

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

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

2 februari 2016 Sida 1 / 23

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

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

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

Introduktion till MATLAB

MMA132: Laboration 2 Matriser i MATLAB

TSBB14 Laboration: Intro till Matlab 1D

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

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

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

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

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

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

Planering Programmering grundkurs HI1024 HT 2014

TANA17 Matematiska beräkningar med Matlab

Instruktion för laboration 1

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

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

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

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

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

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

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

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

TANA17 Matematiska beräkningar med Matlab

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

MMA132: Laboration 1 Introduktion till MATLAB

4.3. Programmering i MATLAB

Sanningar om programmering

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

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

TANA17 Matematiska beräkningar med Matlab

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

Matlabövning 1 Funktioner och grafer i Matlab

Sanningar om programmering

Planering Programmering grundkurs HI1024 HT TIDAA

Matlabövning 1 Funktioner och grafer i Matlab

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

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

Linjär algebra med tillämpningar, lab 1

Matriser och vektorer i Matlab

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

729G04 Programmering och diskret matematik. Föreläsning 7

Kort om programmering i Matlab

TAIU07 Matematiska beräkningar med Matlab

Kort om programmering i Python

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

Beräkningsverktyg HT07

Matriser och linjära ekvationssystem

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

TANA17 Matematiska beräkningar med Matlab

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

[] Arrayer = Indexerad variabel

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Programmeringsteknik med C och Matlab

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

TAIU07 Matematiska beräkningar med Matlab

Matematisk Modellering

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

TANA17 Matematiska beräkningar med Matlab

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

TMV156/TMV155E Inledande matematik E, 2009

C++ Slumptalsfunktioner + switch-satsen

TANA19 NUMERISKA METODER

TAIU07 Matematiska beräkningar med Matlab

F4: Datastrukturer (kap. 6 7) Komplexa tal Ö3: 5.2, 5.7, 5.14, 5.20

Filer och structer Del 2

Inledning till OpenOffice Calculator Datorlära 2 FK2005

Extramaterial till Matematik Y

Funktioner. Linda Mannila

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

Datalogi för E Övning 3

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

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

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

Planering Programmering grundkurs HI1024 HT data

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

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

Transkript:

Börja programmera Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner Läs inte avsnitt 4.2.3 2010-09-23 Datorlära, fysikexperiment - del 4 1

Jämförande uttryck 2010-09-23 Datorlära, fysikexperiment - del 4 2

Jämförande uttryck (2) 2010-09-23 Datorlära, fysikexperiment - del 4 3

Villkorssatser 2010-09-23 Datorlära, fysikexperiment - del 4 4

Villkorssatser (2) if ((a < b) & (a < c)) utför instruktionerna A else utför instruktionerna B end Innebär att om a<b och a<c så är hela utsagan sann och instruktionerna i A utförs - annars utförs instruktionerna i B if ((a == b) (a == 0)) utför instruktionerna A end Innebär att om a=b eller a=0 så är utsagan sann och A utförs. 2010-09-23 Datorlära, fysikexperiment - del 4 5

2010-09-23 Datorlära, fysikexperiment - del 4 6

Övning 1 Skriv en programsnutt som skriver ut Träff! om ett slumptal mellan 0 och 5 är större än 2 men mindre än eller lika med 4 annars Bom!. Skriv även ut slumpvärdet avrundat till närmaste heltal. Tips: 1. Ett slumptal mellan 0 och 1 fås med kommandot rand. 2. Hur får du då ett slumptal mellan 0 och 5? 3. Använd funktionen disp( din text ) för att skriva ut. 4. Använd funktionen num2str(tal) för att konvertera tal (ditt avrundade slumptal) till en textsträng. 5. Sätt samman utskriften på detta sätt (mer om detta senare): 6. disp([ Slumptalet är num2str(tal) : Träff! ]) 2010-09-23 Datorlära, fysikexperiment - del 4 7

Loopar 2010-09-23 Datorlära, fysikexperiment - del 4 8

Loopar (2) 2010-09-23 Datorlära, fysikexperiment - del 4 9

Övning 2 Komplettera ditt tidigare program med slumptal på så sätt att du beräknar 10 000 slumptal mellan 0 och 5 och räknar antalet träffar du får. Tips: 1. Du skall inte skriva ut Träff! eller Bom! denna gång! 2. Skriv ut det totala antalet träffar endast. 3. Det är lämpligt att införa en räknare som initieras till 0 innan loopen. 4. Testkör programmet med ett fåtal loopar i början! 5. Är antalet Träff det du förväntar dig? 2010-09-23 Datorlära, fysikexperiment - del 4 10

Funktioner Vi har redan använt en del fördefinierade funktioner som sin, sqrt, disp, sum etc. Egna funktioner skapas i makrofiler (m-filer) Alla funktioner börjar med definitionen function <utdata> = <namn>(<indata>) Exempel: medelvärdet av data i vektorn x. function res = medel(x) % Beräkna medelvärdet av talen i vektorn x res = sum(x)/length(x); x är indat=argumentet, res är utdata=returvärdet. Funktioner definieras i en makrofil med samma namn som funktionen: medel.m. 2010-09-23 Datorlära, fysikexperiment - del 4 11

Funktioner (2) Fler än ett argument Exempel: räkna ut värdet av en matematisk funktion function y = func(a,b,c) y = a*sin(pi*b)^c Anrop med tre argument func(1.2, 3, 2) Fler än ett returvärde function [m v] = stat(x) m = sum(x)/length(x); v = sum((x - m).^2/(length(x) 1); 2010-09-23 Datorlära, fysikexperiment - del 4 12

Funktioner (3) Antalet argument till funktionen kan variera Funktion nargin anger antalet givna argument Exempel: evaluera polynom upp till graden 2 function f = polynom(x,a,b,c) f = a; if (nargin>2) f = f + b*x; end if (nargin>3) f = f + c*(x.^2); end Funktionen kan nu anropas med 2, 3 eller 4 argument >> polynom(2,3) -> 3 = 3 >> polynom(2,3,1) -> 3+1*2 = 5 >> polynom(2,3,1,4) -> 3+1*2+4*2^2 = 21 2010-09-23 Datorlära, fysikexperiment - del 4 13

Funktioner (4) Att avsluta en funktion Kommandot return avslutar funktionen direkt Exempel: felhantering function f = polynom(x,a,b,c) if (nargin<2) disp( Anropa med minst 2 argument ); return end f = a; if (nargin>2); f = f + b*x; end if (nargin>3); f = f + c*(x.^2); end Se även kommandot break som kan användas i slingor Notera kompaktifieringen av koden ovan 2010-09-23 Datorlära, fysikexperiment - del 4 14

Programstruktur Funktioner eller makron? Till en laboration görs vanligen en makrofil med Mätdata Enklare uträkningar Utskrifter och plottar Anropa egna funktioner Funktioner definieras lämpligen för standardiserade beräkningar Beräkning av specifik funktion, t.ex. fakultet, poisson För kurvanpassning Observera att variabler, inklusive argument och returvaribler i en funktion är lokala! Funktionen dbstep kan användas för att sätt debugga en m-fil. Läs mer om debuggern i kapitel 13 i kompendiet vid behov. 2010-09-23 Datorlära, fysikexperiment - del 4 15

Övning 3 Instuderingsfrågor 2 Gör följande uppgifter ur kompendiet (ComsolScript 1.3) Uppgift 3.9 Uppgift 3.8 Uppgift 4.3 Uppgift 4.4 Uppgift 4.5 2010-09-23 Datorlära, fysikexperiment - del 4 16

Kort om matriser Matriser är tabeller av tal Exempel: en vektor med dimensionen 1 x 3 (1 rad, 3 kolumner) >> x = [1.2 4.5 9.0] Exempel: en vektor (matris) med dimensionen 2 x 3 >> x = [1.2 4.5 9.0; 11-1 1] Exempel: en vektor (matris) med dimensionen 3 x 3 >> x = [1.2 4.5 9.0; 11-1 1; 0 2 0] Elementen hämtas och ändras med index: x(r,k) där r = radnummer och k = kolumnnummer. T.ex. >> x(1,2) = 4.5; En hel rad eller kolumn kan ändras: >> x(1,1:3) = [10 20 30]; eller plockas ut: >> rad3=x(3,1:3); (=[0 2 0]) Operationer - elementvisa: + -.*./.^ Produkten av två vektorer [a b c]*[d e f]' = a*d + b*e + c*f 2010-09-23 Datorlära, fysikexperiment - del 4 17

C» % Formaterad och oformaterad input/output av data C» format short Formaterad I/O C» disp(['1/7 = ' num2str(x)]) 1/7 = 0.14286 % 5 värdesiffror % num2str kan formatera output C» % Funktionen input C» input('a') % input kräver minst ett argument a123 % otydlig inputsignal ans = 123 C» input('a = ') % ger tydligare inputsignal a = 4 ans = 4 C» input('ange ett tal: ') Ange ett heltal: 123 ans = 123 % att föredra C» txt=input('skriv en text: ','s') >> 123 % detta är ett tal men txt = % txt är nu inte ett tal 123 C» txt=input('skriv en text: ') >> '123' % input ser en textsträng på input txt = 123 C» disp(['1/7 = ' num2str(x,'%10.4f )]) 1/7 = 0.1429 % 4 värdesiffror C» disp(['1/7 = ' num2str(x,'%10.14f ')]) 1/7 = 0.14285714285714 % 14 värdesiffror C» disp([num2str(x,'1/7 = %20.4f )]) % formatera i tabellform x= 0.1429 C» disp([num2str(x,'1/7 = %20.14f )]) 1/7 = 0.14285714285714 C» disp([num2str(x,'1/7 = %20.18f )]) 1/7 = 0.142857142857142849 % de 2 minst signifikanta siffrorna % är felräknade (datorn har begränsad % precision). % Det kan ibland vara en fördel att skriva ut resultatet i en textsträng C» % Funktionen sprintf % konverterar tal till text C» txt=sprintf('1/7 = %20.18f,x); % formatet först sedan variabeln C» disp(txt) 1/7 = 0.142857142857142849 C» txt=sprintf('1/7 = %10.6f,%15.6f ',x,x/10000) txt = 1/7 = 0.142857, 0.000014 % otillräcklig precision f -> g format C» % Funktionen num2st r% konverterar tal till text C» x=1/7 x = 0.1429 % endast 4 värdesiffror C» txt=sprintf('1/7 = %10.6f,%15.6g ',x,x/10000) txt = 1/7 = 0.142857, 1.42857e-005 C» 2010-09-23 Datorlära, fysikexperiment - del 4 18

Övning 4 Spara dessa data i filen datafil1.txt 1 2 3 0.1 0.2 0.3-1 -2-3 Läs filen med: C» h=fopen('datafil1.txt') % öppna filen C» data=fread(h) % läs filen med fread C» close(h) % stäng filen Läs filen med: C» data=fscanf(h,'%f') % använd fscanf istället 2010-09-23 Datorlära, fysikexperiment - del 4 19

Spara dessa data i filen datafil1.txt 1 2 3 0.1 0.2 0.3-1 -2-3 Om denna fil läses med C» h=fopen('datafil1.txt') % öppna filen C» data=fread(h) % läs filen C» close(h) % stäng filen kommer data att innehålla ascii-koden för tecknen 1 <blank> 2 etc. C» a=fread(h) a = 49 = 1 32 = <blank> 50 32 51 13 = carriage return 10 = line feed 48 = 46 = punkt fread läser binära data och skall inte användas i detta sammanhang (endast om filen är skriven med fwrite). C» data=fscanf(h,'%f') % använd fscanf data = 1 2 3 0.1000 0.2000 0.3000-1 Data på fil C» data=fscanf(h,'%f',[3 inf]) % formatera input data = 1 0.1000-1 2 0.2000-2 3 0.3000-3 C» C» datb=data' datb = 1 2 3 0.1000 0.2000 0.3000-1 -2-3 C» C» line=fgetl(h) % fgetl läser en rad i taget line = 1 2 3 % men line är en textsträng C» line=fgetl(h) line = 0.1 0.2 0.3 C» line=fgetl(h) line = -1-2 -3 C» num=str2num(line) % str2num konverterar till tal num = 1 2 3 C» line=fgetl(h) % strread kan också användas line = 0.1 0.2 0.3 C» data=strread(line) data = 0.1000 0.2000 0.3000 2010-09-23-2 Datorlära, fysikexperiment - del 4 20-3 % Olämplig struktur i data-vektorn