R1 eksamenHøst 2024LK20

Matematikk R1 eksamen – høst 2024

ifingo
Norsk (Bokmål)

ifingo · Matematikk R1

Matematikk R1 – høsten 2024, LK20 (REA3056)

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 – uten hjelpemidler

Del 1 – Oppgave 1Kvotientregel og kjerneregel

Oppgave 1

Oppgave: Deriver funksjonen \[f(x)=\frac{e^{2x}}{x}.\]
Vis løsning

Hva spør oppgaven om? Vi skal derivere en kvotient der telleren krever kjerneregelen, og samtidig huske at funksjonen ikke er definert for \(x=0\).

Steg 1 – Identifiser teller og nevner

Sett \(u(x)=e^{2x}\) og \(v(x)=x\).

Steg 2 – Deriver telleren

Kjerneregelen gir \[u^{\prime}(x)=2e^{2x}.\]

Steg 3 – Deriver nevneren

\[v^{\prime}(x)=1.\]

Steg 4 – Bruk kvotientregelen

\[f^{\prime}(x)=\frac{u^{\prime}v-uv^{\prime}}{v^2}=\frac{2e^{2x}x-e^{2x}}{x^2}.\]

Steg 5 – Faktoriser

\[f^{\prime}(x)=\frac{e^{2x}(2x-1)}{x^2}.\]

Steg 6 – Oppgi domenet

Både \(f\) og den deriverte gjelder for \(x\ne0\).

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Derivative(exp(2x)/x)
\(e^{2x}(2x-1)/x^2\)

Tolkning: CAS bekrefter kvotientregelen og forenklingen.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", nonzero=True)
f = sp.exp(2*x)/x
f_prime = sp.diff(f, x)
print("f(x) =", f)
print("f'(x) =", f_prime)
print("Factored =", sp.factor(f_prime))
print("Check at x=1 =", sp.simplify(f_prime.subs(x, 1)))
print("Domain restriction: x != 0")
Utskrift fra Python:
f(x) = exp(2*x)/x
f'(x) = 2*exp(2*x)/x - exp(2*x)/x**2
Factored = (2*x - 1)*exp(2*x)/x**2
Check at x=1 = exp(2)
Domain restriction: x != 0

Fasit: \(f^{\prime}(x)=\dfrac{e^{2x}(2x-1)}{x^2}\), \(x\ne0\).

Vanlig feil: Å derivere \(e^{2x}\) som \(e^{2x}\) og glemme faktoren 2.
Sensorpunkt: Kvotientregelen, kjerneregelen og domenet skal framgå tydelig.
Del 1 – Oppgave 2Algoritme og toppunkt

Oppgave 2

Oppgave: Bestem verdien som skrives ut av programmet med \(O(x)=-0,1x^2+2000x-50000\), start \(x=0\), og løkken while O(x+1) > O(x): x=x+1.
Vis løsning

Hva spør oppgaven om? Vi skal forstå at programmet øker heltallsverdien \(x\) så lenge funksjonsverdien stiger.

Steg 1 – Se på funksjonstypen

\(O\) er en andregradsfunksjon med negativ koeffisient foran \(x^2\), så grafen har et maksimum.

Steg 2 – Finn toppunktets x-verdi

For \(ax^2+bx+c\) er toppunktet ved \(-b/(2a)\). Her blir \[x=-\frac{2000}{2(-0,1)}=10000.\]

Steg 3 – Analyser løkkebetingelsen

Programmet sammenlikner naboverdiene \(O(x+1)\) og \(O(x)\).

Steg 4 – Beregn differansen

\[O(x+1)-O(x)=1999,9-0,2x.\]

Steg 5 – Finn siste økning

Differansen er positiv for heltall \(x\le9999\). Derfor økes \(x\) fra 9999 til 10000.

Steg 6 – Stopp

Når \(x=10000\), er \(O(10001)-O(10000)=-0,1\), så løkken stopper og programmet skriver ut 10000.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
O(x)=-0.1x^2+2000x-50000; Extremum(O)
Toppunkt ved \(x=10000\)

Tolkning: Løkken finner heltallet ved funksjonens maksimum.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
def O(x):
    return -0.1*x**2 + 2000*x - 50000

x = 0
iterations = 0
while O(x + 1) > O(x):
    x = x + 1
    iterations += 1

print("Printed x =", x)
print("Iterations =", iterations)
print("O(9999) =", O(9999))
print("O(10000) =", O(10000))
print("O(10001) =", O(10001))
print("Next difference =", O(x + 1) - O(x))
Utskrift fra Python:
Printed x = 10000
Iterations = 10000
O(9999) = 9949999.9
O(10000) = 9950000.0
O(10001) = 9949999.9
Next difference = -0.09999999962747097

Fasit: Programmet skriver ut \(10000\).

Vanlig feil: Å tro at løkken skriver ut den største funksjonsverdien; den skriver ut x-verdien.
Sensorpunkt: Forklar både hva løkken gjør og hvorfor den stopper akkurat ved 10000.
Del 1 – Oppgave 3Eksponentiallikning med substitusjon

Oppgave 3

Oppgave: Løs likningen \[100^x-3\cdot10^x=4.\]
Vis løsning

Hva spør oppgaven om? Vi skal bruke at \(100^x=(10^x)^2\), slik at likningen blir en andregradslikning.

Steg 1 – Innfør variabel

Sett \(y=10^x\). Da er \(y>0\).

Steg 2 – Skriv om 100-potensen

\[100^x=(10^2)^x=10^{2x}=(10^x)^2=y^2.\]

Steg 3 – Få en andregradslikning

\[y^2-3y=4\quad\Longrightarrow\quad y^2-3y-4=0.\]

Steg 4 – Faktoriser

\[(y-4)(y+1)=0.\]

Steg 5 – Bruk positivitet

Løsningene er \(y=4\) og \(y=-1\), men \(10^x\) kan ikke være negativ. Derfor er \(10^x=4\).

Steg 6 – Løs for x

\[x=\lg4\approx0,60206.\]

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Solve(100^x-3*10^x=4,x)
\(x=\lg4\)

Tolkning: CAS gir den eneste reelle løsningen.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x, y = sp.symbols("x y", real=True)
quadratic = y**2 - 3*y - 4
roots = sp.solve(sp.Eq(quadratic, 0), y)
valid = [root for root in roots if root.is_positive]
solution_x = sp.log(valid[0], 10)
print("Quadratic =", sp.factor(quadratic))
print("Roots for y = 10^x:", roots)
print("Positive root =", valid[0])
print("x =", solution_x)
print("Decimal x =", sp.N(solution_x, 12))
print("Equation check =", sp.simplify(100**solution_x - 3*10**solution_x))
Utskrift fra Python:
Quadratic = (y - 4)*(y + 1)
Roots for y = 10^x: [-1, 4]
Positive root = 4
x = log(4)/log(10)
Decimal x = 0.602059991328
Equation check = 4

Fasit: \(x=\lg4\approx0,6021\).

Vanlig feil: Å beholde \(y=-1\), selv om \(10^x>0\) for alle reelle x.
Sensorpunkt: Substitusjon, forkasting av negativ rot og tilbakeføring til x må vises.
Del 1 – Oppgave 4Grenseverdi for rasjonal funksjon

Oppgave 4

Oppgave: Finn \[\lim_{x\to\infty}\frac{x^2+x-12}{2x^2-18}.\]
Vis løsning

Hva spør oppgaven om? Vi skal sammenlikne de høyeste potensene i teller og nevner.

Steg 1 – Del på høyeste potens

Del teller og nevner på \(x^2\).

Steg 2 – Skriv om

\[\frac{1+1/x-12/x^2}{2-18/x^2}.\]

Steg 3 – Bruk standardgrenser

Når \(x\to\infty\), går \(1/x\to0\) og \(1/x^2\to0\).

