Øvingsforelesning i Matlab (TDT4105) Øving 1. Frist: 11.09. Tema: matematiske uttrykk, variabler, vektorer, funksjoner. Benjamin A. Bjørnseth 1. september 2015
2 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale
3 Kahoot Oppvarming!
4 Øvingsopplegget Mål: relevant trening i fagets pensum før eksamen Litt teori Matlab Krever registrering på http://itgk.idi.ntnu.no
5 Øvingsopplegget Tilgjengelige datamaskiner med Matlab på datasal Kan også løses på egen datamaskin Spør orakeltjenesten om installasjon. Potensielt via remote desktop til datasalmaskiner: ts-stud11.idipc.idi.ntnu.no. Øvingene må godkjennes av studass på datasal før frist Kan ikke godkjennes elektronisk Besvarelsen må forsvares på datasal Studass vil gi dere veiledning Piazza kan også brukes til spørsmål
6 Øvingsopplegget 1. Registrer deg på itgk.idi.ntnu.no 2. Du får en tilfeldig valgt studass 3. Studass sender deg epost om hvor og når du skal møte for hjelp og godkjenning. 4. Møt opp på studasstimene og få godkjent før fristen Nytt av året: kan også levere digitalt frem til faktisk frist på fredag, og forsvare besvarelsen for studass innen onsdag uka etter.
7 Nettsider itgk.idi.ntnu.no Øvinger, foiler, beskjeder, pensum, annen info. piazza.com Spørsmål og svar.
8 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale
9 Tidspunkt Øvingsforeleseninger i Matlab Tirsdag 10.15-12.00 (parallell M1) Onsdag 12.15-14.00 (parallell M3) Torsdag 12.15-14.00 (parallell M2) Hold deg til din parallell Men det finnes altså backup
10 Målgruppe De som ikke synes det er kjempelett. Vi prøver å unngå dypdykk utenfor pensum. Vanskelige spørsmål mottas med takk (men det er mulig de ikke blir besvart før etter timen)
11 Innhold i øvingsforelesningene (Gå gjennom løsning på forrige øving) Hvis relevant - etter hvert også om ønskelig Gå gjennom oppgaver som bruker konsept som trengs for å løse neste øving. Ikke fokus på teori Fullt fokus på programmering Ta med egen PC!
12 Filosofi bak innhold Teori kan man lese i boka Programmering må man øve på Men øvelse gjør mester! Alle kan lære dette Tiden er knapp, og interessen muligens variabel Vil bruke timene til å gi to timer ekstra praksis i uka.
12 Filosofi bak innhold Teori kan man lese i boka Programmering må man øve på Men øvelse gjør mester! Alle kan lære dette Tiden er knapp, og interessen muligens variabel Vil bruke timene til å gi to timer ekstra praksis i uka. Med mindre teori blir etterspurt Kom gjerne med innspill (finnes tilbakemeldingsskjema på itgk.idi.ntnu.no). Timene er til for deres hjelp
13 Øvelse! Kan ikke sies for ofte, jo mer du prøver jo mer lærer du. Det som er fint med Matlab, er at det er veldig lett å prøve! Det verste som kan skje, er at programmet ikke fungerer.
14 Problemressurser Problemressurs #1: Øvinger Ikke fokuser på minimum, vær så snill :) Problemressurs #2: Oppgaver i læreboka Problemressurs #3: https://projecteuler.net/ Problemressurs #4: http://coderbyte.com Problemressurs #5: http://www.reddit.com/r/dailyprogrammer
15 Usikker på Matlab? 1. Skriv noe (hva som helst) i kommandovinduet Gjerne med utgangspunkt i bok, foiler og øvingstekst Ha en forventning til hva som skal skje 2. Prøv å forstå feilmeldingen Bruk help Spør på piazza Google feilmeldingen Spør studass 3. Prøv å fikse feilen fra feilmeldingen Bruk help Spør på piazza Spør studass 4. Tada!
16 Angående studassbruk Studass er ikke bare på sal for å godkjenne Planlegg gjerne å jobbe med øvingen på sal til saltider Kanskje kan du legge all ITGK-jobbing til saltider? Det er travelt de siste timene Bør være klar for innlevering på dette tidspunktet
17 Angående mentalitet Programmering handler i hovedsak ikke om programmeringsspråket men om problemløsning Oppgave: Løs problem vha programmering. Feil fokus Rett fokus
18 Oversikt Praktisk informasjon Om øvingsforelesninger Øving 1-materiale
19 Matlab syntaks Ikke så mye problemløsning enda Man må vite hva en hammer er før man kan bygge hus
19 Matlab syntaks Ikke så mye problemløsning enda Man må vite hva en hammer er før man kan bygge hus (Start Kahoot!)
20 Matteuttrykk Operatorer +, - 1 + 6-7 = 1 + 6 7 = 0
20 Matteuttrykk Operatorer +, - 1 + 6-7 = 1 + 6 7 = 0 *, / 2 * 3 / 4 = 2 3 4 = 1.5
20 Matteuttrykk Operatorer +, - 1 + 6-7 = 1 + 6 7 = 0 *, / 2 * 3 / 4 = 2 3 4 = 1.5 ^ 2^3 = 2 3 = 8
20 Matteuttrykk Operatorer +, - 1 + 6-7 = 1 + 6 7 = 0 *, / 2 * 3 / 4 = 2 3 4 = 1.5 ^ 2^3 = 2 3 = 8 Presedens Hva regnes ut først Parenteser regnes ut aller først
21 Eksempler 2 + 2
21 Eksempler 2 + 2 4
21 Eksempler 2 + 2 4 2 + 2 * 3
21 Eksempler 2 + 2 4 2 + 2 * 3 8
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2)
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4 16
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4 16 2 ^ 3+1
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4 16 2 ^ 3+1 9
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4 16 2 ^ 3+1 9 2^(3 + 1)
21 Eksempler 2 + 2 4 2 + 2 * 3 8 (2 + 2) * 3 12 3 * 4 / 2 6 3 * (4 / 2) 6 2^4 16 2 ^ 3+1 9 2^(3 + 1) 16
22 Eksempeloppgave 1. Hvor mange Fahrenheit tilsvarer 20 C? Formelen er 9 celsius + 32 5 2. Hva er stigningstallet til linjen gjennom (1, 3) og (3, -7)? Formelen er y 2 y 1 x 2 x 1
22 Eksempeloppgave 1. Hvor mange Fahrenheit tilsvarer 20 C? Formelen er 9 celsius + 32 5 2. Hva er stigningstallet til linjen gjennom (1, 3) og (3, -7)? Formelen er y 2 y 1 x 2 x 1 3. Kahoot spørsmål 1-3
23 Variabler Navngitte verdier Navn av bokstaver, tall, og understrek. Kan slå opp verdien ved å skrive navnet Kan siden endre oppslaget
24 Variabeltilordning Syntaks: <variabelnavn> = <uttrykk> 1. Først evalueres uttrykket 2. Deretter opprettes variabeltilordningen
25 Variabeltilordning (Strengt tatt altså navngitt minne)
26 Eksempeloppgave Opprett variabelen radius med verdien 3 Regn ut volumet av en kule med radius 3, ved å bruke variabelen radius. Formelen er 4 3 πradius3 Opprett variabelen V_kule til å holde volumet. Doble verdien av variablen V_kule. Null ut alle definerte variabler.
26 Eksempeloppgave Opprett variabelen radius med verdien 3 Regn ut volumet av en kule med radius 3, ved å bruke variabelen radius. Formelen er 4 3 πradius3 Opprett variabelen V_kule til å holde volumet. Doble verdien av variablen V_kule. Null ut alle definerte variabler. Kahoot spørsmål 4
27 Vektorer 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
27 Vektorer 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))
28 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
28 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 Kahoot spørsmål 5
29 Operasjoner på hele vektorer 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.*,./,.^)
29 Operasjoner på hele vektorer 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 Resultat [ 1, 2, 3 ].* [ 3, 2, 1 ] [ 3, 4, 3 ] [ 1, 2, 3 ].^ 2 [ 1, 4, 9 ] 12./ [ 2, 3, 6 ] [ 6, 4, 2 ]
30 Eksempeloppgave Regn ut 1 9, 2 9 og 3 9 i én operasjon Regn ut 9 1, 9 2 og 9 3 i én operasjon
30 Eksempeloppgave Regn ut 1 9, 2 9 og 3 9 i én operasjon Regn ut 9 1, 9 2 og 9 3 i én operasjon Regn ut tyngdekraften som virker på fire forskjellige astronauter på forskjellige planeter. Opprett variabelen astronautvekt = [63, 70, 83, 50] Opprett variabelen planet_g = [9.81, 3.71, 1.62, 24.79] Regn ut variabelen tyngdekraft
30 Eksempeloppgave Regn ut 1 9, 2 9 og 3 9 i én operasjon Regn ut 9 1, 9 2 og 9 3 i én operasjon Regn ut tyngdekraften som virker på fire forskjellige astronauter på forskjellige planeter. Opprett variabelen astronautvekt = [63, 70, 83, 50] Opprett variabelen planet_g = [9.81, 3.71, 1.62, 24.79] Regn ut variabelen tyngdekraft Kahoot spørsmål 6 og 7
31 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)
32 Funksjoner: unngå repetisjon Hva hvis vi trenger arealformelen flere steder? Lag en funksjon Gir òg mening som matematisk funksjon A sylinder (radius, hoyde) = 2π radius hoyde + 2π radius 2
33 Egne funksjoner Opprett ny fil funksjonsnavn.m function returverdi = funksjonsnavn(parameter1, parameter2) <kode> end
34 Oppgave 1. Opprett en funksjon for å regne ut overflatearealet av en sylinder A sylinder (r, h) = 2πrh + 2πr 2 2. Opprett en funksjon for å regne ut volumet av en sylinder V sylinder (r, h) = πr 2 h 3. Opprett en funksjon som skriver ut volumet og arealet av en sylinder Trenger ikke returverdi
34 Oppgave 1. Opprett en funksjon for å regne ut overflatearealet av en sylinder A sylinder (r, h) = 2πrh + 2πr 2 2. Opprett en funksjon for å regne ut volumet av en sylinder V sylinder (r, h) = πr 2 h 3. Opprett en funksjon som skriver ut volumet og arealet av en sylinder Trenger ikke returverdi 4. Kahootspørsmål 8
35 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>
36 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
37 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.
38 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!
39 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end Globale variabler y = 12 funksjon(12) Lokale variabler x = 12
40 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm Globale variabler y = 12 funksjon(12) Lokale variabler x = 12
41 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm (mangler semikolon) Globale variabler y = 12 Lokale variabler funksjon(12) x = 12 y = y = y = 24 24 24
42 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm Globale variabler y = 12 Lokale variabler funksjon(12) y = x = 12 y = 24 24 24 24
43 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm Globale variabler y = 12 Lokale variabler funksjon(12) x = 12 y = y = 24 24 24 24 24
44 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - 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) x = 12 y = y = 24 24 24 24
45 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm - Retur av verdier er overføring av lokale variabler til der funksjonen ble kalt. Globale variabler Lokale variabler y = 12 funksjon(12) Hva er y? x = 12 y = 24 y = 24 24 24
46 Forskjell på retur og utskrift I kommandovindu y = 12; x = funksjon(y); I fil funksjon.m function y = funksjon(x) y = x + x disp(y); fprintf( %d, y); end - Utskrift sender verdier til skjerm - Retur av verdier er overføring av lokale variabler til der funksjonen ble kalt. Globale variabler Lokale variabler y = 12 x = 24 funksjon(12) 24 x = 12 y = 24 y = 24 24 24
47 Bonus: Funksjonskall uten parenteser Sender parametrene som strenger Sammenlikn: help sum help(sum) help( sum )