Øvingsforelesning i Matlab (TDT4105) Øving 1. Frist: 11.09. Tema: matematiske uttrykk, variabler, vektorer, funksjoner. Benjamin A. Bjørnseth 2. september 2016 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 2 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 3 Kahoot — Oppvarming! • + er dere godt i gang? www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 4 Øvingsopplegget — Mål: relevant trening i fagets pensum før eksamen — Oppgaveløsning: • Litt teori. • Matlab. — Krever registrering på http://itgk.idi.ntnu.no www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 5 Arbeidsmengde — Totalt 10 øvinger, må ha 8/10 godkjent. — To er auditorieøvinger, må ha minst én auditorieøving godkjent. — Øvingstekst og frist på http://itgk.idi.ntnu.no www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 6 Hvordan besvare øvinger — Teori og kodeforståelse: tekstsvar. — Kodeoppgaver: Matlab-kode. • Tilgjengelige datamaskiner med Matlab på datasal. • Kan også løses på egen maskin. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 7 Datasal www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 8 Hjelperessurser — Man kan få hjelp av alle studasser på datasal. • Men kan være travelt mot slutten av uka. — Vi har også et hjelpeforum på http://piazza.com www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 9 Godkjenning — Kan ikke godkjennes elektronisk. • Besvarelsen må forsvares på datasal. — Godkjenning kun av egen studass. • Teori og kodeforståelse: forklar svarene. • Kodeoppgaver: demonstrer at koden fungerer, og forklar hvordan. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 10 Kom i gang med øvingsopplegget 1. Registrer deg på http://itgk.idi.ntnu.no. 2. Du får tildelt en studass. 3. Sjekk på Min Side (http://itgrk.idi.ntnu.no/) for å se hvilke saltider du har, og hvilken sal studass sitter på. 4. Møt opp på studasstimene og få godkjent før fristen. • Kan også levere digitalt frem til faktisk frist på fredag, og forsvare besvarelsen for studass innen onsdag uka etter. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 11 Nettsider itgk.idi.ntnu.no Øvinger, foiler, beskjeder, pensum, annen info. itgrk.idi.ntnu.no Saltider og øvingsinnleveringsstatus. piazza.com Spørsmål og svar. Fordeler med Piazza: — Rask responstid. — Kan jobbe med andre ting mens man venter på svar. — Læringsutbytte i å hjelpe andre. — Muligens hjelp å få ved kvelds- og helgejobbing. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 12 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 13 Tidspunkt — Øvingsforeleseninger i Matlab • Onsdag 14.15 - 16.00 (parallell M2) • Fredag 12.15 - 14.00 (parallell M1) — Hold deg til din parallell • Men det finnes altså backup www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 14 Videoer — Tidligere år: oppgaveløsning. — I år er dette spilt inn på video. • http://itgk.idi.ntnu.no -> Matlab -> Øvingsforelesninger. — To typer video: • Kodeforståelse. • Kodeoppgaver. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 15 Mulige bruksmåter — Kan brukes på flere måter: • Bare se på alt: blir tilsvarende fjorårets øvingsforelesninger, bare mer kondensert innhold. • Prøv å løse alle oppgavene selv, og se video hvis det ikke går (anbefalt). • Se etter hjelp i videoene hvis man sliter med en øving. — Merk: definitivt ikke en substitutt for vanlige forelesninger! www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 16 Anbefaling — Oppfordrer alle til å se alt de første to ukene. — Virker kanskje enkelt, men problemer med Matlab senere skyldes gjerne: 1. Manglende erfaring. 2. Manglende forståelse av det grunnleggende. — Senere uker: gjør det du får mest ut av. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 17 Øvingsforelesningstimene — Hva så med øvingsforelesningstimene? • Løsning av forrige ukes øving. • Svar på spørsmål om innholdet i videoene. • Kanskje presentasjon av neste øving? www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 18 Angående mentalitet — Programmering handler i hovedsak ikke om programmeringsspråket • men om problemløsning — Oppgave: Løs problem vha programmering. Rett fokus Feil fokus www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 19 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 20 Føring og løsning av øvinger — Kladd løsning på papir (hvis problemløsningsoppgave). — Eksperimenter i kommandovindu med deler av løsningen. — Skriv endelig løsning i en egen fil. — Eksempelopppgave: regn ut 95 · 20 + 32. — Eksempeloppgave: regn sum av annenhvert element i vektor. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 21 Script — Noen ganger spør oppgaven bare om kommandolinjebruk. — Kan logges og spilles av igjen vha et “script”. • En linje av gangen sendes til kommandovindu. — Mulige problem: • Navnekrasj. Hva hvis vi har variabelen summer og scriptet summer.m? • Matlab finner ikke filen. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 22 Matteuttrykk — Kahoot spørsmål 1-3 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 22 Matteuttrykk — Kahoot spørsmål 1-3 — Operatorer +, - www.ntnu.no 1 + 6 - 7=1+6−7=0 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 22 Matteuttrykk — Kahoot spørsmål 1-3 — Operatorer www.ntnu.no +, - 1 + 6 - 7=1+6−7=0 *, / 2 * 3 / 4= 2·3 4 = 1.5 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 22 Matteuttrykk — Kahoot spørsmål 1-3 — Operatorer www.ntnu.no +, - 1 + 6 - 7=1+6−7=0 *, / 2 * 3 / 4= ^ 2^3 = 23 = 8 2·3 4 = 1.5 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 22 Matteuttrykk — Kahoot spørsmål 1-3 — Operatorer +, - 1 + 6 - 7=1+6−7=0 *, / 2 * 3 / 4= ^ 2^3 = 23 = 8 2·3 4 = 1.5 — Presedens • Hva regnes ut først • Parenteser regnes ut aller først www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 www.ntnu.no 4 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 www.ntnu.no 4 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 www.ntnu.no 4 8 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 www.ntnu.no 4 8 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 www.ntnu.no 4 8 12 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 www.ntnu.no 4 8 12 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 www.ntnu.no 4 8 12 6 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) www.ntnu.no 4 8 12 6 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) www.ntnu.no 4 8 12 6 6 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 www.ntnu.no 4 8 12 6 6 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 www.ntnu.no 4 8 12 6 6 16 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 2 ^ 3+1 www.ntnu.no 4 8 12 6 6 16 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 2 ^ 3+1 www.ntnu.no 4 8 12 6 6 16 9 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 2 ^ 3+1 2^(3 + 1) www.ntnu.no 4 8 12 6 6 16 9 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 23 Eksempler 2 + 2 2 + 2 * 3 (2 + 2) * 3 3 * 4 / 2 3 * (4 / 2) 2^4 2 ^ 3+1 2^(3 + 1) www.ntnu.no 4 8 12 6 6 16 9 16 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 24 Eksempeloppgave — Hva er stigningstallet til linjen gjennom (1, 3) og (3, -7)? • Formelen er www.ntnu.no y2 −y1 x2 −x1 Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 25 Variabler — Kahoot spørsmål 4 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 25 Variabler — Kahoot spørsmål 4 — Navngitte verdier • Navn av bokstaver, tall, og understrek. — Kan slå opp verdien ved å skrive navnet — Kan siden endre oppslaget www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 26 Variabeltilordning — Syntaks: <variabelnavn> = <uttrykk> 1. Først evalueres uttrykket 2. Deretter opprettes variabeltilordningen www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 27 Variabeltilordning — (Strengt tatt altså navngitt minne) www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 28 Eksempeloppgave — Opprett variabelen radius med verdien 3 — Regn ut volumet av en kule med radius 3, ved å bruke variabelen radius. • Formelen er 34 πradius3 — Opprett variabelen V_kule til å holde volumet. — Doble verdien av variablen V_kule. — Null ut alle definerte variabler. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 29 Vektorer — Kahoot spørsmål 5 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 29 Vektorer — Kahoot spørsmål 5 • For å holde en liste med verdier, kan man bruke vektorer — [1, 2, 3, 4, 5] — Kan opprettes vha kolon: 1:5 — Kan oppgi steglengde: 1:2:10 • Eksempel: radiuser = 1:10 • Hent ut radius nr. 5 — radiuser(5) • Hent ut siste radius — radiuser(end) — Evt. radiuser(length(radiuser)) www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 30 Eksempeloppgave — Lag en vektor med de fem første positive oddetallene. Lagre den i variabelen v1. — Lag en vektor med heltallene fra 10 ned til 0, i den rekkefølgen. Lagre den i variabelen v2. — Lag en vektor med tallene [0.1, 0.2, . . . , 1.0], og lagre den i variablen v3. — Summer de siste elementverdiene i vektorene v1, v2 og v3 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 31 Operasjoner på hele vektorer — Kahoot spørsmål 6 og 7 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 31 Operasjoner på hele vektorer — Kahoot spørsmål 6 og 7 — Man kan utføre aritmetiske uttrykk også med vektorer • [1, 2, 3] * 2 = [2, 4, 6] • [1, 2] + [2, 1] = [3, 3] — Til vanlig er operatorene matriseoperasjoner • Operandene må ha dimensjoner som passer • Mer om dette neste uke — For å gjøre en operasjon per element, bruk .<op> (som .*, ./, .^) — Eksempel: Uttrykk [ 1, 2, 3 ] .* [ 3, 2, 1 ] [ 1, 2, 3 ] .^ 2 12 ./ [ 2, 3, 6 ] www.ntnu.no Resultat [ 3, 4, 3 ] [ 1, 4, 9 ] [ 6, 4, 2 ] Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 32 Eksempeloppgave — Regn ut 91 , — Regn ut www.ntnu.no 9 1, 2 9 9 2 og og 3 9 9 3 i én operasjon i én operasjon Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 32 Eksempeloppgave — Regn ut 91 , — Regn ut 9 1, 2 9 9 2 og og 3 9 9 3 i én operasjon i én operasjon — Regn ut tyngdekraften som virker på fire forskjellige astronauter på forskjellige planeter. • Opprett variabelen astronautmasse = [63, 70, 83, 50] • Opprett variabelen planet_g = [9.81, 3.71, 1.62, 24.79] • Regn ut variabelen tyngdekraft www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 33 Areal av sylinder — Formel: 2πrh + 2πr 2 — Oppgave: regn ut areal for sylindrene med • radius = 3, høyde = 7 • radius = 1, høyde = 8 • radius = 9, høyde = 3 (Hint: bruk elementvise operasjoner) www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 34 Funksjoner: unngå repetisjon — Kahootspørsmål 8 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 34 Funksjoner: unngå repetisjon — Kahootspørsmål 8 — Hva hvis vi trenger arealformelen flere steder? — Lag en funksjon — Gir òg mening som matematisk funksjon • Asylinder (radius, hoyde) = 2π · radius · hoyde + 2π · radius2 www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 35 Egne funksjoner — Opprett ny fil • funksjonsnavn.m function returverdi = funksjonsnavn(parameter1, parameter2) <kode> end www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 36 Oppgave 1. Opprett en funksjon for å regne ut overflatearealet av en sylinder • Asylinder (r , h) = 2πrh + 2πr 2 2. Opprett en funksjon for å regne ut volumet av en sylinder • Vsylinder (r , h) = πr 2 h 3. Opprett en funksjon som skriver ut volumet og arealet av en sylinder • Trenger ikke returverdi www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 37 Finnes mange funksjoner fra før — sum(), length(), min(), max(), mean(), median() — isprime() — disp(), input(), fprintf() — sqrt(), nthroot() — log(), log10(), sin(), cos(), atan() — integral() — Vil presentes etter behov. — Bruk help <funksjonsnavn> www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 38 Om innebygde funksjoner og variabelnavn — Vær forsiktig med hva du kaller dine variabler — Eksempel: hva skjer her? %% I kommandovinduet disp(sum(1:5)) % Skriver ut 15 sum = 1 + 2 + 3 disp(sum(1:5)) % Huffda clear sum % Løser problemet www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 39 Innputt og utputt — For å kommunisere med brukeren av programmet, kan vi bruke funksjonene disp() og input() — Oppgave: lag en funksjon som leser inn et tall fra brukeren, og skriver ut det dobbelte. — Oppgave: lag en funksjon som ber brukeren skrive inn høyden og radiusen til en sylinder, og som skriver ut volumet og arealet til sylinderen. www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 40 Globale og lokale variabler — Variabler laget i en funksjon eksiterer bare for den funksjonen. function y = f(x) % Lag lokal variabel ’x’ z = x + x; % Lag lokal variabel ’z’ y = z * z; % Lag lokal variabel ’y’ end %% I kommandovinduet x = 1; y = 2; z = 3; disp(input(’Skriv inn et tall’)); disp([x, y, z]); % Skriver ut "1 2 3" - de lokale % variablene til f er ikke tilgjengelige! www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105) 41 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 i Matlab (TDT4105) 42 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 i Matlab (TDT4105) 43 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 i Matlab (TDT4105) 44 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 i Matlab (TDT4105) 45 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 i Matlab (TDT4105) 46 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 i Matlab (TDT4105) 47 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 i Matlab (TDT4105) 48 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 i Matlab (TDT4105) 49 Bonus: Funksjonskall uten parenteser — Sender parametrene som strenger — Sammenlikn: • help sum • help(sum) • help(’sum’) www.ntnu.no Benjamin A. Bjørnseth, Øvingsforelesning i Matlab (TDT4105)
© Copyright 2024