Steg 4 – Sett inn grenseverdiene

\[\frac{1+0-0}{2-0}=\frac12.\]

Steg 5 – Alternativ regel

Teller og nevner har samme grad, så grensen er forholdet mellom ledende koeffisienter, \(1/2\).

Steg 6 – Konklusjon

Grenseverdien eksisterer og er endelig.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Limit((x^2+x-12)/(2x^2-18),x,Infinity)
\(1/2\)

Tolkning: CAS bekrefter forholdet mellom de ledende koeffisientene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
expr = (x**2 + x - 12)/(2*x**2 - 18)
normalized = sp.simplify(expr.subs(x, 1/sp.symbols("u")))
limit_value = sp.limit(expr, x, sp.oo)
print("Expression =", expr)
print("Limit as x -> infinity =", limit_value)
for value in [10, 100, 1000]:
    print("x =", value, "value =", sp.N(expr.subs(x, value), 12))
Utskrift fra Python:
Expression = (x**2 + x - 12)/(2*x**2 - 18)
Limit as x -> infinity = 1/2
x = 10 value = 0.538461538462
x = 100 value = 0.504854368932
x = 1000 value = 0.500498504487

Fasit: \(\displaystyle\frac12\).

Vanlig feil: Å ta forholdet mellom konstantleddene i stedet for de høyeste gradsleddene.
Sensorpunkt: En korrekt normalisering eller ledende-koeffisientregel gir full uttelling.
Del 1 – Oppgave 5aLengder og ortogonalitet

Oppgave 5a

Oppgave: Vektorene er \(\vec u=[3,-2]\), \(\vec v=[4,-6]\), \(\vec w=[2,-3]\) og \(\vec p=[8,12]\). Avgjør om noen er like lange eller ortogonale.
Vis løsning

Hva spør oppgaven om? Vi skal sammenlikne kvadrerte lengder og beregne skalarprodukt for alle relevante par.

Steg 1 – Kvadrert lengde til u

\[|\vec u|^2=3^2+(-2)^2=13.\]

Steg 2 – De andre lengdene

\[|\vec v|^2=52,\qquad |\vec w|^2=13,\qquad |\vec p|^2=208.\]

Steg 3 – Like lange

Bare \(\vec u\) og \(\vec w\) har samme kvadrerte lengde. Dermed er begge lengdene \(\sqrt{13}\).

Steg 4 – Ortogonalitetskriteriet

To vektorer er ortogonale når skalarproduktet er null.

Steg 5 – Finn nullproduktet

\[\vec u\cdot\vec p=3\cdot8+(-2)\cdot12=24-24=0.\]

Steg 6 – Kontroller de andre parene

De øvrige skalarproduktene er \(24,12,26,-40,-20\), og ingen av dem er null.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Length((3,-2)); Length((2,-3)); Dot((3,-2),(8,12))
\(|u|=|w|=\sqrt{13}\), og \(u\perp p\)

Tolkning: Lengde- og skalarproduktkontroll gir de eneste treffene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import itertools
import sympy as sp
vectors = {
    "u": sp.Matrix([3, -2]),
    "v": sp.Matrix([4, -6]),
    "w": sp.Matrix([2, -3]),
    "p": sp.Matrix([8, 12]),
}
for name, vec in vectors.items():
    print(name, "length squared =", vec.dot(vec), "length =", sp.sqrt(vec.dot(vec)))
print("Pairwise dot products:")
for (name1, vec1), (name2, vec2) in itertools.combinations(vectors.items(), 2):
    print(name1 + "·" + name2, "=", vec1.dot(vec2))
Utskrift fra Python:
u length squared = 13 length = sqrt(13)
v length squared = 52 length = 2*sqrt(13)
w length squared = 13 length = sqrt(13)
p length squared = 208 length = 4*sqrt(13)
Pairwise dot products:
u·v = 24
u·w = 12
u·p = 0
v·w = 26
v·p = -40
w·p = -20

Fasit: \(\vec u\) og \(\vec w\) er like lange. \(\vec u\) og \(\vec p\) er ortogonale.

Vanlig feil: Å sammenlikne komponentene direkte i stedet for å beregne vektorlengder.
Sensorpunkt: Vis både lengdeberegningene og minst skalarproduktet som blir null.
Del 1 – Oppgave 5bVektorlikning med parametere

Oppgave 5b

Oppgave: \(\vec q=[2a-3,1+3b]\). Bestem \(a\) og \(b\) slik at \(\vec u+2\vec q=[7,5]\).
Vis løsning

Hva spør oppgaven om? Vi skal bruke at to vektorer er like når de korresponderende komponentene er like.

Steg 1 – Sett inn vektorene

\[[3,-2]+2[2a-3,1+3b]=[7,5].\]

Steg 2 – Multipliser q med 2

\[2\vec q=[4a-6,2+6b].\]

Steg 3 – Legg sammen

\[\vec u+2\vec q=[4a-3,6b].\]

Steg 4 – Første komponent

\[4a-3=7\Rightarrow4a=10\Rightarrow a=\frac52.\]

Steg 5 – Andre komponent

\[6b=5\Rightarrow b=\frac56.\]

Steg 6 – Kontroll

Da er \(q=[2,7/2]\), og \([3,-2]+2[2,7/2]=[7,5]\).

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Solve({3+2(2a-3)=7,-2+2(1+3b)=5},{a,b})
\(a=5/2,\ b=5/6\)

Tolkning: CAS løser de to komponentlikningene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
a, b = sp.symbols("a b", real=True)
u = sp.Matrix([3, -2])
q = sp.Matrix([2*a - 3, 1 + 3*b])
target = sp.Matrix([7, 5])
solution = sp.solve(list(u + 2*q - target), [a, b], dict=True)[0]
print("Vector equation components =", list(u + 2*q))
print("Solution =", solution)
q_value = q.subs(solution)
print("q =", tuple(q_value))
print("u + 2q =", tuple(u + 2*q_value))
Utskrift fra Python:
Vector equation components = [4*a - 3, 6*b]
Solution = {a: 5/2, b: 5/6}
q = (2, 7/2)
u + 2q = (7, 5)

Fasit: \(a=\dfrac52\) og \(b=\dfrac56\).

Vanlig feil: Å sette hele vektoruttrykket lik én skalar likning.
Sensorpunkt: Begge komponentlikningene og en sluttkontroll bør være med.
Del 1 – Oppgave 6Gjennomsnittlig og momentan vekstfart

Oppgave 6

Oppgave: Grafene til \(f\), \(g\) og \(h\) er gitt. Én funksjon har gjennomsnittlig vekstfart \(1/2\) på \([0,4]\) og derivert lik 1 når \(x=1\). Hvilken?
Vis løsning

Hva spør oppgaven om? Vi skal først bruke sekantkravet og deretter kontrollere tangentstigningen ved x=1.

Steg 1 – Les av f i endepunktene

Fra grafen er \(f(0)=0\) og \(f(4)=2\).

Steg 2 – Gjennomsnittlig vekstfart for f

\[\frac{f(4)-f(0)}{4-0}=\frac{2-0}{4}=\frac12.\]

Steg 3 – Kontroller g

Linjen \(g\) har stigningstall \(1/2\) overalt. Derfor er \(g^{\prime}(1)=1/2\), ikke 1.

Steg 4 – Kontroller h

Avlesningen viser at \(h(0)\) og \(h(4)\) ikke gir riktig kombinasjon av sekant- og tangentstigning.

Steg 5 – Tangenten til f ved x=1

Grafen til \(f\) har tangentstigning 1 ved \(x=1\). En modell som passer grafen, \(f(x)=-\tfrac14x^2+\tfrac32x\), gir \(f^{\prime}(1)=1\).

Steg 6 – Konklusjon

Bare \(f\) oppfyller begge krav samtidig.

