Øvingsforelesning i Matlab TDT4105

Like dokumenter
Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning TDT4105 Matlab

Øvingsforelesning i Matlab (TDT4105)

Øvingsforelesning i Matlab (TDT4105)

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Øvingsforelesning TDT4105 Matlab

TDT4105 IT Grunnkurs Høst 2014

Matlab-tips til Oppgave 2

TDT4105 IT Grunnkurs Høst 2016

Noen innebygde funksjoner - Vektorisering

Øvingsforelesning TDT4105 Matlab

Noen innebygde funksjoner - Vektorisering

Bootstrapping og simulering Tilleggslitteratur for STK1100

ITGK - H2010, Matlab. Repetisjon

Matematikk Øvingsoppgaver i numerikk leksjon 5 Litt oppsummering undervegs Løsningsforslag

1. Finn egenverdiene og egenvektorene til matrisen A = 2 1 A =

TDT4110 IT Grunnkurs Høst 2012

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

MAT-INF 2360: Obligatorisk oppgave 1

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

Øvingsforelesning i Matlab (TDT4105)

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

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

Bioberegninger - notat 4: Mer om sannsynlighetsmaksimering

Bootstrapping og simulering

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

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Eksamen i TMA4123/TMA4125 Matematikk 4M/N

Matematikk Øvingsoppgaver i numerikk leksjon 9. Løsningsforslag

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Programmering i R. 6. mars 2004

Matematikk Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 4. Iver Dihle Skjervum Vit.ass. ITGK

Fasit eksamen i MAT102 4/6 2014

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Om plotting. Knut Mørken. 31. oktober 2003

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Bootstrapping og stokatisk simulering Tilleggslitteratur for STK1100

TMA4240 Statistikk Høst 2016

Øvingsforelesning i Python (TDT4110)

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

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

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Øvingsforelesning 5 Python (TDT4110)

Programmeringsspråket C Del 2

Løse reelle problemer

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

Fasit til eksamen i emnet MAT102 - Brukerkurs i matematikk II Mandag 21.september 2015

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

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

Øving 1 TMA Grunnleggende dataanalyse i Matlab

Fasit MAT102 juni 2016

TMA4245 Statistikk Høst 2016

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

x λe λt dt = 1 e λx for x > 0 uavh = P (X 1 v)p (X 2 v) = F X (v) 2 = (1 e λv ) 2 = 1 2e λv + e 2λv = 2 1 λ 1 2λ = 3

Matematikk Øvingsoppgaver i numerikk leksjon 11 Eulers metode. Løsningsforslag

Øvingsforelesning 5 Python (TDT4110)

Control Engineering. MathScript. Hans-Petter Halvorsen

Løse reelle problemer

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

Løsningsforslag øving 8, ST1301

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Informasjon Eksamen i IN1000 høsten 2017

Læringsmål og pensum. Oversikt

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

Stive differensialligninger

Punktestimator. STK Bootstrapping og simulering - Kap 7 og eget notat. Bootstrapping - eksempel Hovedide: Siden λ er ukjent, bruk ˆλ:

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

Vektorer. Dagens tema. Deklarasjon. Bruk

Dette kan selvfølgelig brukes direkte som en numerisk tilnærmelse til den deriverte i et gitt punkt.

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

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

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

Matematikk Øvingsoppgaver i numerikk leksjon 8. Løsningsforslag

START MED MATLAB. Når du starter Matlab, kommer du inn i kommandovinduet. Dersom du har versjon 6.1, ser du dette :

Høgskolen i Oslo og Akershus. a) Finn den deriverte av disse funksjonene: b) Finn disse ubestemte integralene: c) Finn disse bestemte integralene:

Løsningsforslag Eksamen S2, våren 2016 Laget av Tommy Odland Dato: 29. januar 2017

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

TMA4122/TMA4130 Matematikk 4M/4N Høsten 2010

Matematikk Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag

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

Løsningsforslag eksamen i TMA4123/25 Matematikk 4M/N

