Komplett, gjennomarbeidet løsningsforslag med nøyaktig matematisk føring, digitale kontroller, Python-kjøringer og GeoGebra/CAS-lignende kontrollspor. Alle uttrykk er skrevet med korrekt MathJax-format: inline-matematikk med \(...\) og visningsmatematikk med \[...\], uten dollartegn som matematikkmarkører.
Eksamen: REA3060Dato: 24.05.2024BokmålLK20
Del 1 - uten hjelpemidler
Del 1 · Oppgave 1Derivasjon med produktregel
Oppgave 1
Oppgave:
Deriver funksjonen \(f(x)=4x^2\ln(3x)\).
Vis løsning
Her må vi bruke produktregelen. Vi skriver funksjonen som produktet av \(4x^2\) og \(\ln(3x)\).
\[P(\text{minst to like})=1-\frac{120}{455}=\frac{335}{455}=\frac{67}{91}\]
Python-kontroll
from math import comb
alle_mulige = comb(15, 3)
alle_ulike = 6*5*4
minst_to_like = alle_mulige - alle_ulike
print("alle mulige trekk =", alle_mulige)
print("alle ulike farger =", alle_ulike)
print("minst to samme farge =", minst_to_like)
print("sannsynlighet =", minst_to_like/alle_mulige)
# Utskrift:
# alle mulige trekk = 455
# alle ulike farger = 120
# minst to samme farge = 335
# sannsynlighet = 0.7362637362637363
GeoGebra CAS / digital kontroll
1
1 - (6*5*4)/nCr(15,3)
\(\frac{67}{91}\)
Fasit: \(P=\frac{67}{91}\approx 0{,}736\), altså omtrent \(73{,}6\,\%\).
Del 1 · Oppgave 5Kontinuitet og definisjonsmengde
Oppgave 5
Oppgave:
Funksjonen er \(f(x)=x\) for \(0\le x\le2\) og \(f(x)=5-x\) for \(2
Vis løsning
Problemet ligger ved \(x=2\). Fra venstre er verdien \(2\), mens høyre gren nærmer seg \(5-2=3\). Derfor er funksjonen ikke kontinuerlig i \(x=2\).
For å få størst mulig definisjonsmengde kan vi fjerne bare punktet \(x=2\). Da ligger ikke bruddpunktet i definisjonsmengden, og hver av grenene er kontinuerlig på sin del.
\[D_f=[0,2)\cup(2,5]\]
Verdimengden blir fortsatt \([0,3)\), fordi høyre gren gir verdier helt opp mot, men ikke lik, \(3\).
Python-kontroll
# Vi tester verdimengden numerisk på mange punkter.
import numpy as np
def f(x):
if 0 <= x < 2:
return x
if 2 < x <= 5:
return 5 - x
return None
x_venstre = np.linspace(0, 1.999, 6)
x_hoyre = np.linspace(2.001, 5, 6)
verdier = [f(x) for x in list(x_venstre) + list(x_hoyre)]
print("x-verdier venstre:", x_venstre)
print("x-verdier høyre:", x_hoyre)
print("noen f-verdier:", verdier)
print("minste verdi omtrent:", min(verdier))
print("største verdi nærmer seg 3, men blir ikke 3")
GeoGebra CAS / digital kontroll
1
Remove(2, [0,5])
\([0,2)\cup(2,5]\)
Fasit: Ny definisjonsmengde kan være \([0,2)\cup(2,5]\). Verdimengden er fortsatt \([0,3)\).
Del 2 - med hjelpemidler
Del 2 · Oppgave 1aMaksimalt overskudd
Oppgave 1a
Oppgave:
Kostnaden i tusen kroner er \(K(x)=200x\cdot1{,}015^x+200\). Hver bil selges for \(600\) tusen kroner. Hvilken produksjonsmengde gir størst mulig overskudd?
Vis løsning
Inntekten i tusen kroner er \(I(x)=600x\). Overskuddet blir
\[O(x)=600x-\bigl(200x\cdot1{,}015^x+200\bigr).\]
Vi maksimerer \(O(x)\). Digital derivasjon/nullpunkt for \(O'(x)\) gir
\[x\approx 41{,}48.\]
Siden Edison produserer hele biler, sammenlikner vi særlig \(x=41\) og \(x=42\). Begge gir omtrent samme overskudd, men \(x=41\) er marginalt høyest i heltallsmodellen.
Python-kontroll
from math import log
def K(x):
return 200*x*(1.015**x) + 200 # tusen kroner
def inntekt(x):
return 600*x # tusen kroner
def overskudd(x):
return inntekt(x) - K(x)
for antall in [40, 41, 42, 43]:
print(antall, round(overskudd(antall), 3))
# Numerisk toppunkt ligger rundt 41.48.
# Utskrift:
# 40 9287.853
# 41 9301.925
# 42 9301.684
# 43 9286.834
GeoGebra CAS / digital kontroll
1
Max(600x-(200x*1.015^x+200))
\(x\approx 41{,}48\)
2
Sequence(O(n), n, 40, 43)
størst ved \(n=41\) blant hele tall
Fasit: Maksimalt overskudd fås omtrent ved \(41\) til \(42\) biler per måned. Med hele biler er \(41\) marginalt best.
Del 2 · Oppgave 1bEnhetskostnad
Oppgave 1b
Oppgave:
Hvilken produksjonsmengde gir lavest mulig enhetskostnad?
Siden \(a+1>a>0\), er nevneren \(a+1\) større enn nevneren \(a\). Når telleren \(b\) er positiv, gir større nevner mindre brøk:
\[\frac{b}{a+1}<\frac ba.\]
Påstanden har altså feil ulikhetstegn.
Python-kontroll
# Vi tester med et konkret eksempel som oppfyller 1 < a < b/2.
a = 2
b = 6
venstre = b/(a + 1)
hoyre = b/a
print("a =", a, "b =", b)
print("b/(a+1) =", venstre)
print("b/a =", hoyre)
print("påstanden venstre > høyre er", venstre > hoyre)
# Utskrift:
# a = 2 b = 6
# b/(a+1) = 2.0
# b/a = 3.0
# påstanden venstre > høyre er False
GeoGebra CAS / digital kontroll
1
b/(a+1) - b/a
\(-b/(a(a+1))<0\)
Fasit: Påstanden er usann. Riktig er \(\frac{b}{a+1}<\frac ba\).
Del 2 · Oppgave 3aKombinatorikk - passord
Oppgave 3a
Oppgave:
Regelsett 1: Passordet har nøyaktig 6 tegn, bare store og små bokstaver, minst én stor og minst én liten bokstav. Hvor mange passord er mulig?
Vis løsning
Det finnes \(52\) mulige bokstaver i hver posisjon. Uten kravene om både stor og liten bokstav ville vi hatt \(52^6\) passord.
Vi må trekke fra passord med bare store bokstaver og passord med bare små bokstaver:
\[52^6-2\cdot26^6=19\,152\,778\,112.\]
Python-kontroll
store = 26
sma = 26
alle_bokstaver = store + sma
lengde = 6
alle = alle_bokstaver**lengde
bare_store = store**lengde
bare_sma = sma**lengde
gyldige = alle - bare_store - bare_sma
print("alle bokstavpassord =", alle)
print("bare store =", bare_store)
print("bare små =", bare_sma)
print("gyldige =", gyldige)
# Utskrift:
# alle bokstavpassord = 19770609664
# bare store = 308915776
# bare små = 308915776
# gyldige = 19152778112
GeoGebra CAS / digital kontroll
1
52^6 - 2*26^6
\(19\,152\,778\,112\)
Fasit: \(19\,152\,778\,112\) passord.
Del 2 · Oppgave 3bKombinatorikk - sikkerhet
Oppgave 3b
Oppgave:
Regelsett 2: Passordet har nøyaktig 6 tegn, nøyaktig to store bokstaver, to små bokstaver og to sifre. Vurder effekten på sikkerheten.
Vis løsning
Først velger vi hvilke \(2\) plasser som skal ha store bokstaver, hvilke \(2\) som skal ha små bokstaver, og hvilke \(2\) som skal ha sifre. Antall måter er
\[\frac{6!}{2!2!2!}=90.\]
For hver slik plassering kan vi velge \(26\) store, \(26\) små og \(10\) sifre:
Selv om sifre virker som en utvidelse, gjør kravet om nøyaktig to av hver type søkemengden mindre. Regelsett 2 er derfor svakere enn regelsett 1 målt i antall mulige passord.
from math import comb
for totalt in range(3, 30):
for hvite in range(3, totalt + 1):
rode = totalt - hvite
if rode < 1:
continue
p = comb(hvite, 3)/comb(totalt, 3)
if 0.17 < p < 0.18:
print("totalt =", totalt)
print("hvite =", hvite)
print("røde =", rode)
print("sannsynlighet =", p)
raise SystemExit
# Utskrift:
# totalt = 8
# hvite = 5
# røde = 3
# sannsynlighet = 0.17857142857142858
GeoGebra CAS / digital kontroll
1
nCr(5,3)/nCr(8,3)
\(0{,}17857\ldots\)
Fasit: Minste boks kan ha \(5\) hvite og \(3\) røde kuler, totalt \(8\) kuler.
Del 2 · Oppgave 5aTerninger - alle ulike
Oppgave 5a
Oppgave:
Du kaster fem terninger. Bestem sannsynligheten for at alle terningene viser forskjellige antall øyne.
Vis løsning
Første terning kan vise hva som helst. Deretter må de neste fire være ulike alle tidligere kast.
from fractions import Fraction
p = Fraction(1, 1)
for gunstige in [6, 5, 4, 3, 2]:
p *= Fraction(gunstige, 6)
print("sannsynlighet som brøk =", p)
print("desimaltall =", float(p))
print("prosent =", float(p)*100)
# Utskrift:
# sannsynlighet som brøk = 5/54
# desimaltall = 0.09259259259259259
# prosent = 9.25925925925926
GeoGebra CAS / digital kontroll
1
(6*5*4*3*2)/6^5
\(5/54\)
Fasit: \(P=\frac{5}{54}\approx 0{,}0926\), altså omtrent \(9{,}26\,\%\).
Del 2 · Oppgave 5bSimulering
Oppgave 5b
Oppgave:
Bruk simulering til å bestemme sannsynligheten for at du får nøyaktig tre seksere når du kaster fem terninger.
Vis løsning
En simulering gjentar forsøket mange ganger og teller andelen der nøyaktig tre terninger viser \(6\). Den eksakte verdien, som simuleringen bør nærme seg, er
import random
from math import comb
random.seed(2024)
antall_forsok = 200_000
treff = 0
for _ in range(antall_forsok):
kast = [random.randint(1, 6) for _ in range(5)]
if kast.count(6) == 3:
treff += 1
simulert = treff/antall_forsok
eksakt = comb(5, 3)*(1/6)**3*(5/6)**2
print("antall forsøk =", antall_forsok)
print("treff =", treff)
print("simulert sannsynlighet =", simulert)
print("eksakt sannsynlighet =", eksakt)
# Typisk utskrift:
# antall forsøk = 200000
# treff = omtrent 6400
# simulert sannsynlighet = omtrent 0.032
# eksakt sannsynlighet = 0.03215020576131687
GeoGebra CAS / digital kontroll
1
Binomial(5, 1/6, 3)
\(0{,}03215\)
Fasit: Simuleringen bør gi omtrent \(0{,}032\), altså rundt \(3{,}2\,\%\).
Del 2 · Oppgave 6aRegresjonsmodeller
Oppgave 6a
Oppgave:
Lag modeller som beskriver utviklingen for bensin og elektrisk («El.») i Moss, \(t\) år etter 2010. Argumenter for valg.
Vis løsning
For bensin synker tallene ganske jevnt fra \(14185\) i 2010 til \(8705\) i 2022. En lineær modell er derfor et rimelig førstevalg:
\[B(t)\approx -451{,}8t+14243{,}3.\]
For elektriske biler øker tallene stadig raskere. En enkel eksponentiell regresjon gir
\[E(t)\approx 11{,}43\cdot1{,}788^t.\]
En eksponentiell modell fanger akselerasjonen, men kan overdrive på lang sikt fordi antall elbiler ikke kan vokse ubegrenset.
År
2010
2014
2018
2022
Bensin
14185
12578
10516
8705
El.
2
307
1467
5363
Python-kontroll
import numpy as np
# t = år etter 2010
år = np.arange(2010, 2023)
t = år - 2010
bensin = np.array([14185,13592,13246,12944,12578,12367,11472,11079,10516,10323,9706,9210,8705])
el = np.array([2,14,35,111,307,557,754,1071,1467,2057,2810,4031,5363])
# Lineær regresjon for bensin
bensin_koeff = np.polyfit(t, bensin, 1)
# Eksponentiell regresjon for el: ln(E) = a*t + b
ln_koeff = np.polyfit(t, np.log(el), 1)
grunnfaktor = np.exp(ln_koeff[0])
startfaktor = np.exp(ln_koeff[1])
print("Bensinmodell: B(t) =", bensin_koeff[0], "*t +", bensin_koeff[1])
print("Elmodell: E(t) =", startfaktor, "*", grunnfaktor, "** t")
print("B(12) modell/verdi:", np.polyval(bensin_koeff, 12), bensin[-1])
print("E(12) modell/verdi:", startfaktor*(grunnfaktor**12), el[-1])
# Utskrift avrundet:
# Bensinmodell: B(t) = -451.7857*t + 14243.2527
# Elmodell: E(t) = 11.4307 * 1.7880 ** t
GeoGebra CAS / digital kontroll
1
FitPoly({bensin-data},1)
\(B(t)\approx-451{,}8t+14243{,}3\)
2
FitExp({el-data})
\(E(t)\approx 11{,}43\cdot1{,}788^t\)
Fasit: Et rimelig svar er \(B(t)\approx -451{,}8t+14243{,}3\) og \(E(t)\approx 11{,}43\cdot1{,}788^t\), med tydelig kommentar om modellvalg.
Del 2 · Oppgave 6bModellkritikk
Oppgave 6b
Oppgave:
Vurder veksten i bensin og elektrisk etter 2022 og kommenter gyldigheten til modellene.
Vis løsning
Bensinmodellen viser en tydelig nedgang. Hvis den lineære trenden fortsetter, vil antall bensinbiler fortsette å falle med omtrent \(452\) per år.
Elbilmodellen viser sterk vekst. En eksponentiell modell kan passe i en tidlig vekstfase, men blir lite realistisk langt fram i tid, fordi antallet biler i kommunen er begrenset. Etter hvert vil veksten trolig flate mer ut.
Modellene bør derfor brukes forsiktig utenfor perioden \(2010\)-\(2022\). De er best som kortsiktige trendmodeller, ikke som sikre langtidsprognoser.
Python-kontroll
# Prognoser noen få år framover, brukt bare som modellillustrasjon.
B_stigning = -451.78571429
B_konstant = 14243.25274725
E_start = 11.430743343902126
E_faktor = 1.7880137486854626
for år in [2023, 2024, 2025]:
t = år - 2010
B = B_stigning*t + B_konstant
E = E_start*(E_faktor**t)
print(år, "Bensinmodell:", round(B), "Elmodell:", round(E))
# Utskrift:
# 2023 Bensinmodell: 8370 Elmodell: 21741
# 2024 Bensinmodell: 7918 Elmodell: 38872
# 2025 Bensinmodell: 7466 Elmodell: 69504
# Dette viser hvorfor eksponentiell elmodell raskt blir urealistisk.
GeoGebra CAS / digital kontroll
1
Evaluate models after 2022
Elmodell vokser for raskt på lang sikt
Fasit: Bensin går nedover, el øker raskt, men særlig elmodellen har begrenset gyldighet langt etter 2022.
Del 2 · Oppgave 7aNumerisk optimering
Oppgave 7a
Oppgave:
Funksjonen er \(f(x)=-x^2+4\), \(0\le x\le2\). Lars har skrevet et program med \(A(x)=x\cdot f(x)\). Forklar hva han prøver å finne ut, og hva programmet skriver ut.
Vis løsning
Rektangelet har bredde \(x\) og høyde \(f(x)\). Arealet er derfor
\[A(x)=x(-x^2+4)=-x^3+4x.\]
Programmet prøver å finne størst mulig areal for rektangelet. Det undersøker hvor den numeriske deriverte av arealet skifter fra positiv til negativ.
Eksakt maksimum får vi fra
\[A'(x)=4-3x^2=0\]
\[x=\frac{2}{\sqrt{3}}\approx 1{,}155.\]
\[A_{\max}=\frac{16}{3\sqrt{3}}\approx 3{,}079.\]
Med \(dx=0{,}01\) skriver programmet ut omtrent \(3{,}079\).
Fasit: Lars prøver å finne størst mulig areal av rektangelet. Programmet skriver ut omtrent \(3{,}079\).
Del 2 · Oppgave 7bStrategi og begrensninger
Oppgave 7b
Oppgave:
Hvilken strategi bruker Lars i programmet? Vil strategien fungere uavhengig av hvilken funksjon \(f\) er?
Vis løsning
Lars bruker en numerisk søkestrategi: Han øker \(x\) med små steg og stopper når den numerisk beregnede vekstfarten til arealet ikke lenger er positiv.
Strategien fungerer her fordi arealfunksjonen først øker og deretter minker på intervallet. Den fungerer ikke uavhengig av funksjon. Hvis arealfunksjonen har flere lokale toppunkter, flate partier, brudd, støy eller et maksimum ved endepunktet, kan strategien stoppe på feil sted eller gi et unøyaktig svar.
Python-kontroll
# Eksempel på hvorfor strategien ikke alltid er trygg:
# Funksjonen kan ha flere lokale topper.
import numpy as np
def A(x):
return np.sin(6*x) + 0.2*x
punkter = np.linspace(0, 2, 401)
verdier = A(punkter)
indeks = np.argmax(verdier)
print("globalt maksimum i rutenett ved x =", punkter[indeks])
print("største verdi i rutenett =", verdier[indeks])
print("flere topper gjør enkelt stegvis søk usikkert")
GeoGebra CAS / digital kontroll
1
Strategy
Stegvis søk med numerisk derivert
2
Limitation
Ikke garantert ved flere topper eller brudd
Fasit: Lars bruker stegvis numerisk søk etter skifte fra positiv til negativ vekst. Metoden fungerer ikke for alle funksjoner.
Del 2 · Oppgave 8Romgeometri og optimering
Oppgave 8
Oppgave:
En kule med radius \(r\) deles i to like deler. Vi skjærer ut en pyramide med rektangulær grunnflate av den ene halvkulen. Bestem et uttrykk for det største volumet.
Vis løsning
Grunnflaten ligger i snittflaten, altså i en sirkel med radius \(r\). La rektangelet ha halvside-lengder \(a\) og \(b\). Da er grunnflatearealet
from sympy import symbols, sqrt, simplify
r = symbols('r', positive=True)
a = r/sqrt(2)
b = r/sqrt(2)
G = 4*a*b
h = r
V = h*G/3
print("a =", a)
print("b =", b)
print("G_max =", simplify(G))
print("V_max =", simplify(V))
# Utskrift:
# a = sqrt(2)*r/2
# b = sqrt(2)*r/2
# G_max = 2*r**2
# V_max = 2*r**3/3
GeoGebra CAS / digital kontroll
1
Maximize(4ab, a^2+b^2=r^2)
\(G_{max}=2r^2\)
2
r*G_max/3
\(\frac{2r^3}{3}\)
Fasit: Største volum er \(\frac{2r^3}{3}\).
ifingo-lærerenHjelper deg å forstå
ifingo-læreren hjelper deg å forstå – ikke å gjøre leksene for deg 💜