Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Like dokumenter
Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Øvingsforelesning i Matlab TDT4105

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

Øvingsforelesning i Matlab (TDT4105)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

ITGK - H2010, Matlab. Repetisjon

Matlab-tips til Oppgave 2

Programmering i R. 6. mars 2004

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

Hydrostatikk/Stabilitet enkle fall

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 6 + en hel del ekstra.

Øvingsforelesning i Matlab (TDT4105)

Control Engineering. MathScript. Hans-Petter Halvorsen

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

MATLABs brukergrensesnitt

Hvordan du kommer i gang med LOGO.

GEO En Introduksjon til MatLab. For-løkker med og uten vektorer. Ada Gjermundsen. Institutt for geofag Universitetet i Oslo. 11.

Utførelse av programmer, metoder og synlighet av variabler i JSP

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

TDT4105 IT Grunnkurs Høst 2014

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Løpende strekmann Erfaren Videregående Python PDF

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

19. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 8 (del 2) Ada Gjermundsen

Utkast til: Løsningsforslag til eksamen i. Ingeniørfaglig yrkesutøvelse og arbeidsmetoder. 18.des for oppgave 1, 2 og 3

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Sprettende ball Introduksjon Processing PDF

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Oppgaver Kapittel 5 (del 2) Ada Gjermundsen

Kanter, kanter, mange mangekanter

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

SINUS R1, kapittel 5-8

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

En innføring i MATLAB for STK1100

Øvingsforelesning TDT4105 Matlab

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Plotting av data. Kapittel Plott med plot-funksjonen

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7.

Øvingsforelesning i Matlab TDT4105

MATLAB for STK1100. Matematisk institutt Univeristetet i Oslo Januar Enkel generering av stokastiske variabler

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Verden. Steg 1: Vinduet. Introduksjon

MAT 1110: Oblig 1, V-12, Løsningsforslag

Denne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

INF109 - Uke 1b

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

Matematikk Øvingsoppgaver i numerikk leksjon 3 Skript

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Steg 1: Katten og fotballbanen

Steg 1: Tekst på flere linjer

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Tall, vektorer og matriser

4. og 5. september 2012

Livsforsikring et eksempel på bruk av forventningsverdi

Matlab-intro MUS4218

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Øvingsforelesning i Matlab TDT4105

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

MAT 1120: Obligatorisk oppgave 2, H-09

PGZ - Hangman Ekspert Python Lærerveiledning

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

Straffespark Introduksjon Scratch Lærerveiledning

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

TDT4105 IT Grunnkurs Høst 2016

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Debugging. Tore Berg Hansen, TISIP

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Finne ut om en løsning er helt riktig og korrigere ved behov

HØGSKOLEN I SØR-TRØNDELAG

Øvingsforelesning TDT4105 Matlab

Skilpaddefraktaler Erfaren Python PDF

YouTube-kanal ITGK. Læringsmål og pensum

Transkript:

og Institutt for geofag Universitetet i Oslo 17. Oktober 2012

i MatLab En funksjon vil bruke et gitt antall argumenter og produsere et gitt antall resultater og

: Hvorfor Først og fremst bruker vi når vi ønsker: og å kategorisere programkode å kontrollere og organisere programmene våre å utføre beregninger av matematiske er spesielt nyttige for beregninger eller programkode du bruker ofte!

: Hvorfor og Vi har allerede brukt mange MatLab som sum(), sin(), length(), min(), plot() osv. Disse funksjonene utfører programkode vi bruker ofte Fordel: vi slipper å programmere opp koden hver gang vi bruker den Når brydde du deg sist om hva som egentlig skjer når du bruker sinus-knappen på kalkulatoren din? Det er resultatet vi er opptatt av!

: En funksjon er som en sort boks >> w = sqrt(3); input argument(s) (tallet 3) function (sqrt) output argument(s) (w= 2) og sort boks

: En funksjon er som en sort boks >> w = sqrt(3); og Når vi skriver kommandoen sqrt(3), så vet ikke vi hva som skjer inne i selve funksjonen, vi vet kun resultatet av beregningen Det samme gjelder når vi lager våre egene ; beregningene som gjøres i funksjonen er lokale og er ikke synlige

: En funksjon er som en sort boks og >> w = sqrt(3); Alle variabler definert utenfor funksjonen er ikke tilgjenglige for funksjonen De eneste variablene funksjonen kjenner til er variablene du sender inn som argumenter (i eksempelet over tallet 3) og variabler definert lokalt (inne i) i funksjonen Alle variabler du definerer inne i funksjonen er ikke kjent for MatLab utenfor funksjonen (vi vet ikke hva som defineres inne i funksjonen sqrt). Disse variablene dukker derfor ikke opp i workspace vinduet

: En funksjon er som en sort boks >> w = sqrt(3); og Variabler definert i kalles lokale variabler (de vet vi ikke hva er) Variabler definert i kommandovinduet eller i vanlige m-filer kalles globale variabler Disse variablene finnes i workspace vinduet (w er en global variabel )

