Workshop 2: Numeriske metoder#
Pensum til eksamen: Numeriske metoder
Beskrive, forklare og implementere numeriske metoder for å finne nullpunkter (Newtons metode), derivere (framover-, bakover- og sentraldifferanse) og integrere (rektangelmetoden - venstre, høyre og midt - og trapesmetoden).
Utvide numeriske metoder med relevant feilhåndtering.
Sammenlikne og analysere ulike numeriske metoder.
Feilsøke og feilrette kode med numeriske metoder.
Oppgaver#
Forklar forskjellen mellom numerisk og analytisk derivasjon.
Hvorfor kan ikke dx i numerisk derivasjon være verken for liten for veldig stor?
Finn \(f'(1)\) med numerisk derivasjon for \(f(x) = x^2 - 2lg\left(\frac{1}{x}\right) - 2\).
Les fila temperatur.csv og bruk numerisk derivasjon til å derivere dataene. Plott den deriverte i samme koordinatsystemet som dataene. Hva forteller den deriverte kurven deg?
Forklar forskjellen mellom numerisk og analytisk integrasjon.
Forklar hvorfor en sentraltilnærming av rektangelmetoden er mye bedre enn en venstre- eller høyretilnærming.
Følgende funksjon gir angir signalet til en NMR-topp i et NMR-spekter:
\[f(x) = 3e^{\frac{-(x-2)^2}{0.04}}\]Arealet avgrenset av toppen og x-aksen forteller oss om relativt antall H-atomer i samme miljø i forbindelsen. Lag et program som beregner og beregner og skriver ut dette arealet. Begrunn valg av metode.
Funksjonen nedenfor inneholder en funksjon som beregner det bestemte integralet til en funksjon med trapesmetoden. Funksjonen fungerer derimot ikke som den skal. Forklar hva som er feil og rett opp koden.
def trapesmetoden(f, a, b, n):
h = (a+b)/n
A = h*(f(a) + f(b))/2.0
for k in range(n):
A = A + f(a + n*h)*h
return A*h
Bruk Newtons metode til å løse likningen \(x^5 - 3x - 10\).
(viktig oppgave!) Et oppvarmet metallobjekt kjøles ned i et rom med konstant temperatur \(T_{\text{rom}}\). Temperaturen \(T(t)\) som funksjon av tid \(t\) kan modelleres med
der
\(T_0\) er starttemperaturen (°C),
\(k\) er kjølekoeffisienten (1/min),
\(T_{\text{rom}}\) er romtemperaturen (°C).
Du måler temperaturen etter 5 minutter og finner:
For forsøket gjelder:
\(T_0 = 95^\circ\text{C}\)
\(T_{\text{rom}} = 20^\circ\text{C}\)
a) Skriv en Python-funksjon
def temperatur(t, T0, T_rom, k):
"""Returnerer temperaturen T(t) gitt kjølekoeffisienten k."""
# skriv koden her
som beregner temperaturen ved tidspunkt t (bruk uttrykket over).
Bruk deretter denne funksjonen til å definere
Forklar kort hvorfor løsningen av \(f(k)=0\) gir den riktige verdien av kjølekoeffisienten \(k\).
b) Finn kjølekoeffisienten \(k\) ved hjelp av Newtons metode.
Bruk startverdien \(k_0 = 0.1\ \text{min}^{-1}\).
Du kan enten:
derivere uttrykket for hånd og implementere \(f'(k)\), eller
bruke numerisk derivasjon.
Implementer Newtons metode og bruk den til å beregne \(k\).
Hva er fordeler og ulemper med Newtons metode. Forklar ved å skissere ulike grafer som illustrerer problemene.
Vi måler farten til et legeme i m/s som funksjon av tid i s og får følgende data:
t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
v = [0, 0, 1.2, 2.5, 6, 7.2, 7.1, 5.7, 4.3, 1.2, 0.1, 0]
Bruk numerisk integrasjon til å finne total tilbakelagt strekning.
Grunnleggende programmering:
Vi skal veie inn og lage en saltløsning av KMnO\(_4\) (M\(_ m\)= 158 g/mol). Lag et program som tar den innveide massen av saltet som input med input-funksjonen eller fra kommandolinja. Programmet skal regne ut og skrive ut konsentrasjonen til en løsning av dette saltet på 1 L.
Ved 25°C er løseligheten til KMnO\(_4\) 76 g/L. Utvid programmet ditt i forrige oppgave slik at det tar hensyn til dette med relevant feilhåndtering hvis brukeren av programmet gir for høy masse inn som input.
Lag en Python-funksjon som regner ut volumet gitt trykket, temperaturen og stoffmengden til en ideell gass.
Lag et program som beregner følgende rekkesum: