IN-KJM1900 Forelesning 3

Like dokumenter
IN-KJM1900 Forelesning 4

IN-KJM1900 Forelesning 1

En enkel forsuringsmodell

Front page. 1.1 What is printed?

UNIVERSITETET I OSLO

MAT-INF 1100: Obligatorisk oppgave 1

ProFag Realfaglig programmering

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Om plotting. Knut Mørken. 31. oktober 2003

MAT-INF 1100: Obligatorisk oppgave 1

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

UNIVERSITETET I OSLO

Oppgave 1.6 Hva skrives ut? Riktig svar: The total rainfall from June to August was 54.00

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Viktig informasjon. 1.1 Taylorrekker. Hva er Taylor-polynomet av grad om for funksjonen? Velg ett alternativ

UNIVERSITETET I OSLO

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

a) Ved numerisk metode er det løst en differensiallikning av et objekt som faller mot jorden. Da, kan vi vi finne en tilnærming av akselerasjonen.

UNIVERSITETET I OSLO

IN1000 Obligatorisk innlevering 7

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

UNIVERSITETET I OSLO

Eksamensoppgave i TMA4135 Matematikk 4D

Differansemetoder for to-punkts randverdiproblemer. Innledning. Anne Kværnø

Forside. 1 Hva skrives ut?

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Løse reelle problemer

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Kap 2: Løkker og lister

Obligatorisk oppgave nr 3 FYS Lars Kristian Henriksen UiO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer IAI 21899

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

1. Finn egenverdiene og egenvektorene til matrisen A = 2 1 A =

Løsningsforslag Eksamen S2, våren 2017 Laget av Tommy O. Sist oppdatert: 25. mai 2017

Eksempel 1: Bestemmer om tallet som skrives inn er et partall eller et oddetall side 12

Oppsummering fra sist

Projeksjoner av vektorer Analyse av værdata

TDT4127 Programmering og Numerikk

Innleveringsoppgave 3

MAT-INF 1100: Obligatorisk oppgave 2

Øvingsforelesning 5 Python (TDT4110)

Python: Funksjoner og moduler Kapittel

TDT4110 IT Grunnkurs Høst 2015

TDT4110 IT Grunnkurs Høst 2012

Generell informasjon om faget er tilgjengelig fra fagets nettside, og for øvinger brukes canvas.

Kap 02 Posisjon / Hastighet / Akselerasjon 2D - Bevegelse langs en rett linje

Øvingsforelesning 1 Python (TDT4110)

Oppgave 2: def a (x): x = x + 1 y = 1 + x * 2

Eksamensoppgaver 2014

Oppgave 2: def a (x): x = x + 1 y = 1 + x * 2

Øvingsforelesning 5 Python (TDT4110)

Finne ut om en løsning er helt riktig og korrigere ved behov

INF1000 Eksamen 2014 (modifisert)

Reelle tall på datamaskin

Matematikk og fysikk RF3100

Oblig 3 i FYS mars 2009

MAT1030 Diskret Matematikk

MAT-INF 1100: Obligatorisk oppgave 1

Noen innebygde funksjoner - Vektorisering

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Mattespill Nybegynner Python PDF

Noen innebygde funksjoner - Vektorisering

UNIVERSITETET I OSLO

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Dette kan selvfølgelig brukes direkte som en numerisk tilnærmelse til den deriverte i et gitt punkt.

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Finne ut om en løsning er helt riktig og korrigere ved behov

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Løysingsforslag for oppgåvene veke 17.

INF1000 Eksamen 2014 (modifisert)

Sortering i Lineær Tid

Øvingsforelesning 3 Python (TDT4110)

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

MAT Oblig 1. Halvard Sutterud. 22. september 2016

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Introduksjon til objektorientert programmering

Forkurs i informatikk Python. Andreas Færøvig Olsen

MAT-INF 1100: Obligatorisk oppgave 1

Front page. 1 Lists. Which one of these does not result in a list of length 4? 07/12/2017 Prøveeksamen IN1900 og IN-KJM1900 H17

MEK1100, vår Obligatorisk oppgave 1 av 2. Torsdag 28. februar 2019, klokken 14:30 i Devilry (devilry.ifi.uio.no).

Øvingsforelesning i Python (TDT4110)

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Eksamensoppgave i TMA4135 Matematikk 4D

EKSAMEN I NUMERISK MATEMATIKK (TMA4215)

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

MAT1030 Diskret matematikk

Bildebehandling med Python og EzGraphics

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Øvingsforelesning i Python (TDT4110)

MAT1030 Plenumsregning 1

Simuleringseksempel. Vi ønsker å simulere følgende system (vanntank) i MathScript: Matematisk modell:

Transkript:

IN-KJM1900 Forelesning 3 Simen Kvaal Onsdag 8/11/2017 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 1 / 43

Dagens plan 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 2 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 3 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 4 / 43

Beskjeder 1 Trykkfeil i seksjon 2.2 om sulfattransport: C A = δm A /δa Riktig formel: C A = M A /A og C B = M B /B Last ned siste versjon i dag! 2 Denne uken: Samretting flyttet til Vilhelm Bjerknes hus: IT-auditorium 3 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 5 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 6 / 43

Filer til hjelp birkutil.py Oppgave 1 2 test_birkutil.py Oppgave 1 2 plot_concentrations.py Oppgave 1 euler.py Oppgave 3 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 7 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 8 / 43

Eulers metode Matematikken kan være abstrakt: difflikninger, deriverte,... Men vi ender alltid opp med en for-løkke som regner ut en størrelse y j+1 på tid j + 1 basert på forrige tid y j. # Dette er pseudokode y[0] = y0 for j in range(t_steps): y[j+1] = y[j] + h * f(y[j], t[j]) Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 9 / 43

Intuisjon om Eulers metode: Penger på konto La y j er pengebeholdningen på brukskontoen din ved måned j, der j = 0 er 1. januar, j = 1 er 1. februar, osv. Arbeidsinntekter, renteinntekter, og utgifter hver måned j: Renteinntekter: p prosent renter Arbeidsinntekter: a j Utgifter: u j Hva er y j+1? Eulers metode! δy j = py j /100 + a j u j Dette gir en formel: y j+1 = y j + δy j = y j + py j /100 + a j u j. Tidssteget er her h = 1 (mnd). I andre sammenhenger: et regnskap som gir, feks, A j+1 når A j er gitt. Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 10 / 43

Pseudokode for bankkonto # Dette er pseudokode y[0] = y0 # startverdien på kontoen p = 0.25 # a er gitt som vektor # u er gitt som vektor for j in range(t_steps): delta_y = p * y[j] / 100.0 + a[j] - u[j] y[j+1] = y[j] + delta_y Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 11 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 12 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 13 / 43

Oversikt over reservoarmodellen P E A Beskriver: Transport av jordvæske fra nedbør til bekk A A min A Q A To reservoarer A og B A sig Q A (1 A sig ) Q A Hovedukjente: vannstand A(t) og B(t) E B Q over Ytre påvirkninger: nedbør P(t) og temperatur T(t) Bmax B B Måleenheter: Vannstand: mm. Tid: dag. B min Q B Q Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 14 / 43

Oversikt over reservoarmodellen, forts. P E A A og B er sammenkoblet av strømmer A A Avrenning til bekk med strøm Q(t). Fysiske målinger gjort her. A min A sig Q A Q A (1 A sig ) Q A Strømmer inn og ut av reservoarene: P(t), E A (t), E B (t), Q A (t), Q B (t),... E A, E B : evapotranspirasjon. Fordampning og opptak i vegetasjon. E B Bmax B B min Q over B Q B Måleenhet for strøm: mm/dag. Q Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 15 / 43