Sekanten til f på intervallet [0,4] har stigning 1/2.
Sekanten til f på intervallet [0,4] har stigning 1/2.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
f(x)=-x^2/4+3x/2; (f(4)-f(0))/4; f'(1)
\(1/2\) og \(1\)

Tolkning: Graf- og derivertkontrollen peker på f.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = -sp.Rational(1,4)*x**2 + sp.Rational(3,2)*x
g = sp.Rational(1,2)*x + 2
average_f = sp.simplify((f.subs(x,4)-f.subs(x,0))/4)
print("f(0) =", f.subs(x,0), "f(4) =", f.subs(x,4))
print("Average slope of f on [0,4] =", average_f)
print("f'(1) =", sp.diff(f,x).subs(x,1))
print("g'(1) =", sp.diff(g,x).subs(x,1))
print("Conclusion: f satisfies both conditions")
Utskrift fra Python:
f(0) = 0 f(4) = 2
Average slope of f on [0,4] = 1/2
f'(1) = 1
g'(1) = 1/2
Conclusion: f satisfies both conditions

Fasit: Funksjonen er \(f\).

Vanlig feil: Å velge g bare fordi den har gjennomsnittlig vekstfart 1/2; det andre kravet må også kontrolleres.
Sensorpunkt: Sensor forventer bruk av både sekantstigning og tangentstigning.

Del 2 – med hjelpemidler

Del 2 – Oppgave 1aEksponentiallikning i praktisk modell

Oppgave 1a

Oppgave: \(V(t)=10000e^{-0,07t}+500\). Hvor lang tid går det før vannmengden er halvert?
Vis løsning

Hva spør oppgaven om? Vi skal halvere startmengden \(V(0)=10500\) liter og løse en eksponentiallikning.

Steg 1 – Startmengden

\[V(0)=10000+500=10500\text{ liter}.\]

Steg 2 – Halv mengde

Halvparten er \(5250\) liter.

Steg 3 – Sett opp likningen

\[10000e^{-0,07t}+500=5250.\]

Steg 4 – Isoler eksponentialleddet

\[e^{-0,07t}=\frac{4750}{10000}=0,475.\]

Steg 5 – Ta naturlig logaritme

\[-0,07t=\ln(0,475).\]

Steg 6 – Beregn tiden

\[t=-\frac{\ln(0,475)}{0,07}\approx10,63.\]

Modellen nærmer seg 500 liter og passerer halv startmengde etter ca. 10,63 timer.
Modellen nærmer seg 500 liter og passerer halv startmengde etter ca. 10,63 timer.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Solve(10000 exp(-0.07t)+500=5250,t)
\(t\approx10,63\)

Tolkning: CAS løser eksponentiallikningen.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
V = 10000*sp.exp(-sp.Rational(7,100)*t) + 500
initial = V.subs(t,0)
half = initial/2
solution = sp.solve(sp.Eq(V, half), t)[0]
print("V(0) =", initial, "liters")
print("Half of initial amount =", half, "liters")
print("Exact time =", solution)
print("Time in hours =", sp.N(solution, 12))
print("Check V(t) =", sp.N(V.subs(t,solution), 12))
Utskrift fra Python:
V(0) = 10500 liters
Half of initial amount = 5250 liters
Exact time = 100*log(19**(6/7)*40**(1/7)/19)
Time in hours = 10.6348639278
Check V(t) = 5250.00000000

Fasit: Vannmengden er halvert etter omtrent \(10,63\) timer.

Vanlig feil: Å halvere bare 10000-leddet og glemme at startmengden også inneholder 500 liter.
Sensorpunkt: Startmengde, likning, logaritmetrinn og enhet skal være tydelige.
Del 2 – Oppgave 1bFørste- og andrederivert i kontekst

Oppgave 1b

Oppgave: Bestem \(V^{\prime}(12)\) og \(V^{\prime\prime}(12)\), og tolk svarene.
Vis løsning

Hva spør oppgaven om? Vi skal finne momentan lekkasjefart og hvordan denne farten endrer seg etter 12 timer.

Steg 1 – Deriver V

\[V^{\prime}(t)=10000(-0,07)e^{-0,07t}=-700e^{-0,07t}.\]

Steg 2 – Deriver en gang til

\[V^{\prime\prime}(t)=49e^{-0,07t}.\]

Steg 3 – Sett inn t=12

\[V^{\prime}(12)=-700e^{-0,84}\approx-302,20.\]

Steg 4 – Andrederivert ved 12

\[V^{\prime\prime}(12)=49e^{-0,84}\approx21,15.\]

Steg 5 – Tolk V-prime

Etter 12 timer synker vannmengden med omtrent 302 liter per time.

Steg 6 – Tolk V-dobbel-prime

Lekkasjefarten blir mindre negativ: den momentane endringsraten øker med omtrent 21,2 liter per time per time.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Derivative(V); Derivative(V,2); V'(12); V''(12)
\(-302,20\) og \(21,15\)

Tolkning: CAS gir verdier med riktige fortegn.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
V = 10000*sp.exp(-sp.Rational(7,100)*t) + 500
V1 = sp.diff(V,t)
V2 = sp.diff(V,t,2)
print("V'(t) =", V1)
print("V''(t) =", V2)
print("V'(12) =", sp.N(V1.subs(t,12), 12), "liters/hour")
print("V''(12) =", sp.N(V2.subs(t,12), 12), "liters/hour^2")
print("V(12) =", sp.N(V.subs(t,12), 12), "liters")
Utskrift fra Python:
V'(t) = -700*exp(-7*t/100)
V''(t) = 49*exp(-7*t/100)
V'(12) = -302.197366400 liters/hour
V''(12) = 21.1538156480 liters/hour^2
V(12) = 4817.10523429 liters

Fasit: \(V^{\prime}(12)\approx-302,20\text{ L/h}\), \(V^{\prime\prime}(12)\approx21,15\text{ L/h}^2\).

Vanlig feil: Å tolke positiv andrederivert som at vannmengden øker; det er den negative lekkasjefarten som avtar i størrelse.
Sensorpunkt: Både tall, enheter og praktisk fortolkning må være med.
Del 2 – Oppgave 1cAsymptote og langtidsatferd

Oppgave 1c

Oppgave: Undersøk om \(V\) har asymptoter, og tolk eventuelle asymptoter.
Vis løsning

Hva spør oppgaven om? Vi skal undersøke grensen når tiden blir stor og om uttrykket har steder der det ikke er definert.

Steg 1 – Definisjon

Uttrykket er definert for alle reelle \(t\), og praktisk bruker vi \(t\ge0\). Derfor finnes ingen vertikal asymptote.

Steg 2 – Langtidsgrensen

Når \(t\to\infty\), går \(e^{-0,07t}\to0\).

Steg 3 – Beregn grensen

\[\lim_{t\to\infty}V(t)=10000\cdot0+500=500.\]

Steg 4 – Horisontal asymptote

Grafen har den horisontale asymptoten \(V=500\).

Steg 5 – Praktisk tolkning

Modellen sier at vannmengden nærmer seg 500 liter, men ikke går under dette nivået.

Steg 6 – Modellkritikk

I virkeligheten kan lekkasjeforløpet endre seg, men innen modellen representerer 500 liter en restmengde.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Limit(10000 exp(-0.07t)+500,t,Infinity)
\(500\)

Tolkning: Grensen gir den horisontale asymptoten.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
V = 10000*sp.exp(-sp.Rational(7,100)*t) + 500
limit_value = sp.limit(V,t,sp.oo)
print("Limit as t -> infinity =", limit_value)
print("Horizontal asymptote: V =", limit_value)
for value in [24,48,96,200]:
    print("t =", value, "V(t) =", sp.N(V.subs(t,value), 10))
print("Expression is defined for every real t")
Utskrift fra Python:
Limit as t -> infinity = 500
Horizontal asymptote: V = 500
t = 24 V(t) = 2363.739760
t = 48 V(t) = 847.3525895
t = 96 V(t) = 512.0653821
t = 200 V(t) = 500.0083153
Expression is defined for every real t

Fasit: Den horisontale asymptoten er \(V=500\) liter. Det finnes ingen vertikal asymptote.

Vanlig feil: Å si at reservoaret når nøyaktig 500 liter på et endelig tidspunkt.
Sensorpunkt: Grenseberegningen og den praktiske betydningen av 500 liter skal forklares.
Del 2 – Oppgave 2aMoteksempel til påstand om grenser

Oppgave 2a

Oppgave: Påstand: Hvis \(\lim_{x\to\infty}f=\lim_{x\to\infty}g\) og \(\lim_{x\to-\infty}f=\lim_{x\to-\infty}g\), så er \(f(x)=g(x)\).
Vis løsning

Hva spør oppgaven om? Vi skal avgjøre påstanden ved å finne to ulike funksjoner med samme grenser i begge retninger.

Steg 1 – Strategi

Én moteksempel er nok til å vise at en universell påstand er usann.

Steg 2 – Velg funksjoner

La \(f(x)=0\) og \(g(x)=1/(x^2+1)\).

Steg 3 – Grense mot pluss uendelig

Begge funksjonene har grense 0 når \(x\to\infty\).

Steg 4 – Grense mot minus uendelig

Begge funksjonene har også grense 0 når \(x\to-\infty\).

Steg 5 – Sammenlikn funksjonene

Likevel er \(g(0)=1\), mens \(f(0)=0\).

Steg 6 – Konklusjon

Samme endeadferd bestemmer ikke hele funksjonen. Påstanden er usann.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Limit(1/(x^2+1),x,Infinity); Limit(1/(x^2+1),x,-Infinity)
Begge grenser er 0, men funksjonene er ulike

Tolkning: Moteksemplet avkrefter påstanden.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = sp.Integer(0)
g = 1/(x**2+1)
print("lim f as x -> +infinity =", sp.limit(f,x,sp.oo))
print("lim g as x -> +infinity =", sp.limit(g,x,sp.oo))
print("lim f as x -> -infinity =", sp.limit(f,x,-sp.oo))
print("lim g as x -> -infinity =", sp.limit(g,x,-sp.oo))
print("f(0) =", f)
print("g(0) =", g.subs(x,0))
print("The functions are not identical")
Utskrift fra Python:
lim f as x -> +infinity = 0
lim g as x -> +infinity = 0
lim f as x -> -infinity = 0
lim g as x -> -infinity = 0
f(0) = 0
g(0) = 1
The functions are not identical

Fasit: Påstanden er usann.

Vanlig feil: Å forsøke å bevise påstanden uten å teste enkle moteksempler.
Sensorpunkt: Et konkret moteksempel med begge grensekontrollene gir et fullstendig argument.
Del 2 – Oppgave 2bDeriverbarhet til absoluttverdi

Oppgave 2b

Oppgave: Påstand: \(f(x)=|x|\) er deriverbar for alle reelle x, bortsett fra i \(x=0\).
Vis løsning

Hva spør oppgaven om? Vi skal bruke den stykkevise definisjonen og sammenlikne ensidige deriverte i null.

Steg 1 – Skriv stykkevis

\[|x|=\begin{cases}-x,&x<0,\x,&x\ge0.\end{cases}\]

Steg 2 – Derivert til venstre

For \(x<0\) er den deriverte \(-1\).

Steg 3 – Derivert til høyre

For \(x>0\) er den deriverte \(1\).

Steg 4 – I null

Venstresidig derivert er \(-1\), mens høyresidig derivert er \(1\). De er ikke like.

Steg 5 – Utenfor null

På hvert av intervallene \(( -\infty,0)\) og \((0,\infty)\) er funksjonen lineær og deriverbar.

Steg 6 – Konklusjon

Påstanden er sann.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Derivative(abs(x))
\(-1\) for \(x<0\), \(1\) for \(x>0\), ikke definert i 0

Tolkning: Grafen har et hjørne i origo.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = sp.Abs(x)
right = sp.limit((f-f.subs(x,0))/x, x, 0, dir="+")
left = sp.limit((f-f.subs(x,0))/x, x, 0, dir="-")
print("Piecewise derivative =", sp.diff(f,x))
print("Left derivative at 0 =", left)
print("Right derivative at 0 =", right)
print("Equal one-sided derivatives?", left == right)
print("Conclusion: differentiable for x != 0 only")
Utskrift fra Python:
Piecewise derivative = sign(x)
Left derivative at 0 = -1
Right derivative at 0 = 1
Equal one-sided derivatives? False
Conclusion: differentiable for x != 0 only

Fasit: Påstanden er sann.

Vanlig feil: Å tro at kontinuitet automatisk betyr deriverbarhet.
Sensorpunkt: De ensidige derivertene i null må sammenliknes eksplisitt.
Del 2 – Oppgave 2cEksponentiallikning og vilkår på grunntallet

Oppgave 2c

Oppgave: Påstand: For \(a^x=a^y\), der \(a\in\mathbb R\), er løsningen alltid \(x=y\).
Vis løsning

Hva spør oppgaven om? Vi skal kontrollere om funksjonen \(a^x\) alltid er én-til-én for alle reelle verdier av a.

Steg 1 – Når regelen gjelder

For \(a>0\) og \(a\ne1\) er eksponentialfunksjonen strengt monoton, og da følger \(x=y\).

Steg 2 – Test a=1

Når \(a=1\), er \(1^x=1\) for alle reelle \(x\).

Steg 3 – Lag moteksempel

Velg for eksempel \(x=0\) og \(y=2\). Da er \(1^0=1^2=1\), men \(0\ne2\).

Steg 4 – Andre problematiske baser

For \(a\le0\) er \(a^x\) heller ikke en reell funksjon for alle reelle eksponenter.

Steg 5 – Presis regel

Implikasjonen \(a^x=a^y\Rightarrow x=y\) krever normalt \(a>0\) og \(a\ne1\).

Steg 6 – Konklusjon

Påstanden slik den står, er usann.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
1^0 = 1^2
Sant selv om \(0\ne2\)

Tolkning: a=1 er et direkte moteksempel.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
from fractions import Fraction
examples = [(1,0,2),(2,0,2),(0,1,2),(-1,2,4)]
for a,x,y in examples:
    try:
        left = a**x
        right = a**y
        print("a, x, y =", (a,x,y), "values =", (left,right), "equal =", left == right)
    except Exception as exc:
        print("a, x, y =", (a,x,y), "error =", exc)
print("Counterexample: 1^0 = 1^2, but 0 != 2")
print("Injectivity rule requires a > 0 and a != 1")
Utskrift fra Python:
a, x, y = (1, 0, 2) values = (1, 1) equal = True
a, x, y = (2, 0, 2) values = (1, 4) equal = False
a, x, y = (0, 1, 2) values = (0, 0) equal = True
a, x, y = (-1, 2, 4) values = (1, 1) equal = True
Counterexample: 1^0 = 1^2, but 0 != 2
Injectivity rule requires a > 0 and a != 1

Fasit: Påstanden er usann; \(a=1\), \(x=0\), \(y=2\) er et moteksempel.

Vanlig feil: Å bruke regelen uten å oppgi vilkårene \(a>0\) og \(a e1\).
Sensorpunkt: Et enkelt moteksempel og den korrekte betingelsen bør oppgis.
Del 2 – Oppgave 3aEksponentiell regresjon

Oppgave 3a

Oppgave: Dataene for antall tusen fisk modelleres med \(A(t)=A_0k^t\). Bestem \(A_0\) og \(k\), og tolk dem.
Vis løsning

