Alt om uke 4

Tema for uke 4 er kapittel 5 i læreboka, om plotting og array-beregninger (vektor-beregninger). Hovedpunktene er som følger:

  • Til nå har vi brukt lister til å ta vare på lange rekker av tall og andre datatyper. Lister er veldig fleksible, men løkker over lange lister gir treg kode. Numpy er en Python-pakke som introduserer arrayer, og vektoriserte beregninger over arrayer. Numpy-arrayer er mindre fleksible enn lister, men mye mer effektive for å gjøre store beregninger. Koden kan også ofte skrives kortere og mer lesbar.
  • Pakken matplotlib inneholder et stort antall funksjoner for plotting av ulike data. Vi skal bruke matplotlib til plotting av kurver, og til å lage filmer med animerte kurveplott.

Læringsmål for uke 4:

  • Forstå de viktigste forskjellene mellom numpy-arrayer og lister
  • Kunne lage numpy-arrayer (spesielt linspace), bruke dem i beregninger, hente ut og endre array-elementer, array-slicing, og liknende enkle operasjoner på arrayer.
  • Kunne bruke matplotlib.pyplot til å plotte en eller flere kurver, med tilhørende titler og merker, samt lage animasjoner av kurveplott.

Oppgaver gjennomgått: Vi rakk ikke gjennom alle oppgavene som var satt opp denne uken. Oppgave 4.4-4.6 ble gjennomgått, samt oppgave 5.6 og 5.9-5.11. Oppgave 4.7 er veldig lik 4.6 og regnes som selvstudium. Oppgave 5.6 er også mer egnet for selvstudium enn løsning i plenum, og oppgave 5.13 er ganske lik 5.9 (plott av en enkelt kurve), men med tre parametre som skal leses fra kommandolinjen på samme måte som i oppgave 5.10. Både oppgave 5.7 og 5.11 regnes som selvstudium, alle løsningene er lagt ut på nett. Eksempelet fra foilene, om animasjon av Gauss-funksjonen, er også lagt ut samme sted.

Foiler gjennomgått på forelesningene:

Foilene som hører til læreboka fokuserer mest på bruk av scitools for plotting. Vi bruker primært matplotlib i INF1100, og jeg har derfor laget et oppdatert foilsett for kapittel 5, hvor alle kode-eksempler er endret til å bruke matplotlib. Forskjellene er små, men viktige. I læreboka inkluderer de fleste eksemplene kode for både matplotlib og scitools. I det oppdaterte foilsetttet har følgende blitt gjennomgått:
  • Slide 1-17 Om vektorisering og numpy, samt enkel plotting i matplotlib. Alt dette er viktig stoff.
  • Slide 18-19 Dette handler mest om scitools, som ikke er viktig for kurset i høst.
  • Slide 20-23 Plotting av flere kurver i matplotlib. Dette er viktig.
  • Slide 24-25 Bruk av eval til å plotte en funksjon som oppgis på kommandolinjen. Dette er ikke veldig viktig, men et fint eksempel å se på for å forstå bruk av eval-funksjonen.
  • Slide 26-33 Om animasjoner med matplotlib. Første del (26-29), om hvordan vi kan generere og lagre mange plott som bildefiler, er viktig. Resten (30-33) handler om verktøy for å lage filmer av bildefiler. Hvilke verktøy som kan brukes avhenger av om man bruker Windows, Mac eller Linux, og bruk av disse verktøyene er ikke relevant til eksamen. De er likevel nyttige til senere ukeoppgaver, og det anbefales å teste dem ut.
  • Slide 34-42 Første del er viktig, om problemer med bruk av if-tester i vektoriserte beregninger. Dette ble delvis gjennomgått på forelesning 22 september, og resten vil bli gjennomgått 29 september. Siste del av eksempelet er mindre viktig, men er nyttig å lese for å få bedre forståelse av plotting i matplotlib.
  • Slide 43-48 om nyttige array-operasjoner. Dette er viktig, men stort sett opplisting av nyttige funksjoner, så disse foilene er selvstudium. Spesielt 43, 47 og 48 er viktige.
  • Slide 49-50 er også selvstudium. Slicing i arrayer er stort sett likt slicing i lister.
  • Slide 51-56 om todimensjonale arrayer er viktig, og vil bli gått gjennom raskt i starten av forelesningen 29 sept. Det anbefales å se på disse foilene før forelesningen, siden vi kommer til å gå veldig raskt gjennom dem på forelesningen.
  • Slide 57-61 er sammendrag av vektorisering, arrayer og plotting. Dette er (som vanlig) selvstudium.
  • Slide 62-63 A summarizing example er basert på scitools (også i læreboka), som er mindre relevant. Det anbefales i stedet å se på eksempelet animasjoner på slide 26-29, og eventuelt bytte ut funksjonen i det eksempelet med funksjonen som brukes i A summarizing example, eventuelt en annen, selvvalgt funksjon.
Av Joakim Sundnes
Publisert 23. sep. 2016 14:24