Noen MATLAB-koder. 1 Plotte en vanlig funksjon. Fredrik Meyer. 23. april 2013

Programmeringsspråket C Del 3

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Transkript:

Øvingsforelesning i Matlab TDT4105 Øving 6. Tema: funksjoner med vektorer, plotting, preallokering, funksjonsvariabler, persistente variabler Benjamin A. Bjørnseth 13. oktober 2015

2 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

3 Konsept 1. Funksjon y = f (x):

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )]

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )]

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)]

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)] Kalles vektoriserte funksjoner

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)] Kalles vektoriserte funksjoner Eksempel: sin(x)

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)] Kalles vektoriserte funksjoner Eksempel: sin(x) 2. Funksjon skalar = f (x)

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)] Kalles vektoriserte funksjoner Eksempel: sin(x) 2. Funksjon skalar = f (x) Funger uansett hvor lang x er

3 Konsept 1. Funksjon y = f (x): f (x 1 ) = [f (x 1 )] f ([x 1, x 2 ]) = [f (x 1 ), f (x 2 )] f ([x 1,..., x n]) = [f (x 1 ),..., f (x n)] Kalles vektoriserte funksjoner Eksempel: sin(x) 2. Funksjon skalar = f (x) Funger uansett hvor lang x er Eksempel: sum(x)

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx 2. Lag en vektorisert funksjon g(x) som regner ut f 2 (x)

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx 2. Lag en vektorisert funksjon g(x) som regner ut f 2 (x) 3. Lag en vektorisert funksjon h(x, i) som regner ut x i i!

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx 2. Lag en vektorisert funksjon g(x) som regner ut f 2 (x) 3. Lag en vektorisert funksjon h(x, i) som regner ut x i Estimer e ved å bruke h! i!

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx 2. Lag en vektorisert funksjon g(x) som regner ut f 2 (x) 3. Lag en vektorisert funksjon h(x, i) som regner ut x i Estimer e ved å bruke h! e(x) = i=0 xi i! i!

4 Eksempler: 1. Lag en vektorisert funksjon f(x) som regner ut 2πx 2. Lag en vektorisert funksjon g(x) som regner ut f 2 (x) 3. Lag en vektorisert funksjon h(x, i) som regner ut x i Estimer e ved å bruke h! e(x) = i=0 xi i! Tips: n! regnes i matlab vha factorial(n) i!

5 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

6 Grafikk For visualisering Plottfunksjoner: plot(xverdier, yverdier) Kan være lister, eller matriser (plott per kolonne)

6 Grafikk For visualisering Plottfunksjoner: plot(xverdier, yverdier) plot(x1, y1, x2, y2,..., xn, yn) Flere plots samtidig (kan også være punkt)

6 Grafikk For visualisering Plottfunksjoner: plot(xverdier, yverdier) plot(x1, y1, x2, y2,..., xn, yn) plot(yverdier) Typisk blir x-verdier indekser (med mindre y-verdiene er komplekse)

6 Grafikk For visualisering Plottfunksjoner: plot(xverdier, yverdier) plot(x1, y1, x2, y2,..., xn, yn) plot(yverdier) Merk: for linjeplott må alle punktene være samlet i en matrise.

7 Eksempel: sannsynlighetsfordelinger 1. Plott en standard normalfordeling for x [ 5, 5] f (x) = 1 2π e x2 2