Hva spør oppgaven om? Vi skal utføre eksponentiell regresjon på alle datapunktene og tolke startverdi og vekstfaktor.

Steg 1 – Registrer dataene

Vi bruker \(t=0,1,\ldots,8\) og fisketallene \(1,2,5,\ldots,60\) tusen.

Steg 2 – Lineariser

Logaritmering gir \(\ln A=\ln A_0+t\ln k\), som kan tilpasses med lineær regresjon.

Steg 3 – Regresjonsresultat

Regresjonen gir omtrent \[\ln A_0=0,4707,\qquad \ln k=0,4911.\]

Steg 4 – Gå tilbake

\[A_0\approx e^{0,4707}=1,601,\qquad k\approx e^{0,4911}=1,634.\]

Steg 5 – Modellen

\[A(t)\approx1,601\cdot1,634^t.\]

Steg 6 – Tolkning

Modellen anslår omtrent 1,60 tusen fisk ved \(t=0\), og en månedlig vekstfaktor på 1,634, altså ca. 63,4 prosent vekst per måned.

Registrerte fisketall med eksponentiell og logistisk modell.
Registrerte fisketall med eksponentiell og logistisk modell.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
FitGrowth({(0,1),(1,2.5),(2,5.5),(3,9),(4,14),(5,22),(6,32),(7,45),(8,60)})
\(1,601\cdot1,634^t\)

Tolkning: Eksponentiell regresjon gir parametrene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import numpy as np
months = np.arange(9, dtype=float)
fish = np.array([1,2.5,5.5,9,14,22,32,45,60], dtype=float)
log_slope, log_intercept = np.polyfit(months, np.log(fish), 1)
A0 = np.exp(log_intercept)
k = np.exp(log_slope)
predicted = A0*k**months
print("ln(A0) =", round(log_intercept, 9))
print("ln(k) =", round(log_slope, 9))
print("A0 =", round(A0, 9))
print("k =", round(k, 9))
print("Monthly percentage growth =", round((k-1)*100, 3), "%")
print("Predictions =", [round(v,3) for v in predicted])
Utskrift fra Python:
ln(A0) = 0.470725992
ln(k) = 0.49107145
A0 = 1.601156198
k = 1.634066103
Monthly percentage growth = 63.407 %
Predictions = [np.float64(1.601), np.float64(2.616), np.float64(4.275), np.float64(6.986), np.float64(11.416), np.float64(18.654), np.float64(30.483), np.float64(49.811), np.float64(81.394)]

Fasit: \(A_0\approx1,601\) og \(k\approx1,634\).

Vanlig feil: Å tolke k som 163,4 prosent økning; økningen er \((k-1)\cdot100\%\approx63,4\%\).
Sensorpunkt: Regresjonsmetode, modell og praktisk parameterfortolkning skal dokumenteres.
Del 2 – Oppgave 3bLogistisk regresjon

Oppgave 3b

Oppgave: Bestem \(N_0\), \(B\) og \(r\) i \[N(t)=\frac{B}{1+\frac{B-N_0}{N_0}e^{-rt}}.\]
Vis løsning

Hva spør oppgaven om? Vi skal tilpasse en logistisk vekstkurve til alle datapunktene.

Steg 1 – Parameterbetydning

\(N_0\) er modellens startverdi, \(B\) er bæreevnen, og \(r\) styrer veksthastigheten.

Steg 2 – Utfør ikke-lineær regresjon

Vi minimerer summen av kvadrerte avvik mellom dataene og modellen.

Steg 3 – Startparameter

Regresjonen gir \(N_0\approx1,913\) tusen fisk.

Steg 4 – Bæreevne

\[B\approx111,37\text{ tusen fisk}.\]

Steg 5 – Vekstparameter

\[r\approx0,5244\text{ per måned}.\]

Steg 6 – Modellen

\[N(t)\approx\frac{111,37}{1+\frac{111,37-1,913}{1,913}e^{-0,5244t}}.\]

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
FitLogistic({(0,1),(1,2.5),(2,5.5),(3,9),(4,14),(5,22),(6,32),(7,45),(8,60)})
\(N_0\approx1,913,\ B\approx111,37,\ r\approx0,5244\)

Tolkning: Regresjonen tilpasser en S-formet kurve med øvre grense.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import numpy as np
from scipy.optimize import curve_fit
months = np.arange(9, dtype=float)
fish = np.array([1,2.5,5.5,9,14,22,32,45,60], dtype=float)
def logistic(t, N0, B, r):
    return B/(1+(B-N0)/N0*np.exp(-r*t))
params, covariance = curve_fit(
    logistic, months, fish,
    p0=(1.8,110,0.52),
    bounds=([0.01,60,0.001],[10,1000,5]),
    maxfev=100000
)
N0, B, r = params
residuals = fish-logistic(months,*params)
print("N0 =", round(N0, 9))
print("B =", round(B, 9))
print("r =", round(r, 9))
print("Predictions =", [round(v,3) for v in logistic(months,*params)])
print("Sum of squared residuals =", round(float(np.sum(residuals**2)), 9))
Utskrift fra Python:
N0 = 1.913476344
B = 111.373427311
r = 0.524392535
Predictions = [np.float64(1.913), np.float64(3.195), np.float64(5.293), np.float64(8.658), np.float64(13.883), np.float64(21.599), np.float64(32.186), np.float64(45.342), np.float64(59.814)]
Sum of squared residuals = 1.838113198

Fasit: \(N_0\approx1,913\), \(B\approx111,37\) og \(r\approx0,5244\).

Vanlig feil: Å sette \(N_0=1\) automatisk; i en regresjonsmodell kan den tilpassede startverdien avvike fra første observasjon.
Sensorpunkt: Parametrene skal komme fra dokumentert logistisk regresjon, ikke fra gjetting.
Del 2 – Oppgave 3cDeriverte og vekstfart

Oppgave 3c

Oppgave: Bestem de deriverte til den eksponentielle og logistiske modellen. Forklar hvordan vekstfarten endrer seg.
Vis løsning

Hva spør oppgaven om? Vi skal derivere begge modeller og bruke fortegn og modellstruktur til å beskrive veksten.

Steg 1 – Eksponentiell derivert

For \(A(t)=A_0k^t\) er \[A^{\prime}(t)=A_0k^t\ln k=A(t)\ln k.\]

Steg 2 – Eksponentiell vekstfart

Fordi \(k>1\), er \(\ln k>0\). Både populasjonen og den absolutte vekstfarten øker uten øvre grense i modellen.

Steg 3 – Logistisk derivert

Den logistiske modellen kan deriveres til \[N^{\prime}(t)=rN(t)\left(1-\frac{N(t)}B\right).\]

Steg 4 – Tidlig logistisk vekst

Når \(N\) er liten sammenliknet med \(B\), er vekstfarten omtrent proporsjonal med \(N\) og øker.

Steg 5 – Maksimal vekstfart

Vekstfarten er størst når \(N=B/2\), ved omtrent \(t=7,72\) måneder. Maksimal fart er \(rB/4\approx14,60\) tusen fisk per måned.

Steg 6 – Sen logistisk vekst

Etter vendepunktet avtar vekstfarten og nærmer seg 0 når \(N\to B\).

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Derivative(A); Derivative(N)
\(A\prime=A\ln k\), \(N\prime=rN(1-N/B)\)