Vannbudsjett A P E A Betrakt knøttlite tidsintervall [t, t + δt], A A δa = δt P δt E A δt Q A A min Q A E A er en funksjon av T og A { 0.2 T A > 1mm E A = 0 ellers E B Bmax B A sig Q A B Q over (1 A sig ) Q A Q A er en funksjon av A, B min Q B Q A = K A max(a A min, 0), K A = 0.8 dag 1, A min = 13 mm Q Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 16 / 43

Vannbudsjett B Betrakt knøttlite tidsintervall [t, t + δt], δb = δt A sig Q A δt E B δt Q B δt Q over P Ikke alt vannet i Q A renner over i B, noe går rett over i bekken: E A A A A sig Q A B A min Q A A sig en funk. av B (1 A sig ) Q A Q 0 A sig 1 E B er en funksjon av T, A og B { 0.2 T A 1mm og B min < B B max E B = 0 ellers Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 17 / 43 E B Bmax B B min A sig Q A B Q over Q B (1 A sig ) Q A Q

Vannbudsjett B, forts. Betrakt knøttlite tidsintervall [t, t + δt], E A P δb = δt A sig Q A δt E B δt Q B δt Q over Strøm ut fra B: A A min A Q A Q B = K B max(b B min, 0), A sig Q A (1 A sig ) Q A E B K B = 0.045 dag 1, B min = 40 mm Q over B har også en maksverdi B bmax ( bøtta er full ) Bmax B B min B Q B Q over tømmer det overskytende rett i bekken, Q Q over = max[δt 1 (B B max )+A sig Q A Q B E B, 0]. Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 18 / 43

Avrenning i bekk P E A Bidragene til bekken: A A Q = (1 A sig )Q A + Q B + Q over A min Q A Alle leddene er funksjoner av A, B, og P, T E B A sig Q A Q over (1 A sig ) Q A Målinger er gjort i bekken Kolonnen avrenn i birkenes.data kan (skal) sammenliknes med beregninger Bmax B B min B Q B Q Bekk Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 19 / 43

Difflikninger fra vannbudsjett Lar vi δt 0 får vi difflikningene: d dt A(t) = P(t) E A(t) Q A (t) d dt B(t) = (1 A sig(t))q A (t) E B (t) Q B (t) Q over (t) Eulers metode er en omskriving av vannbudsjettene A j+1 = A j + h P j h E A,j δt Q A,j. B j+1 = B j + h A sig,j Q A,j h E B,j h Q B,j h Q over,j. Vi setter h = 1 d dag, der d er et heltall Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 20 / 43

Tidsaksen i Eulers metode t=0 t=t final t 0 h h h h t 1 t 2 t 3 t n 1 t n t # for birkenesmodellen vet vi: # - t_final er et heltall (antall dager) # - h = 1.0/d, det vil si d punkter per dag # - totalt: t_final * d + 1 punkter t_final = 31 # simuler en måned d = 24 # ett datapunkt per time h = 1.0/d t_vec = np.linspace(0, t_final, t_final*d + 1) t_steps = t_final * d Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 21 / 43

Sjekk på simulering: Massebalanse Vannet som kommer inn og renner ut må balansere endringen i vannstanden: akkumulert strøm inn akkumulert strøm ut = total endring i A Matematisk, tfinal 0 (P(t) E A (t) E B (t) Q(t)) dt = A(t final ) A(0) + B(t final ) B(0) Tilnærmet, n 1 h (P k E A,k E B,k Q k ) = A n A 0 + B n B 0 k=0 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 22 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 23 / 43

Liveprogrammering: Bøttemodell Svært enkel hydrologisk modell A(t ) = vannstand i bøtte P (t ) = vannstrøm inn, hageslange Q(t ) = vannstrøm gjennom hull Vannbudsjett mellom tid t og t + δt δa(t ) = P (t )δt Q(t )δt Eulers metode med steglengde h: Ak +1 = Ak + [P (tk ) Q(tk )]h Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 24 / 43

Bøttemodell 2 Modell for hageslange: Vi skrur den på og av { p t 1 P(t) = 0 t > 1, p konst. Modell for avrenning som i Birkenesmodellen, Q(t) = K max(0, A(t) A min ), A min, K konst. Simuleringsparametre: Løse og plotte resultatet h = 0.1, t final = 10, A(0) = 0.0 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 25 / 43

Tidsaksen i Eulers metode t=0 t=t final t 0 h h h h t 1 t 2 t 3 t n 1 t n t t_final = 1.0 # end point h = 0.2 # time step t_vec = np.arange(0, t_final, h) # create evenly spaced points # *excludes* t_final t_vec = np.append(t_vec, t_vec[-1] + h) # add endpoint t_steps = len(t_vec) - 1 # number of intervals, or Euler steps print t_steps # 5 print t_vec # [ 0. 0.2 0.4 0.6 0.8 1. ] Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 26 / 43

Sjekk på simulering: Massebalanse Vannet som kommer inn og renner ut må balansere endringen i vannstanden: akkumulert strøm inn akkumulert strøm ut = total endring i A Matematisk, Tilnærmet, tfinal 0 (P(t) Q(t)) dt = A(t final ) A(0) n 1 h (P k Q k ) = A n A 0 k=0 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 27 / 43

Programmering Sesjon i Emacs/Terminal: bucket.py Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 28 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 29 / 43

Interpolering av måledata Ofte har vi samplinger f j av en funksjon f(x) på punkter x j : Hvordan rekonstruere f(x) mellom gitterpunktene? Interpolering! birkenes.data : 1 måling per dag Dette er for lav oppløsning: h = 1/d dag T(t): jevnt svingende funksjon, kubisk interpolering P(t): tilfeldig, stykkevis konstant interpolering De interpolerte funksjonene kan inngå i Eulers metode Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 30 / 43

Interpolering: datasett Datasett med x j -verdier og tilhørende y j -verdier 2.0 (x[j], y[j]) 1.5 1.0 y 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 8 9 10 x Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 31 / 43

SciPy: interp1d Med funksjonen interp1d kan vi konstruere interpoleringer. from scipy.interpolate import interp1d # tulledatasett: x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = [2.0, 0.44, -0.85, -0.16, 0.98, 0.35, -0.91, -0.47, 0.84, 0.60, -0.76] # interpolering: f_kubisk = interp1d(x,y,kind='cubic') # f_kubisk er nå en funksjon! Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 32 / 43

Interpolering: kubisk Kubisk interpolering av datasett: 2.0 1.5 (x[j], y[j]) cubic inter 1.0 y 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 8 9 10 x Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 33 / 43

Interpolering: konstant Konstant interpolering av datasett: 2.0 1.5 (x[j], y[j]) const inter 1.0 y 0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 8 9 10 x Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 34 / 43

Liveprogrammering Vi programmerer et eksempel i interpolering.py Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 35 / 43

I birkenesmodellen Kubisk interpolering skal brukes på temperataur T For nedbør gir ikke kubisk interpolering mening nedbøren er tilfeldig Konstant interpolering skal brukes for nedbøren P (Også for sulfatkonsentrasjonen C P, i oppgave 5, kjemisk delmodell) from scipy.interpolate import interp1d # tulledatasett: x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y = [2.0, 0.44, -0.85, -0.16, 0.98, 0.35, -0.91, -0.47, 0.84, 0.60, -0.76] # interpolering: f_konstant = interp1d(x,y,kind='zero') # f_konstant er nå en funksjon! Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 36 / 43

Temperatur og nedbør i birkenes.data 80 temperatur [C] nedboer [mm] 60 40 20 0 0 25 50 75 100 125 150 175 t [dager] Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 37 / 43

Oversikt 1 Beskjeder og litt av hvert Beskjeder Gjennomgang av hjelpefiler laget av gruppelærere Eulers metode enkelt forklart 2 Hydrologisk delmodell Gjennomgang av reservoarmodellen Liveprogrammering: En bøttemodell Interpolering av data 3 Oppgave 4 Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 38 / 43

4a: Hva skal gjøres? Skrive Python-skript som løser den hydrologiske modellen med Eulers metode Det vil si: finne A og B som funksjon av tid Beregne avrenningen Q som funksjon av tid. Kontrollere Eulers metode med massebalanse Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 39 / 43

Forslag på fremgangsmåte Layout på skript: 1 Importere moduler, inklusiv birkutil 2 Definere diverse globale variable: A min, B min,... 3 Kan være lurt å definere hjelpefunksjoner som brukes ofte, men kompliserte å skrive, for eksempel for å regne ut A sig. 4 Eulers metode i en for-løkke, eventuelt i en egen funksjon 5 Plotting og annen behandling av data Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 40 / 43

Eksempel på hjelpefunksjon def asig(b): """ Compute A_sig. Returns a single float. """ if B <= B_min: A_sig = 1.0 else: if B > B_min and B <= B_max: A_sig = 1.0-0.25 * (B - B_min)/(B_max - B_min) else: A_sig = 0.0 return A_sig Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 41 / 43

4b: Hva skal gjøres? Eksperimentere med steglengden h = 1.0/d, der d er et heltall. Velg d slik at du synes plottene av A og B ser rimelige ut. Plotte Q sammen med de målte verdiene Q obs i birkenes.data (skal ikke interpoleres). Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 42 / 43

Eksempelberegning fra kompendiet 80 A B water level [mm] 60 40 20 0 0 25 50 75 100 125 150 175 t [days] Simen Kvaal IN-KJM1900 Forelesning 3 Onsdag 8/11/2017 43 / 43