Øvingsforelesning TDT4105 Matlab - Øving 2. Pensum
Transcription
Øvingsforelesning TDT4105 Matlab - Øving 2. Pensum
Øvingsforelesning TDT4105 Matlab Øving 2. Pensum: Funksjoner, matriser, sannhetsuttrykk, if-setninger. Benjamin A. Bjørnseth 8. september 2015 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 2 Innhold Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 3 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 4 Til dere som har lastet ned foilene — Denne gangen inneholder foilene hovedsakelig støttefigurer og eksempeloppgaver. Brorparten av øvingsforelesningens innhold finnes i filen demonstrasjonsmal.m. som ligger i vedlegget. — Det er også lastet opp et ekstra slidesett med notater inkludert. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 5 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 6 Motiverende eksempel — Eksempeloppgave: Lag et program som leser inn radius og høyde for en sylinder fra en bruker, og som skriver ut sylinderens areal og volum til skjerm. V_sylinder = ______ * h A_sylinder = 2*_______ + ________ h r www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 7 Egne funksjoner — Opprett ny fil • funksjonsnavn.m function returverdi = funksjonsnavn(parameter1, parameter2) <kode> end www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 8 Eksempeloppgaver, forskjellige parametere og returverdier 1. Lag en funksjon som inverterer et tall. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 8 Eksempeloppgaver, forskjellige parametere og returverdier 1. Lag en funksjon som inverterer et tall. 2. Lag en funksjon som regner ut a + b*c www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 8 Eksempeloppgaver, forskjellige parametere og returverdier 1. Lag en funksjon som inverterer et tall. 2. Lag en funksjon som regner ut a + b*c 3. Lag en funksjon som returnerer et tall lest inn fra brukeren. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 8 Eksempeloppgaver, forskjellige parametere og returverdier 1. Lag en funksjon som inverterer et tall. 2. Lag en funksjon som regner ut a + b*c 3. Lag en funksjon som returnerer et tall lest inn fra brukeren. 4. Lag en funksjon som tar en liste studenter, og regner ut hvor mange studenter som blir igjen hvis vi deler dem inn i grupper på tre. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 8 Eksempeloppgaver, forskjellige parametere og returverdier 1. Lag en funksjon som inverterer et tall. 2. Lag en funksjon som regner ut a + b*c 3. Lag en funksjon som returnerer et tall lest inn fra brukeren. 4. Lag en funksjon som tar en liste studenter, og regner ut hvor mange studenter som blir igjen hvis vi deler dem inn i grupper på tre. 5. Lag en funksjon som returnerer en vektor med en gitt startverdi, en gitt steglengde mellom element, og et gitt antall element. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 9 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 10 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 11 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm (mangler semikolon) Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 y = 24 y = “y = 24” 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 12 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 y = 24 y = 24 24 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 13 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 y = 24 y = 24 24 24 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 14 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Retur av verdier er overføring av lokale variabler til der funksjonen ble kalt. Globale variabler y = 12 www.ntnu.no Lokale variabler funksjon(12) x = 12 y = 24 y = 24 24 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 15 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Retur av verdier er overføring av lokale variabler til der funksjonen ble kalt. Globale variabler y = 12 Lokale variabler funksjon(12) Hva er y? www.ntnu.no x = 12 y = 24 y = 24 24 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 16 Forskjell på retur og utskrift I fil “funksjon.m” I kommandovindu function y = funksjon(x) y = x + x disp(y); fprintf(‘%d’, y); end y = 12; x = funksjon(y); - Utskrift sender verdier til skjerm Retur av verdier er overføring av lokale variabler til der funksjonen ble kalt. Globale variabler y = 12 x = 24 www.ntnu.no Lokale variabler funksjon(12) 24 x = 12 y = 24 y = 24 24 24 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 17 Eksempeloppgave — Løs introduksjonseksempelet. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 18 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 19 Motiverende eksempel — Lag et program som sjekker om et brett i gamblingspillet Extra har vunnet noe gitt et brett som angir hvorvidt en rute er dekket eller ikke. Fylt brett Fylt ramme www.ntnu.no Fylt indre felt 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 20 Eksempeloppgave: tilordning 1. Sett alle de siste rundetidene til 30. 2. Sett rundetid 1 og 3 for løper 2 og 3 til 29. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 21 Eksempeloppgave — Løs introduksjonseksempelet: Lag en funksjon som angir hvorvidt et gitt Extra-brett av markeringer er et vinnerbrett eller ikke. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 22 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 23 Motiverende eksempel Lag et program som lar en generere snittkarakter for elevene i en klasse, med korrekt vekting for forskjellige fagstørrelser. Student 1 Fagvekt 2 3 ... Fag TDT4105 6 4 TXX41YY 4 ... 5 ... ... www.ntnu.no 4 ... TDT4105 7.5 TXX41YY 7.5 15 ... 7.5 ... Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 24 Eksempeloppgave — Lag de fire første kvadrattallene, gitt følgende matrise: M = [ 1, 2; 3, 4 ]; www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 25 Eksempeloppgave — Løs introduksjonsproblemet: 1. Lag en funksjon som regner snittkarakter for alle elever gitt en matrise med karakterer og en vektor med vekter (matriseoperasjon). 2. Lag en funksjon som regner snitttkarakter for én elev, gitt flere semestre med karakterer og en tilsvarende matrise med vekter (elementvis operasjon). www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 26 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 27 Motiverende eksempel — Lag et program som sjekker om et brett i gamblingspillet Extra har vunnet noe gitt en serie med trukne tall. Fylt brett Fylt ramme www.ntnu.no Fylt indre felt 11 28 45 59 75 14 22 38 71 9 13 49 66 63 7 1 2 72 19 33 67 68 44 40 20 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 28 Sannhetsuttrykk — Som matteuttrykk, bortsett fra: • Resultatet er enten true eller false — Også kalt 1 og 0 • Andre operatorer • Lavere presedens www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 29 Operatorer — Sammenlikne verdier Lik Ulik Mindre enn Mindre enn eller lik Større enn eller lik Større enn www.ntnu.no == ~= < <= >= > Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 30 Kombinasjon av sannhetsverdier — Flere operatorer Òg Eller Ikke && || ~ — Sannhetstabeller x 0 0 1 1 www.ntnu.no y 0 1 0 1 x && y 0 0 0 1 x || y 0 1 1 1 ~x 1 1 0 0 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 31 Eksempeloppgave — Anta at tilbudspris på kino er 100, tilbudspris på restaurant er 150, og budsjettet er 200. Avgjør om det blir penger til overs, ved å bruke våre tidligere definerte sannhetsvariabler. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 32 Eksempeloppgave — Hent ut alle rundetidene som er raskere enn den raskeste tiden til løper 2. — Hent tidene hvor løper tre var raskere enn løper 1. — Regn ut hvor mange ganger løper tre var raskest. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 33 Eksempeloppgave — Løs introduksjonsproblemet: lag en funksjon som lager et markert Extra-brett fra et vanlig brett og en vektor med trukne verdier, som bruker funksjonen fra matrise-seksjonen til å returnere rett svar. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 34 Oversikt Disclaimer Funksjoner Matriser Matriseoperasjoner Sannhetsuttrykk If-setninger www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 35 Motiverende eksempel Lag et program som skriver ut på hvilken måte, hvis noen, et Extra-brett er et vinnerbrett. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 36 If-setninger — Gjør forskjellige ting basert på betingelser — Gjør Matlab til mer enn en vanlig kalkulator www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 37 Eksempler if 2 + 2 == 4 disp(’Som forventet’); else disp(’Oi’); end www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 38 Eksempler x = odds_for_RBK_seier(); if x > 100 % Selv ikke RBK er saa gode x = 100; end www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 39 Eksempler if beste_flysete_ledig() book_sete_nuh(); elseif nest_beste_ledig() book_sete_imorgen(); elseif nestnest_beste_ledig() book_hvis_desperat(); else staycation_ftw(); end www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 40 Oppgaver — Skriv ut værmelding basert på temperatur. Temperatur Melding -∞ – -50 Sola har sluknet -50 – -20 Kakaovær -20 – -10 Grønn Swix FTW -10 – 10 Symmetrisk om null. 10 – 15 Trondheimssommer 15 – ∞ Varmt nok www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 40 Oppgaver — Bestem månedens diett basert på budsjetterte inntekter og utgifter Overskudd Diett >0 Ingers rugbrød 0 Kneip <0 Barkebrød www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab 40 Oppgaver — Implementer følgende mattefunksjon ( x absoluttverdi(x) = −x www.ntnu.no if x >= 0 if x < 0 Benjamin A. Bjørnseth, Øvingsforelesning TDT4105 Matlab