Tolkning: CAS viser de standardiserte derivertformene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
A0 = sp.Float("1.6011561978436937")
k = sp.Float("1.634066102994754")
N0 = sp.Float("1.91347567")
B = sp.Float("111.3733952")
r = sp.Float("0.52439262")
A = A0*k**t
N = B/(1+(B-N0)/N0*sp.exp(-r*t))
A_prime = sp.diff(A,t)
N_prime = sp.simplify(sp.diff(N,t))
t_inflection = sp.log((B-N0)/N0)/r
print("A'(t) =", A_prime)
print("A'(t)/A(t) =", sp.N(sp.log(k), 10))
print("N'(t) =", N_prime)
print("Inflection time =", sp.N(t_inflection, 10))
print("N at inflection =", sp.N(N.subs(t,t_inflection), 10))
print("Maximum logistic growth rate =", sp.N(r*B/4, 10))
Utskrift fra Python:
A'(t) = 0.78628209627787874*1.634066102994754**t
A'(t)/A(t) = 0.4910714503
N'(t) = 3340.951801786*exp(0.52439262*t)/(exp(0.52439262*t) + 57.2047616001305)**2
Inflection time = 7.716807951
N at inflection = 55.68669760
Maximum logistic growth rate = 14.60084663

Fasit: \(A^{\prime}(t)=A_0k^t\ln k\), og \(N^{\prime}(t)=rN(t)(1-N(t)/B)\).

Vanlig feil: Å si at logistisk vekstfart alltid øker fordi selve populasjonen øker.
Sensorpunkt: Forklar både formel og hvordan vekstfarten utvikler seg før og etter vendepunktet.
Del 2 – Oppgave 3dModellvalg og prognose

Oppgave 3d

Oppgave: Hvilken modell beskriver situasjonen best, og hvor mange fisk gir den etter 12 måneder?
Vis løsning

Hva spør oppgaven om? Vi skal vurdere langtidsoppførselen og bruke den mest realistiske modellen til prognosen.

Steg 1 – Eksponentiell langtidsoppførsel

Den eksponentielle modellen vokser uten grense og gir etter 12 måneder omtrent 580 tusen fisk.

Steg 2 – Biologisk begrensning

En innsjø har begrenset næring, plass og oksygen. Ubegrenset vekst er derfor lite realistisk over lang tid.

Steg 3 – Logistisk langtidsoppførsel

Den logistiske modellen flater ut mot bæreevnen \(B\approx111,37\) tusen fisk.

Steg 4 – Velg modell

Den logistiske modellen er derfor den mest rimelige av de to for en populasjon i en avgrenset innsjø.

Steg 5 – Beregn N(12)

\[N(12)\approx100,72\text{ tusen fisk}.\]

Steg 6 – Praktisk svar

Modellen anslår omtrent \(101\,000\) fisk 12 måneder etter første registrering.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
N(12)
\(100,72\) tusen

Tolkning: Den logistiske modellen gir en prognose under bæreevnen.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import math
A0 = 1.6011561978436937
k = 1.634066102994754
N0 = 1.91347567
B = 111.3733952
r = 0.52439262
def A(t):
    return A0*k**t
def N(t):
    return B/(1+(B-N0)/N0*math.exp(-r*t))
print("Exponential A(12) =", round(A(12), 6), "thousand fish")
print("Logistic N(12) =", round(N(12), 6), "thousand fish")
print("Logistic estimate in individual fish =", round(N(12)*1000))
print("Carrying capacity =", round(B, 6), "thousand fish")
print("Chosen model: logistic")
Utskrift fra Python:
Exponential A(12) = 580.322159 thousand fish
Logistic N(12) = 100.716228 thousand fish
Logistic estimate in individual fish = 100716
Carrying capacity = 111.373395 thousand fish
Chosen model: logistic

Fasit: Logistisk modell; omtrent \(100,7\) tusen, altså ca. \(101\,000\) fisk.

Vanlig feil: Å velge modell bare fordi den gir høyest tall, uten å vurdere praktisk plausibilitet.
Sensorpunkt: Modellvalget skal begrunnes biologisk, og prognosen skal ha riktig enhet.
Del 2 – Oppgave 4Bestemmelse av logaritmebase

Oppgave 4

Oppgave: Grafen til \(f(x)=\log_a(x)\) er gitt. Bestem \(a\).
Vis løsning

Hva spør oppgaven om? Vi skal bruke kjennetegnspunktet \((a,1)\), siden \(\log_a(a)=1\).

Steg 1 – Les av et sikkert punkt

Grafen går gjennom omtrent \((5,1)\).

Steg 2 – Bruk logaritmedefinisjonen

\[\log_a(a)=1.\] Derfor er x-koordinaten når y=1 lik grunntallet.

Steg 3 – Finn a

Avlesningen gir \(a=5\).

Steg 4 – Ekstra kontroll

Grafen går også gjennom omtrent \((25,2)\).

Steg 5 – Kontroller andre punkt

\[\log_5(25)=\log_5(5^2)=2.\]

Steg 6 – Retning

Siden grafen er voksende, må \(a>1\), noe som også stemmer med \(a=5\).

Grafen passer med logaritme med grunntall 5.
Grafen passer med logaritme med grunntall 5.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
log(5,5); log(5,25)
\(1\) og \(2\)

Tolkning: Punktene (5,1) og (25,2) bekrefter basen.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
a = sp.Integer(5)
print("log base 5 of 5 =", sp.log(5,a))
print("log base 5 of 25 =", sp.log(25,a))
print("log base 5 of 1 =", sp.log(1,a))
print("Because log_a(a)=1, the graph point (5,1) gives a=5")
for x in [1,5,25]:
    print("x =", x, "f(x) =", sp.N(sp.log(x,a), 8))
Utskrift fra Python:
log base 5 of 5 = 1
log base 5 of 25 = 2
log base 5 of 1 = 0
Because log_a(a)=1, the graph point (5,1) gives a=5
x = 1 f(x) = 0
x = 5 f(x) = 1.0000000
x = 25 f(x) = 2.0000000

Fasit: \(a=5\).

Vanlig feil: Å bruke punktet \((1,0)\), som alle logaritmefunksjoner går gjennom, til å bestemme basen.
Sensorpunkt: Argumentet \(\log_a(a)=1\) og gjerne kontrollen med \(a^2\) gir et robust svar.
Del 2 – Oppgave 5aÉn-til-én-test og omvendt funksjon

Oppgave 5a

Oppgave: Avgjør og begrunn for hver av funksjonene \(f\), \(g\) og \(h\) om de har en omvendt funksjon.
Vis løsning

Hva spør oppgaven om? Vi skal bruke den horisontale linjetesten: hver y-verdi kan forekomme høyst én gang.

Steg 1 – Funksjonen f

Den viste grenen til \(f(x)=x^2+3\) har domene \(x\ge0\) og er strengt voksende. Den består den horisontale linjetesten.

Steg 2 – Konklusjon for f

\(f\) er én-til-én og har en omvendt funksjon.

Steg 3 – Funksjonen g

De to lineære grenene gir gjentatte y-verdier. For eksempel kan \(y=0\) knyttes til mer enn én x-verdi i den viste grafen.

Steg 4 – Konklusjon for g

\(g\) er ikke én-til-én og har derfor ingen omvendt funksjon på hele domenet.

Steg 5 – Funksjonen h

Kubikkgrafen har både lokalt maksimum og lokalt minimum. Mange horisontale linjer skjærer grafen tre ganger.

Steg 6 – Konklusjon for h

\(h\) er ikke én-til-én og har ingen omvendt funksjon på hele domenet.

Bare den monotone grenen f er én-til-én på det viste domenet.
Bare den monotone grenen f er én-til-én på det viste domenet.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
HorizontalLineTest(f); HorizontalLineTest(g); HorizontalLineTest(h)
Bare f består testen