7 Eksempel: sannsynlighetsfordelinger 1. Plott en standard normalfordeling for x [ 5, 5] f (x) = 1 2π e x2 2 2. Plott en standard eksponensialfordeling for x [ 1, 10] { e x if x >= 0 f (x) = 0 if x < 0

8 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

9 Større oppgaver 1. Les oppgavene nøye (gjerne to-tre ganger). 2. Let etter enkle utgangspunkt Skal jeg lage en funksjon? Skal jeg bare opprette en variabel? Skal jeg sette sammen en løsning i et script? 3. Fyll ut med detaljer for å få løsningen til å stemme.

10 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

11 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m

12 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m

13 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m 1. Variabel brukt som argument

14 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m 1. Variabel brukt som argument 2. Variabelnavn brukt til å lagre parameterverdi i lokalt workspace.

15 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m 1. Variabel brukt som argument 3. Variabelnavn brukt for å hente ut verdi fra lokalt workspace. 2. Variabelnavn brukt til å lagre parameterverdi i lokalt workspace.

16 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m 4. Variabelnavn brukt til å lagre returverdi etter funksjonskall. 1. Variabel brukt som argument 3. Variabelnavn brukt for å hente ut verdi fra lokalt workspace. 2. Variabelnavn brukt til å lagre parameterverdi i lokalt workspace.

17 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: Globalt workspace

18 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Globalt workspace Gjennomførelse av funksjonskallet: 1. Send verdier til funksjonen (funksjonsprolog) 2. Kjør funksjonen 3. Hent eventuelt ut resultater fra funksjonen (funksjonsepilog)

19 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: prolog Globalt workspace

20 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: prolog 1. Lag nytt lokalt workspace for funksjonskallet. Globalt workspace Lokalt workspace

21 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: prolog 1. Lag nytt lokalt workspace for funksjonskallet. 2. Regn ut argumentverdier Globalt workspace Lokalt workspace

22 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: prolog 1. Lag nytt lokalt workspace for funksjonskallet. 2. Regn ut argumentverdier 3. Bind parameternavn til argumentverdier i lokalt workspace Globalt workspace Lokalt workspace

23 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: selve funksjonen Globalt workspace Lokalt workspace

24 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: selve funksjonen 1. Kjør funksjonen linje for linje. Globalt workspace Lokalt workspace

25 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: selve funksjonen 1. Kjør funksjonen linje for linje. Globalt workspace Lokalt workspace

26 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: epilog Globalt workspace Lokalt workspace

27 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: epilog 1. Slå opp verdien av returverdivariabelen i funksjonens lokale workspace Globalt workspace Lokalt workspace

28 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: epilog 1. Slå opp verdien av returverdivariabelen i funksjonens lokale workspace 2. Bind variabelnavn til variabel for lagring av resultat til verdien fra funksjonen. Globalt workspace Lokalt workspace

29 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: epilog 1. Slå opp verdien av returverdivariabelen i funksjonens lokale workspace 2. Bind variabelnavn til variabel for lagring av resultat til verdien fra funksjonen. 3. Slett det lokale workspacet. Globalt workspace

30 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m Gjennomførelse av funksjonskallet: ferdig! Globalt workspace

31 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m MERK! Navnet på lokal returverdivariabel og variabel brukt for lagring av resultat er helt urelatert! (men ofte heter de det samme, siden de refererer til samme type verdi.)

32 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m MERK! Navnet på funksjonens lokale parametre og variabler sendt som argument er helt urelatert! (men ofte heter de det samme, siden de refererer til samme type verdi.)

33 Funksjonskall og verdioverføring I kommandovindu I fil funksjon.m - Utskrift sender verdier til skjerm - Retur av verdier er overføring fra lokalt workspace til aktivt workspace hvor funksjonen ble kalt. Globalt workspace Lokalt workspace

34 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

35 Effektiv matlab Hvis du trenger en vektor, lag hele med en gang Raskere enn å lage vektoren litt og litt Preallokering v = zeros(1, 100); for i = 1:100 v(i) = f(i); end Uten preallokering v = []; for i = 1:100 v(i) = f(i); end

36 Eksempel 1. Lag en funksjon fibonacci(n) som returnerer en liste med fibonaccitallene 1 til n. Lag to varianter: 1.1 En med preallokering. 1.2 En uten preallokering. 2. Lag et script som måler forskjell i tid på regne ut fibonacci(1e6)

37 While-løkker og preallokering Vi vet ikke hvor mange ganger løkken kjører Det er derfor vi bruker while og ikke for Hvis vi skal produsere en vektor: hvordan kan vi vite hvor stor den må være?

37 While-løkker og preallokering Vi vet ikke hvor mange ganger løkken kjører Det er derfor vi bruker while og ikke for Hvis vi skal produsere en vektor: hvordan kan vi vite hvor stor den må være? Løsning: estimer, og øk eventuelt etter hvert. Kutt eventuelt bort ekstra elementer til slutt.

38 While-løkker og preallokering: eksempel Modifiser Newtons metode til å ikke skrive ut midlertidige resultater, men returnere dem i en vektor.

39 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

40 Konsept Egentlig ikke noe nytt konsept. (Bare litt ny syntaks) Man kan også se på en funksjon som et objekt som kan sendes rundt i koden Ikke bare en fil

40 Konsept Egentlig ikke noe nytt konsept. (Bare litt ny syntaks) Man kan også se på en funksjon som et objekt som kan sendes rundt i koden Ikke bare en fil Eksempler: integrer(funksjon, a, b) finn_nullpunkt(funksjon)

40 Konsept Egentlig ikke noe nytt konsept. (Bare litt ny syntaks) Man kan også se på en funksjon som et objekt som kan sendes rundt i koden Ikke bare en fil Eksempler: integrer(funksjon, a, b) finn_nullpunkt(funksjon) Gitt funksjonen f(x): min_funksjon = @f lager en ny variabel som referer til f(x) finn_nullpunkt(@f) kaller funksjonen finn_nullpunkt med funksjonen f som parameter.

41 Eksempel: numerisk integrering Estimer 100 0 x 2 dx ved å bruke matlabs integral-funksjon

42 Nytt konsept Kan lage funksjoner mens matlab kjører Kan brukes for funksjoner med bare ett uttrykk som regner ut resultatet.

42 Nytt konsept Kan lage funksjoner mens matlab kjører Kan brukes for funksjoner med bare ett uttrykk som regner ut resultatet. Syntaks: min_funksjon = @(<parameterliste>) = <uttrykk>;

42 Nytt konsept Kan lage funksjoner mens matlab kjører Kan brukes for funksjoner med bare ett uttrykk som regner ut resultatet. Syntaks: min_funksjon = @(<parameterliste>) = <uttrykk>; Eksempel: x_i_annen = @(x) x^2; x_i_annen(2) x_i_annen(5)

43 Eksempel: parametriserte sannsynlighetsfordelinger 1. Plott flere normalfordelinger med forskjellige forventningsverdier og varianser Eksempelbilde på wikipedia.

44 Eksempel: generisk newtons metode 1. Modifiser newtons metode til å fungere for vilkårlige funksjoner Nytt navn: finn_nullpunkt(f, df) 2. Bruk den nye newtons metode-funksjonen til å implementere kvadratrot

45 Eksempel: arrayfun Matlabfunksjonen arrayfun kaller en gitt funksjon for hvert element i en gitt liste. Bruk arrayfun til å estimere flere verdier av e x ved hjelp av h(x, i) fra tidligere eksempel.

46 Oversikt Funksjoner av vektorer Plotting Gjennomgang av øving 5 Funksjonskall Preallokering (Funksjoner som variabler) Persistente variabler

47 Konsept Brukes til å lagre verdier i en funksjons skop på tvers av funksjonskall. function y = f(x) persistent i; if isempty(i) i = 0; end i = i + 1; fprintf( f() kalt for %d. gang\n, i); y = x+x; end

48 Eksempel: bruk raskeste implementasjon Lag en funksjon raskeste_fibonacci(n), som bruker en persistent variabel til å holde den raskeste implementasjonen og regner ut svaret ved å bruke denne. 1. Opprett en lokal persistent variabel impl. 2. Hvis impl ikke er satt, ta tiden på fibonacci med og uten preallokering. 3. Bind impl til den raskeste funksjonen. 4. Returner svaret ved å kalle impl.