: r vi og Generell form: function[ut1, ut2,..., utn]= funknavn(inn1, inn2,..., innm) Et eksempel: function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater r = sqrt(x^2+y^2); theta = atand(y/x); end

: r vi og En funksjon lagres som en egen m-fil; funknavn.m Kommandoen function må være den første kommandoen i m-filen du lagrer funksjonskoden i Kommentarer kan evt. komme før kommandoen function, men det er vanlig å sette kommentarene etter første linje Her må funksjonen lagres som cart2plr.m function [theta, r] = cart2plr(x,y)

Funksjonen trenger ikke å sende tilbake verdier. Om du ikke ønsker det kan du enten droppe hakeparentesene eller la de stå tomme : r vi og function [theta, r] = cart2plr(x,y) Hakeparentes, [ ], kalles output argument list Her skriver du hvilke variabler du vil at funksjonen skal sende tilbake I eksempelet over sendes det tilbake 2 variabler; theta og r Det er ingen begrensing på hvilken type eller hvordan størrelse det er på variabelen(variablene) funksjonen sender tilbake

: r vi og function [theta, r] = cart2plr(x,y) Navnet på funksjonen skrives etter likhetstegnet Navnet på m-filen og funksjonsnavnet må være identiske Reglene for funksjonsnavn er de samme som for variabelnavn: Navnet må begynne med en bokstav Deretter kan dere bruke bokstaver, tall og understrek i hvilken kombinasjon dere ønsker Ingen blanke tegn Ikke bruk funksjonsnavn som allerede er definert i MatLab! Bruk kommandoen help funksjonsnavn

: r vi og function [theta, r] = cart2plr(x,y) Parentes, ( ), kalles input argument list og skrives etter funksjonsnavnet Her skriver du hvilke variabler funksjonen mottar I eksempelet over mottar funksjonen to verdier, x og y Funksjonen trenger ikke å ta imot input argumenter om dette ikke er ønskelig

: r vi function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates og Den første linjen etter kommandoen function kalles H1-line Denne linjen beskriver funksjonen i en setning Det er vanlig å skrive funksjonsnavnet i store bokstaver og hvor mange variabler funksjonen skal ha som input argumenter og hvor mange variabler funksjonen returnerer

: r vi function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater og På de neste linjene kan du beskrive funksjonen din mer nøye. Dette er nyttig både for deg selv og for andre som ønsker å bruke funksjonen din senere Alle linjene med kommentarer, frem til en blank linje eller kommandoene begynner, blir skrevet ut i kommandovinduet når du skriver help funksjonsnavn

: r vi og Skriver du help cart2plr i kommandovinduet dukker beskrivelsen opp >> help cart2plr [theta, r] = cart2plr(x,y) cartesian to polar coordinates konverterer fra kartesiske koordinater til polar koordinater

: r vi og Alle linjene med kommentarer, frem til en blank linje eller kommandoene begynner, blir skrevet ut i kommandovinduet når du skriver help funksjonsnavn function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater % disse linjene kommer ikke med % naar du bruker help kommandoen

: r vi og Det er vanlig å slutte funksjonen med end... men dette er ikke nødvendig function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater r = sqrt(x^2+y^2); theta = atand(y/x); end

: r vi og Selve programmeringskoden du skriver i funksjonen bestemmes av hva du ønsker å beregne eller gjøre 3 nyttige tips: Funksjonen utfører kommandoene sekvensielt fra første programkode i funksjonen frem til kommandoen end eller til funksjonen slutter Kun input argumentene er kjent for funksjonen. Ingen av variablene definert utenfor funksjonen er kjent Alle ouput argumentene må (beregnes og) defineres i funksjonskoden

: og Når vi skal bruke er vi nødt til å vite hvor mange input argumenter som behøves og ikke minst rekkefølgen på argumentene Skal jeg bruke funksjonen cart2plr må jeg sende inn 2 verdier og x-verdien må sendes inn først Her sender jeg inn koordinatene (3,4) >> cart2plr(3,4) Legg merke til at jeg ikke trenger å kalle argumentene jeg sender inn x og y

: Jeg må også vite hvor mange variabler som blir sendt tilbake og I dette tilfellet blir det sendt tilbake 2 variabler; theta og r Skriver jeg kun >> cart2plr(3,4) ans = 53.1301 får jeg bare den første verdien tilbake; verdien til theta

: For å få verdien til både theta og r må jeg skrive og >> [theta, r]=cart2plr(3,4) theta = 53.1301 r = 5

: og Det er utolig viktig å vite hvor mange variabler som skal sendes inn til funksjonen hvor mange variabler som returneres rekkefølgen til variablene (både de som sendes inn og de som returneres) Derfor er H1-line så viktig! >> [theta, r]=cart2plr(3,4) theta = 53.1301 r = 5

: Det finnes flere varianter og Generell form: function[ut1, ut2,..., utn]= funknavn(inn1, inn2,..., innm) Eksempel: function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater r = sqrt(x^2+y^2); theta = atand(y/x); end