Tolkning: Grafisk kontroll av antall skjæringer med horisontale linjer.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = x**2+3
h = x**3-2*x+5
print("f'(x) =", sp.diff(f,x))
print("On x >= 0, f'(x) >= 0 and f is strictly increasing except at the endpoint")
print("h'(x) =", sp.factor(sp.diff(h,x)))
critical_h = sp.solve(sp.Eq(sp.diff(h,x),0),x)
print("Critical points of h =", critical_h)
print("h-values at critical points =", [sp.N(h.subs(x,c),8) for c in critical_h])
print("g has overlapping output values from its two linear branches")
print("Inverse existence: f yes, g no, h no")
Utskrift fra Python:
f'(x) = 2*x
On x >= 0, f'(x) >= 0 and f is strictly increasing except at the endpoint
h'(x) = 3*x**2 - 2
Critical points of h = [-sqrt(6)/3, sqrt(6)/3]
h-values at critical points = [6.0886621, 3.9113379]
g has overlapping output values from its two linear branches
Inverse existence: f yes, g no, h no

Fasit: \(f\) har omvendt funksjon; \(g\) og \(h\) har ikke.

Vanlig feil: Å tro at alle funksjoner automatisk har en omvendt funksjon.
Sensorpunkt: Begrunnelsen skal knyttes til én-til-én-egenskap eller horisontal linjetest.
Del 2 – Oppgave 5bUtledning av omvendt funksjon

Oppgave 5b

Oppgave: Bestem funksjonsuttrykk og definisjonsmengde til den omvendte funksjonen der den eksisterer.
Vis løsning

Hva spør oppgaven om? Vi skal løse \(y=x^2+3\) for x under betingelsen \(x\ge0\), og bytte roller mellom x og y.

Steg 1 – Start med f

Fra grafen er \[f(x)=x^2+3,\qquad x\ge0.\]

Steg 2 – Sett y=f(x)

\[y=x^2+3.\]

Steg 3 – Isoler x²

\[x^2=y-3.\]

Steg 4 – Velg riktig rot

Siden originaldomenet er \(x\ge0\), velger vi den positive roten: \[x=\sqrt{y-3}.\]

Steg 5 – Bytt variabelnavn

\[f^{-1}(x)=\sqrt{x-3}.\]

Steg 6 – Definisjonsmengde

Verdimengden til f er \([3,\infty)\), og blir domenet til den omvendte: \[D_{f^{-1}}=[3,\infty).\]

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Invert(x^2+3, x>=0)
\(f^{-1}(x)=\sqrt{x-3}\), \(x\ge3\)

Tolkning: Komposisjonene gir identiteten på de riktige domenene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
x = sp.symbols("x", nonnegative=True)
y = sp.symbols("y", real=True)
f = x**2+3
inverse = sp.sqrt(y-3)
print("f(x) =", f, "for x >= 0")
print("Solve y = f(x) with x >= 0 gives x =", inverse)
print("f inverse(y) =", inverse)
print("Check f(f_inverse(y)) =", sp.simplify(inverse**2+3))
print("Check f_inverse(f(x)) =", sp.simplify(sp.sqrt(f-3)))
print("Domain of inverse: y >= 3")
Utskrift fra Python:
f(x) = x**2 + 3 for x >= 0
Solve y = f(x) with x >= 0 gives x = sqrt(y - 3)
f inverse(y) = sqrt(y - 3)
Check f(f_inverse(y)) = y
Check f_inverse(f(x)) = x
Domain of inverse: y >= 3

Fasit: \(f^{-1}(x)=\sqrt{x-3}\) med definisjonsmengde \([3,\infty)\).

Vanlig feil: Å ta med både positiv og negativ kvadratrot; den opprinnelige funksjonen er begrenset til x≥0.
Sensorpunkt: Riktig rotvalg og bytte mellom verdi- og definisjonsmengde er sentralt.
Del 2 – Oppgave 6aFart fra parameterfunksjon

Oppgave 6a

Oppgave: \(\vec r_1(t)=[-10+6t,35-3t]\) og \(\vec r_2(t)=[2+5t,4t]\). Hvor fort flyr hver fugl?
Vis løsning

Hva spør oppgaven om? Vi skal derivere posisjonsvektorene og finne lengden av hver konstante hastighetsvektor.

Steg 1 – Hastighet til fugl 1

\[\vec v_1=\vec r_1^{\prime}(t)=[6,-3].\]

Steg 2 – Farten til fugl 1

\[|\vec v_1|=\sqrt{6^2+(-3)^2}=\sqrt{45}=3\sqrt5\approx6,71.\]

Steg 3 – Hastighet til fugl 2

\[\vec v_2=\vec r_2^{\prime}(t)=[5,4].\]

Steg 4 – Farten til fugl 2

\[|\vec v_2|=\sqrt{5^2+4^2}=\sqrt{41}\approx6,40.\]

Steg 5 – Enhet

Koordinatene er meter og tiden sekunder, så fartene er i meter per sekund.

Steg 6 – Sammenlikning

Fugl 1 flyr litt raskere enn fugl 2.

De to småfuglene flyr langs rette linjer, mens rovfuglen følger en parabel.
De to småfuglene flyr langs rette linjer, mens rovfuglen følger en parabel.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Length((6,-3)); Length((5,4))
\(3\sqrt5\) og \(\sqrt{41}\)

Tolkning: Lengdene til hastighetsvektorene gir fartene.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
r1 = sp.Matrix([-10+6*t,35-3*t])
r2 = sp.Matrix([2+5*t,4*t])
v1 = r1.diff(t)
v2 = r2.diff(t)
speed1 = sp.sqrt(v1.dot(v1))
speed2 = sp.sqrt(v2.dot(v2))
print("v1 =", tuple(v1), "speed1 =", speed1, "=", sp.N(speed1,10), "m/s")
print("v2 =", tuple(v2), "speed2 =", speed2, "=", sp.N(speed2,10), "m/s")
print("Speed difference =", sp.N(speed1-speed2,10), "m/s")
Utskrift fra Python:
v1 = (6, -3) speed1 = 3*sqrt(5) = 6.708203933 m/s
v2 = (5, 4) speed2 = sqrt(41) = 6.403124237 m/s
Speed difference = 0.3050796951 m/s

Fasit: Fugl 1: \(3\sqrt5\approx6,71\text{ m/s}\). Fugl 2: \(\sqrt{41}\approx6,40\text{ m/s}\).

Vanlig feil: Å oppgi hastighetsvektoren som fart uten å ta lengden.
Sensorpunkt: Derivasjon, vektorlengde og enhet skal være med.
Del 2 – Oppgave 6bAvstand mellom to punkter

Oppgave 6b

Oppgave: Hvor stor er avstanden mellom småfuglene når \(t=0\)?
Vis løsning

Hva spør oppgaven om? Vi skal finne startposisjonene og bruke avstandsformelen.

Steg 1 – Startposisjon til fugl 1

\[\vec r_1(0)=[-10,35].\]

Steg 2 – Startposisjon til fugl 2

\[\vec r_2(0)=[2,0].\]

Steg 3 – Differansevektor

\[\vec r_1(0)-\vec r_2(0)=[-12,35].\]

Steg 4 – Avstandsformelen

\[d=\sqrt{(-12)^2+35^2}.\]

Steg 5 – Beregn

\[d=\sqrt{144+1225}=\sqrt{1369}=37.\]

Steg 6 – Enhet

Avstanden er 37 meter.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Distance((-10,35),(2,0))
\(37\)

Tolkning: GeoGebra beregner punktavstanden.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
r1_0 = sp.Matrix([-10,35])
r2_0 = sp.Matrix([2,0])
difference = r1_0-r2_0
distance_squared = difference.dot(difference)
distance = sp.sqrt(distance_squared)
print("r1(0) =", tuple(r1_0))
print("r2(0) =", tuple(r2_0))
print("Difference vector =", tuple(difference))
print("Distance squared =", distance_squared)
print("Distance =", distance, "meters")
Utskrift fra Python:
r1(0) = (-10, 35)
r2(0) = (2, 0)
Difference vector = (-12, 35)
Distance squared = 1369
Distance = 37 meters

Fasit: \(37\text{ m}\).

