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.