: Det finnes flere varianter og Hvis funksjonen kun returnerer en variabel kan vi droppe hakeparentes (vi kan også beholde dem) Eksempel: function r = hypotenus(x,y) % r = HYPOTENUS(X,Y) returnerer hypotenusverdi % funksjonen mottar to katetverdier i en trekant % og returnerer hypotenusverdien r = sqrt(x^2+y^2); end

: Det finnes flere varianter og Hvis funksjonen ikke returnerer variabler holder det å skrive function funknavn(inn1, inn2,...,innm) Eksempel: function addtwo(x,y) % ADDTWO(X,Y) legger sammen to variable % funksjonen legger sammen to tall, vektorer, matriser, o.l. % og skriver ut resultatet i kommandovinduet disp(x+y) end

: Det finnes flere varianter og Hvis funksjonen ikke returnerer variabler og heller ikke tar imot variabler kan vi skrive function funknavn Dette er veldig sjedent Eksempel: function ros % ROS gir deg litt anerkjennelse % denne kan brukes om du trenger en oppmuntring load handel.mat sound(y, Fs*2) end

: Det finnes flere varianter og Enda et eksempel: function du_er_flink % DU_ER_FLINK gir deg enda mer anerkjennelse % enn funksjonen ros % denne kan brukes om du trenger ekstra mye ros! load handel.mat sound(y, Fs*1.5) figure(1) xlim([0 1]) ylim([0 1]) farg= kgmrcg ; yindex=[1 3 1 3 1 3 1 3 1 3 1 3]; for i = 1:10 %plotter firkanter i cyan text(0.25,0.5, \bf DU ER FLINK!!, fontsize,38, Color, farg(yindex(i))) %setter gronn bakgrunnsfarge utenfor figuren %gcf betyr get current figure set(gcf, Color,farg(yindex(i)+1)) %setter magneta bakgrunnsfarge inni figuren set(gca, Color,farg(yindex(i)+2)) pause(0.2) end

: Ett eksempel og En funksjon som regner ut gjenomsnittet, minimums og maksimumsverdi av en vektor function [gjsnitt, minst, maks] = statistikk(x) % [gjsnitt, minst, maks] = STATISTIKK(X) regner ut % statistiske egenskaper til en vektor % funksjonen regner ut og returnerer % gjenomsnittet, minste verdi og storste verdi til en % vektor x gjsnitt = mean(x); minst = min(x); maks = max(x); end

: Oppgave 1 og Lag som leser inn et kronebeløp og omregner beløpet til amerikanske dollar, euro og svenske kroner. Resultatet skal funksjonen skrive ut i kommandovinduet. Omregningen er etter følgende valutakurser: 1USD = 5.7NOK 1EUR = 7.4NOK 1 SEK = 0.85NOK

: Oppgave 2 og Den daglige veksten for penger i banken kan skrives som: x n = x n 1 + p 100 360 x n 1 hvor p er årlig rente og n angir dag nr. n a) Lag, rente, som mottar antall dager pengene har stått på konto N, renten p og startbeløpet x 0. Funksjonen skal returnere x N, som viser kontobeløpet etter N dager b) Se hvor mye beløpet blir om du setter inn 100kr og lar dem stå i 720 dager med en årlig rente på 4%

i m-filer: Oppgave 6.8 i kompendiet og Om du kaster en ball vil den følge en bane gitt av formelen: f (x,θ,v 0,y 0 ) = xtan(θ) 1 2v 0 gx 2 cos 2 (θ) + y 0 der v 0 er starthastigheten (m/s), θ er vinkelen du kaster ballen i forhold til bakken, y 0 er høyden ballen kastes i (x=0) og g er tyngdeakselerasjonen (lik 9.81m/s 2 ) a) Lag som tar i mot θ, v 0 og y 0, regner ut banen til ballen og plotter resultatet. x-verdiene kan du definere i selve funksjonen.

i m-filer: Oppgave 6.8 i kompendiet forts. og b) Lag et program der du bruker funksjonen du lagde i a) og plotter banen til ballen i 3 subplot. Det første subplottet skal vise banen til ballen for 3 ulike verdier av θ, det andre subplottet skal vise banen for 3 ulike verdier av av v 0 og det tredje subplottet skal vise banen til ballen for 3 ulike verdier av y 0.

: og Kommandoen return stopper funksjonen function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater % x og y kan innholde tall eller vektorer if length(x) ~=length(y) return; end r = sqrt(x.^2+y.^2); theta = atand(y./x); end

: og Kommandoen error stopper funksjonen og skriver ut en feilmelding (som du lager) i kommandovinduet function [theta, r] = cart2plr(x,y) % [theta, r] = CART2PLR(X,Y) cartesian to polar coordinates % konverterer fra kartesiske koordinater % til polar koordinater % x og y kan innholde tall eller vektorer if length(x) ~=length(y) error( x og y er ikke samme lengde ) end r = sqrt(x.^2+y.^2); theta = atand(y./x); end