Vanlig feil: Å legge sammen posisjonsvektorene i stedet for å trekke dem fra.
Sensorpunkt: Differansevektor, kvadratsum og enhet gir et komplett svar.
Del 2 – Oppgave 6cMinimering av avstand

Oppgave 6c

Oppgave: Når er småfuglene nærmest hverandre, og hvor stor er minste avstand?
Vis løsning

Hva spør oppgaven om? Vi skal minimere kvadratet av avstanden, som har samme minimum som selve avstanden.

Steg 1 – Relativ posisjon

\[\vec r_1(t)-\vec r_2(t)=[t-12,35-7t].\]

Steg 2 – Kvadrert avstand

\[D(t)=(t-12)^2+(35-7t)^2.\]

Steg 3 – Utvid

\[D(t)=50t^2-514t+1369.\]

Steg 4 – Finn toppunktet

Parabelen vender oppover. Minimum er ved \[t=-\frac{-514}{2\cdot50}=\frac{257}{50}=5,14.\]

Steg 5 – Minste kvadrerte avstand

\[D(5,14)=\frac{2401}{50}.\]

Steg 6 – Ta kvadratroten

\[d_{\min}=\sqrt{\frac{2401}{50}}=\frac{49\sqrt2}{10}\approx6,93\text{ m}.\]

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Minimize((t-12)^2+(35-7t)^2,t)
\(t=5,14\), \(d=6,93\)

Tolkning: CAS minimerer den kvadrerte avstanden.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
relative = sp.Matrix([t-12,35-7*t])
D = sp.expand(relative.dot(relative))
critical = sp.solve(sp.Eq(sp.diff(D,t),0),t)[0]
D_min = sp.simplify(D.subs(t,critical))
d_min = sp.sqrt(D_min)
print("Relative position =", tuple(relative))
print("Squared distance D(t) =", D)
print("D'(t) =", sp.diff(D,t))
print("Minimum time =", critical, "=", sp.N(critical,10), "s")
print("Minimum squared distance =", D_min)
print("Minimum distance =", d_min, "=", sp.N(d_min,10), "m")
Utskrift fra Python:
Relative position = (t - 12, 35 - 7*t)
Squared distance D(t) = 50*t**2 - 514*t + 1369
D'(t) = 100*t - 514
Minimum time = 257/50 = 5.140000000 s
Minimum squared distance = 2401/50
Minimum distance = 49*sqrt(2)/10 = 6.929646456 m

Fasit: Fuglene er nærmest etter \(5,14\) s, med avstand \(\frac{49\sqrt2}{10}\approx6,93\) m.

Vanlig feil: Å minimere en av koordinatforskjellene i stedet for den samlede avstanden.
Sensorpunkt: Bruk kvadrert avstand og vis at kritisk punkt er et minimum.
Del 2 – Oppgave 6dAnalyse av jakt med parameterkurver

Oppgave 6d

Oppgave: Rovfuglen har posisjon \(\vec r_R(t)=[7t-10,2t^2-6t+5]\) for \(0\le t\le6\). Beskriv jakten med nødvendige beregninger.
Vis løsning

Hva spør oppgaven om? Vi skal undersøke om rovfuglen treffer en småfugl, og finne minste avstand til hver av dem i tidsintervallet.

Steg 1 – Startavstander

Ved \(t=0\) er rovfuglen 30 m fra fugl 1 og 13 m fra fugl 2. Den starter altså nærmest fugl 2.

Steg 2 – Trefftest

Likningssystemene \(\vec r_R(t)=\vec r_1(t)\) og \(\vec r_R(t)=\vec r_2(t)\) har ingen felles løsning i \([0,6]\). Rovfuglen fanger ingen av dem.

Steg 3 – Avstand til fugl 1

Kvadrert avstand blir \[D_1(t)=4t^4-12t^3-110t^2+180t+900.\] Globalt minimum i intervallet opptrer ved \(t\approx4,676\).

Steg 4 – Minste avstand til fugl 1

\[d_1\approx4,69\text{ m}.\]

Steg 5 – Avstand til fugl 2

\[D_2(t)=4t^4-40t^3+124t^2-148t+169.\] Globalt minimum er ved \(t\approx4,528\), med \(d_2\approx3,03\) m.

Steg 6 – Beskrivelse

Rovfuglen dykker først og stiger deretter. Den holder seg nærmest fugl 2 gjennom intervallet, kommer svært nær etter ca. 4,53 s, men bommer og avstanden øker igjen.

Rovfuglen kommer nærmest småfugl 2, men avstanden blir aldri null.
Rovfuglen kommer nærmest småfugl 2, men avstanden blir aldri null.

GeoGebra/CAS-kontroll

GeoGebra – CAS/grafikk
1
Distance(rR(t),r1(t)); Distance(rR(t),r2(t)); Extremum
Ingen treff; minste avstander ca. 4,69 m og 3,03 m

Tolkning: Graf og numerisk minimering beskriver jakten.

Python-kontroll med SymPy

Python 3 – faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
r1 = sp.Matrix([-10+6*t,35-3*t])
r2 = sp.Matrix([2+5*t,4*t])
rR = sp.Matrix([7*t-10,2*t**2-6*t+5])
def squared_distance(a,b):
    return sp.expand(sum((a[i]-b[i])**2 for i in range(2)))
D1 = squared_distance(rR,r1)
D2 = squared_distance(rR,r2)
print("D1(t) =", D1)
print("D2(t) =", D2)
for name,D in [("bird 1",D1),("bird 2",D2)]:
    roots = [complex(z) for z in sp.nroots(sp.diff(D,t))]
    candidates = [0.0,6.0] + [z.real for z in roots if abs(z.imag)<1e-9 and 0<=z.real<=6]
    best_t = min(candidates, key=lambda value: float(D.subs(t,value)))
    best_d = float(sp.sqrt(D.subs(t,best_t)))
    print(name, "critical candidates =", [round(v,9) for v in candidates])
    print(name, "minimum at t =", round(best_t,9), "distance =", round(best_d,9), "m")
print("Exact same-time intersections with bird 1 =", sp.solve([sp.Eq(rR[0],r1[0]),sp.Eq(rR[1],r1[1])],[t], dict=True))
print("Exact same-time intersections with bird 2 =", sp.solve([sp.Eq(rR[0],r2[0]),sp.Eq(rR[1],r2[1])],[t], dict=True))
Utskrift fra Python:
D1(t) = 4*t**4 - 12*t**3 - 110*t**2 + 180*t + 900
D2(t) = 4*t**4 - 40*t**3 + 124*t**2 - 148*t + 169
bird 1 critical candidates = [0.0, 6.0, 0.756072889, 4.676018447]
bird 1 minimum at t = 4.676018447 distance = 4.685489145 m
bird 2 critical candidates = [0.0, 6.0, 1.079388965, 1.892580882, 4.528030153]
bird 2 minimum at t = 4.528030153 distance = 3.032092488 m
Exact same-time intersections with bird 1 = []
Exact same-time intersections with bird 2 = []

Fasit: Rovfuglen fanger ingen. Den kommer nærmest fugl 2 ved \(t\approx4,528\) s, med avstand ca. \(3,03\) m; nærmest fugl 1 ved \(t\approx4,676\) s, med avstand ca. \(4,69\) m.

Vanlig feil: Å sammenlikne banene geometrisk uten å kreve samme tidspunkt t.
Sensorpunkt: En full beskrivelse bør inneholde trefftest, minimumsavstander, tidspunkter og en verbal tolkning.
Kilde og metode: Oppgavetekstene er transkribert fra Utdanningsdirektoratets eksamenssett REA3056 Matematikk R1, høsten 2024 (LK20). Løsningene er originale. Alle Python-blokker er kjørt ved generering, og utskriften er hentet direkte fra kjøringen. Programkode, grafer, matematiske symboler og tabellverdier er kontrollert mot de renderte PDF-sidene.