Alt om uke 38
Hovedtema for uke 38 er kapittel 6 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 brukematplotlib
til plotting av kurver, og til å lage filmer med animerte kurveplott.
Læringsmål for uke 38:
- Forstå de viktigste forskjellene mellom
numpy
-arrayer og lister - Kunne lage
numpy
-arrayer (spesieltlinspace
), 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.
Kommentarer om ukens undervisning
På forelesningene denne uken har vi gått gjennom de viktigste delene av ukens pensum, mens enkelte avsnitt og tema er selvstudium. Her er noen kommentarer:
- Hele første del av uken (forelesning 14 september) er teknikker og verktøy vi kommer til å bruke mye i resten av kurset. Det er viktig å forstå hovedforskjellene mellom lister og arrays, og kunne "oppskriften" for hvordan vi lager en array og fyller den med f.eks. funksjonsverdier fra en matematisk funksjon.
- Første del av plotte-delen, dvs første fram til slide 0.8 i foilene som er lagt ut, er selvstudium. Tema som introduseres her er i hovedsak de samme som ble introdusert på forelesning i gjennomgangen av oppgave 5.9, 5.10 og 5.11. Det er lurt å lese gjennom foilene som repetisjon, og for å få med seg noen få detaljer som ikke ble nevnt i oppgavegjennomgangen, f.eks. hvordan man styrer utseendet på kurver man plotter i matplotlib.
- Temaet plotting av diskontnuerlige funksjoner (foil 0.9-0.15) ble gjennomgått raskt på forelesning.
Det viktigste å få med seg fra dette eksempelet er at funksjoner med if-tester krever spesialbehandling
når vi jobber med Numpy-arrays. Vi har sett at de fleste matematiske funksjoner som tar et tall x som
input fungerer fint også hvis x er en array, så lenge vi sørger for at matematiske funksjoner importeres
fra Numpy og ikke fra
math
. Unntaket er funksjoner med if-tester, som må skrives om enten ved å bruke en for-løkke, den innebygde Numpy-funksjonenvectorize
, eller ved å skrive om if-testen til å brukenumpy.where
. - Eksempelet på slide 0.16 og 0.17 ble ikke gjennomgått. Eksempelet introduserer ingen helt nye tema, men er en
nyttig repetisjon av hvordan
eval
fungerer og hvordan dette kan kombineres med arrays og plotting. - Siste tema, om animasjoner (slide 0.19 og utover) ble bare delvis gjennomgått i forelesning. Vi gikk gjennom hoved-prinsippene for hvordan animasjoner lages, og deretter veldig raskt gjennom det første av de tre alternative metodene for å lage en animasjon. Det anbefales å gå gjennom denne koden på egenhånd som repetisjon, og også koden for alternativ 2 og 3. Alternativ 2 er nesten identisk med alternativ 1 og bør være grei å forstå som selvstudium. Alternativ 3 har en litt annen tilnærming og bruker noe mer avanserte verktøy fra matplotlib. Denne metoden vil bli gjennomgått på forelesning neste uke, enten basert på eksempelet fra foilene eller oppgave 5.39 fra Langtangen-boka. I innleveringsoppgaver med animasjoner er det helt valgfritt hvilken av de tre metodene dere bruker.