R1 eksamenVår 2024LK20

Matematikk R1 eksamen – vår 2024

ifingo
Norsk (Bokmål)

ifingo · Matematikk R1

Matematikk R1 - våren 2024, LK20 (REA3056)

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 - Oppgave 1Produktregelen og kjerneregelen

Oppgave 1

Oppgave: Deriver funksjonen \[f(x)=4x^2\ln(3x).\]
Vis løsning

Hva spør oppgaven om? Vi skal derivere et produkt og samtidig bruke at den deriverte av \(\ln(3x)\) er \(1/x\) for \(x>0\).

Steg 1 - Finn definisjonsmengden

Logaritmen krever \(3x>0\), altså \(x>0\).

Steg 2 - Del funksjonen i to faktorer

La \(u(x)=4x^2\) og \(v(x)=\ln(3x)\). Da er \(u^{\prime}(x)=8x\).

Steg 3 - Deriver logaritmen

Kjerneregelen gir \[v^{\prime}(x)=\frac{1}{3x}\cdot3=\frac1x.\]

Steg 4 - Bruk produktregelen

\[f^{\prime}(x)=u^{\prime}(x)v(x)+u(x)v^{\prime}(x).\]

Steg 5 - Sett inn og forenkle

\[f^{\prime}(x)=8x\ln(3x)+4x^2\frac1x=8x\ln(3x)+4x.\]

Steg 6 - Faktoriser

\[f^{\prime}(x)=4x\bigl(2\ln(3x)+1\bigr),\qquad x>0.\]

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Derivative[4x^2 ln(3x)]
\(8x\ln(3x)+4x\)

Tolkning: CAS bekrefter produktregelen og kjerneregelen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
f = 4*x**2*sp.log(3*x)
f_prime = sp.diff(f, x)
print("f(x) =", f)
print("f'(x) =", f_prime)
print("Expanded =", sp.expand(f_prime))
print("Factored =", sp.factor(f_prime))
print("Check at x=1:", sp.simplify(f_prime.subs(x, 1)))
Utskrift fra Python:
f(x) = 4*x**2*log(3*x)
f'(x) = 8*x*log(3*x) + 4*x
Expanded = 8*x*log(x) + 4*x + 8*x*log(3)
Factored = 4*x*(2*log(x) + 1 + 2*log(3))
Check at x=1: 4 + log(6561)

Fasit: \(f^{\prime}(x)=8x\ln(3x)+4x=4x(2\ln(3x)+1)\), for \(x>0\).

Vanlig feil: Å skrive den deriverte av \(\ln(3x)\) som \(1/(3x)\) uten å multiplisere med den indre deriverte 3.
Sensorpunkt: Produktregelen, kjerneregelen og domenet må være synlige.
Del 1 - Oppgave 2Logaritmelikning

Oppgave 2

Oppgave: Løs likningen \[(\ln x)^2-\ln x=6.\]
Vis løsning

Hva spør oppgaven om? Vi skal gjøre likningen om til en andregradslikning i variabelen \(y=\ln x\).

Steg 1 - Domene

Fordi \(\ln x\) forekommer, må \(x>0\).

Steg 2 - Innfør en hjelpevariabel

Sett \(y=\ln x\). Da blir likningen \[y^2-y=6.\]

Steg 3 - Samle alt på én side

\[y^2-y-6=0.\]

Steg 4 - Faktoriser

\[(y-3)(y+2)=0.\] Dermed er \(y=3\) eller \(y=-2\).

Steg 5 - Gå tilbake til x

\[\ln x=3\Rightarrow x=e^3,\qquad \ln x=-2\Rightarrow x=e^{-2}.\]

Steg 6 - Kontroller

Begge løsningene er positive og er derfor i definisjonsmengden.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[(ln(x))^2-ln(x)=6,x]
\(x=e^{-2}\) eller \(x=e^3\)

Tolkning: CAS gir de to positive løsningene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
y = sp.symbols("y", real=True)
poly = y**2-y-6
roots_y = sp.solve(sp.Eq(poly, 0), y)
roots_x = [sp.exp(root) for root in roots_y]
print("Quadratic in y = ln(x):", poly)
print("Solutions for y =", roots_y)
print("Solutions for x =", roots_x)
for value in roots_x:
    check = sp.simplify(sp.log(value)**2-sp.log(value))
    print("Check x =", value, "gives", check)
Utskrift fra Python:
Quadratic in y = ln(x): y**2 - y - 6
Solutions for y = [-2, 3]
Solutions for x = [exp(-2), exp(3)]
Check x = exp(-2) gives 6
Check x = exp(3) gives 6

Fasit: \(x=e^{-2}\) eller \(x=e^3\).

Vanlig feil: Å løse \((\ln x)^2\) som om det var \(\ln(x^2)\).
Sensorpunkt: En ryddig substitusjon og tilbakeføring til \(x\) gir full uttelling.
Del 1 - Oppgave 3Grenser for eksponentialfunksjon

Oppgave 3

Oppgave: Funksjonen er \[f(x)=e^{-x+1},\qquad D_f=\mathbb R.\] Bestem \(\lim_{x\to\infty}f(x)\) og \(\lim_{x\to-\infty}f(x)\).
Vis løsning

Hva spør oppgaven om? Vi skal undersøke hva eksponenten \(1-x\) gjør i de to retningene.

Steg 1 - Skriv eksponenten tydelig

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

Steg 2 - Når x går mot pluss uendelig

Da går \(1-x\to-\infty\).

Steg 3 - Bruk eksponentialgrensen

\[e^{1-x}\to0,\] fordi \(e^u\to0\) når \(u\to-\infty\).

Steg 4 - Når x går mot minus uendelig

Da går \(1-x\to\infty\).

Steg 5 - Andre grense

\[e^{1-x}\to\infty.\]

Steg 6 - Tolkning

Grafen har horisontal asymptote \(y=0\) mot høyre, men vokser uten øvre grense mot venstre.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Limit[e^(1-x),x,Infinity], Limit[e^(1-x),x,-Infinity)
\(0\) og \(+\infty\)

Tolkning: CAS bekrefter begge grensene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = sp.exp(1-x)
right = sp.limit(f, x, sp.oo)
left = sp.limit(f, x, -sp.oo)
print("f(x) =", f)
print("Limit as x -> +infinity =", right)
print("Limit as x -> -infinity =", left)
for value in [5, 10, -5, -10]:
    print("f(", value, ") =", sp.N(f.subs(x, value), 10))
Utskrift fra Python:
f(x) = exp(1 - x)
Limit as x -> +infinity = 0
Limit as x -> -infinity = oo
f( 5 ) = 0.01831563889
f( 10 ) = 0.0001234098041
f( -5 ) = 403.4287935
f( -10 ) = 59874.14172

Fasit: \(\displaystyle\lim_{x\to\infty}f(x)=0\) og \(\displaystyle\lim_{x\to-\infty}f(x)=+\infty\).

Vanlig feil: Å glemme at minus foran \(x\) snur hvilken retning eksponenten går.
Sensorpunkt: Forklar grenseverdien via eksponenten, ikke bare ved å oppgi svar.
Del 1 - Oppgave 4aKollinearitet med determinant

Oppgave 4a

Oppgave: Punktene er \(A(3,4)\), \(B(-1,-2)\) og \(C(3+t,2t)\). Bestem \(t\) slik at punktene ligger på en rett linje.
Vis løsning

Hva spør oppgaven om? Vi skal kreve at vektorene \(\overrightarrow{AB}\) og \(\overrightarrow{AC}\) er parallelle.

Steg 1 - Finn vektorene

\[\overrightarrow{AB}=(-4,-6),\qquad \overrightarrow{AC}=(t,2t-4).\]

Steg 2 - Bruk determinantkriteriet

Vektorene er parallelle når determinanten er null.

Steg 3 - Sett opp determinanten

\[\det\begin{pmatrix}-4&t\-6&2t-4\end{pmatrix}=(-4)(2t-4)-(-6)t.\]

Steg 4 - Forenkle

\[-8t+16+6t=16-2t.\]

Steg 5 - Løs likningen

\[16-2t=0\Rightarrow t=8.\]

Steg 6 - Kontroll

Når \(t=8\), er \(\overrightarrow{AC}=(8,12)=-2\overrightarrow{AB}\), så punktene er kollineære.

Punktene A og B samt de to løsningene for C i deloppgave 4b.
Punktene A og B samt de to løsningene for C i deloppgave 4b.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Determinant({(-4,-6),(t,2t-4)})=0
\(t=8\)

Tolkning: Determinanten blir null bare for t=8.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
AB = sp.Matrix([-4, -6])
AC = sp.Matrix([t, 2*t-4])
determinant = sp.det(sp.Matrix.hstack(AB, AC))
solution = sp.solve(sp.Eq(determinant, 0), t)
print("AB =", tuple(AB))
print("AC =", tuple(AC))
print("Determinant =", sp.expand(determinant))
print("t =", solution)
print("AC when t=8 =", tuple(AC.subs(t, 8)))
print("Ratio check AC/AB =", sp.Rational(AC.subs(t,8)[0], AB[0]))
Utskrift fra Python:
AB = (-4, -6)
AC = (t, 2*t - 4)
Determinant = 16 - 2*t
t = [8]
AC when t=8 = (8, 12)
Ratio check AC/AB = -2

Fasit: \(t=8\).

Vanlig feil: Å sammenlikne stigningstall uten å håndtere mulige nullkomponenter systematisk.
Sensorpunkt: En null determinant eller et tydelig parallellitetsargument må vises.
Del 1 - Oppgave 4bRett vinkel og skalarprodukt

Oppgave 4b

Oppgave: Bestem \(t\) slik at \(A\), \(B\) og \(C\) danner en trekant med \(\angle C=90^{\circ}\).
Vis løsning

Hva spør oppgaven om? Vi skal kreve at vektorene fra C til A og fra C til B har skalarprodukt null.

Steg 1 - Vektorene fra C

\[\overrightarrow{CA}=(-t,4-2t),\qquad \overrightarrow{CB}=(-4-t,-2-2t).\]

Steg 2 - Ortogonalitetskriteriet

\(\angle C=90^{\circ}\) akkurat når \(\overrightarrow{CA}\cdot\overrightarrow{CB}=0\).

Steg 3 - Sett opp skalarproduktet

\[(-t)(-4-t)+(4-2t)(-2-2t)=0.\]

Steg 4 - Multipliser ut

Første ledd er \(4t+t^2\), og andre ledd er \(-8-4t+4t^2\). Dermed får vi \[5t^2-8=0.\]

Steg 5 - Løs

\[t^2=\frac85\Rightarrow t=\pm\sqrt{\frac85}=\pm\frac{2\sqrt{10}}5.\]

Steg 6 - Trekantsjekk

Ingen av disse verdiene er \(t=8\), så punktene er ikke kollineære. Begge gir derfor en reell trekant med rett vinkel ved C.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Dot((-t,4-2t),(-4-t,-2-2t))=0
\(t=\pm2\sqrt{10}/5\)

Tolkning: CAS gir begge løsningene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
CA = sp.Matrix([-t, 4-2*t])
CB = sp.Matrix([-4-t, -2-2*t])
dot_product = sp.expand(CA.dot(CB))
solutions = sp.solve(sp.Eq(dot_product, 0), t)
print("CA =", tuple(CA))
print("CB =", tuple(CB))
print("CA dot CB =", dot_product)
print("Solutions =", solutions)
for value in solutions:
    print("t =", value, "dot check =", sp.simplify(dot_product.subs(t,value)))
    print("C =", (sp.simplify(3+value), sp.simplify(2*value)))
Utskrift fra Python:
CA = (-t, 4 - 2*t)
CB = (-t - 4, -2*t - 2)
CA dot CB = 5*t**2 - 8
Solutions = [-2*sqrt(10)/5, 2*sqrt(10)/5]
t = -2*sqrt(10)/5 dot check = 0
C = (3 - 2*sqrt(10)/5, -4*sqrt(10)/5)
t = 2*sqrt(10)/5 dot check = 0
C = (2*sqrt(10)/5 + 3, 4*sqrt(10)/5)

Fasit: \(t=-\frac{2\sqrt{10}}5\) eller \(t=\frac{2\sqrt{10}}5\).

Vanlig feil: Å bruke \(\overrightarrow{AC}\) sammen med \(\overrightarrow{CB}\); vektorene må ha samme startpunkt C.
Sensorpunkt: Skalarproduktet, andregradslikningen og kontrollen av at trekanten ikke er degenerert bør være med.
Del 1 - Oppgave 5Kontinuitet på en ny definisjonsmengde

Oppgave 5

Oppgave: \[f(x)=\begin{cases}x,&0\le x\le2,\5-x,&2\lt x\le5.\end{cases}\] Gi \(f\) en størst mulig ny definisjonsmengde slik at den er kontinuerlig og verdimengden er uendret.
Vis løsning

Hva spør oppgaven om? Vi skal identifisere spranget ved \(x=2\), fjerne minst mulig fra domenet og kontrollere verdimengden.

Steg 1 - Opprinnelig verdimengde

Første gren gir \([0,2]\). Andre gren gir \([0,3)\). Samlet er verdimengden \([0,3)\).

Steg 2 - Undersøk x=2

\[f(2)=2,\qquad \lim_{x\to2^+}(5-x)=3.\] Høyregrensen er ikke lik funksjonsverdien.

Steg 3 - Fjern sprangpunktet

Ved å ta bort \(x=2\) blir domenet delt i to komponenter der hver formel er kontinuerlig.

Steg 4 - Nytt domene

\[D_f^{\text{ny}}=[0,2)\cup(2,5].\]

Steg 5 - Kontroller verdimengden

På \([0,2)\) får vi \([0,2)\). På \((2,5]\) får vi \([0,3)\). Samlet er fortsatt \([0,3)\).

Steg 6 - Hvorfor domenet er størst mulig

Vi har bare fjernet selve punktet som skaper bruddet. Legges \(x=2\) tilbake mens punkter fra høyre beholdes vil kontinuiteten svikte igjen.

Funksjonen blir kontinuerlig på den relative definisjonsmengden når x=2 fjernes.
Funksjonen blir kontinuerlig på den relative definisjonsmengden når x=2 fjernes.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Function[x,0<=x<2] og Function[5-x,2<x<=5]
\([0,2)\cup(2,5]\)

Tolkning: Grafen består av to kontinuerlige deler, og verdimengden er fortsatt [0,3).

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
left_value = sp.Integer(2)
right_limit = sp.limit(5-x, x, 2, dir="+")
print("f(2) from the first branch =", left_value)
print("Right-hand limit at x=2 =", right_limit)
print("Continuous at x=2:", left_value == right_limit)
print("Old range = [0, 3)")
print("New domain = [0,2) union (2,5]")
print("Range on first part = [0,2)")
print("Range on second part = [0,3)")
print("New total range = [0,3)")
Utskrift fra Python:
f(2) from the first branch = 2
Right-hand limit at x=2 = 3
Continuous at x=2: False
Old range = [0, 3)
New domain = [0,2) union (2,5]
Range on first part = [0,2)
Range on second part = [0,3)
New total range = [0,3)

Fasit: En størst mulig definisjonsmengde er \(D_f=[0,2)\cup(2,5]\). Verdimengden er fortsatt \([0,3)\).

Vanlig feil: Å endre selve funksjonsformelen eller fjerne et helt intervall når det holder å fjerne ett punkt.
Sensorpunkt: Kontinuiteten ved spranget og uendret verdimengde må begge dokumenteres.

Del 2 - med hjelpemidler

Del 2 - Oppgave 1aLogistisk likning

Oppgave 1a

Oppgave: \[S(t)=\frac{300}{1+28e^{-0,3t}}.\] Hvor lang tid tar det før 100 elever er smittet?
Vis løsning

Hva spør oppgaven om? Vi skal løse \(S(t)=100\) og tolke tiden i dager.

Steg 1 - Sett modellen lik 100

\[100=\frac{300}{1+28e^{-0,3t}}.\]

Steg 2 - Multipliser med nevneren

\[100(1+28e^{-0,3t})=300.\]

Steg 3 - Isoler eksponentialleddet

\[1+28e^{-0,3t}=3\Rightarrow 28e^{-0,3t}=2.\]

Steg 4 - Del på 28

\[e^{-0,3t}=\frac1{14}.\]

Steg 5 - Ta naturlig logaritme

\[-0,3t=\ln(1/14)=-\ln14.\]

Steg 6 - Løs og rund

\[t=\frac{\ln14}{0,3}\approx8,80.\] Det tar altså omtrent 8,8 dager.

Den logistiske modellen, tidspunktet for 100 smittede og modellens øvre nivå.
Den logistiske modellen, tidspunktet for 100 smittede og modellens øvre nivå.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[300/(1+28e^(-0.3t))=100,t]
\(t=\ln(14)/0,3\approx8,80\)

Tolkning: CAS løser den logistiske likningen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
S = 300/(1+28*sp.exp(-sp.Rational(3,10)*t))
solution = sp.solve(sp.Eq(S, 100), t)[0]
print("S(t) =", S)
print("Exact time =", solution)
print("Time in days =", sp.N(solution, 12))
print("Check S(t) =", sp.simplify(S.subs(t, solution)))
print("Rounded to one decimal =", round(float(solution), 1), "days")
Utskrift fra Python:
S(t) = 300/(1 + 28*exp(-3*t/10))
Exact time = 10*log(14**(1/3))
Time in days = 8.79685776538
Check S(t) = 100
Rounded to one decimal = 8.8 days

Fasit: Det tar \(\frac{\ln14}{0,3}\approx8,8\) dager.

Vanlig feil: Å bruke tierlogaritme uten å justere beregningen eller å glemme minusfortegnet i eksponenten.
Sensorpunkt: Likningen må isoleres ryddig og svaret tolkes med enhet.
Del 2 - Oppgave 1bMaksimal vekst i logistisk modell

Oppgave 1b

Oppgave: På hvilket tidspunkt blir flest elever smittet, og hvor raskt sprer smitten seg da?
Vis løsning

Hva spør oppgaven om? Vi skal finne maksimumspunktet til den deriverte \(S^{\prime}(t)\).

Steg 1 - Bruk logistisk struktur

Modellen har bærekapasitet \(L=300\) og vekstparameter \(k=0,3\). For en logistisk funksjon er veksten størst når \(S=L/2\).

Steg 2 - Sett S lik 150

\[150=\frac{300}{1+28e^{-0,3t}}.\]

Steg 3 - Løs for tiden

Nevneren må være 2, så \(28e^{-0,3t}=1\). Dermed \[t=\frac{\ln28}{0,3}\approx11,11.\]

Steg 4 - Finn den deriverte

En logistisk funksjon oppfyller \[S^{\prime}(t)=0,3S(t)\left(1-\frac{S(t)}{300}\right).\]

Steg 5 - Sett inn S=150

\[S^{\prime}=0,3\cdot150\left(1-\frac12\right)=22,5.\]

Steg 6 - Tolkning

Omtrent dag 11,1 er antallet nye smittede størst, med cirka 22,5 elever per dag.

Den deriverte når maksimum 22,5 elever per dag.
Den deriverte når maksimum 22,5 elever per dag.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[Derivative[300/(1+28e^(-0.3x))],0,30]
\((11,107\,,22,5)\)

Tolkning: Maksimum til den deriverte gir tidspunkt og spredningsfart.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
S = 300/(1+28*sp.exp(-sp.Rational(3,10)*t))
S_prime = sp.simplify(sp.diff(S, t))
S_second = sp.simplify(sp.diff(S_prime, t))
t_star = sp.log(28)/sp.Rational(3,10)
print("S'(t) =", S_prime)
print("S''(t) =", S_second)
print("Time of maximum growth =", t_star)
print("Decimal time =", sp.N(t_star, 12))
print("S(t*) =", sp.simplify(S.subs(t, t_star)))
print("S'(t*) =", sp.simplify(S_prime.subs(t, t_star)))
print("S''(t*) =", sp.simplify(S_second.subs(t, t_star)))
Utskrift fra Python:
S'(t) = 2520*exp(3*t/10)/(exp(3*t/10) + 28)**2
S''(t) = 756*((exp(3*t/10) + 28)*exp(3*t/10) - 2*exp(3*t/5))/(exp(3*t/10) + 28)**3
Time of maximum growth = 10*log(28)/3
Decimal time = 11.1073483672
S(t*) = 150
S'(t*) = 45/2
S''(t*) = 0

Fasit: Flest nye elever blir smittet etter omtrent \(11,1\) dager. Da er spredningsfarten \(22,5\) elever per dag.

Vanlig feil: Å svare 300 elever; 300 er modellens øvre nivå, ikke maksimal endring per dag.
Sensorpunkt: Finn maksimum av den deriverte og oppgi både tidspunkt og rate med enhet.
Del 2 - Oppgave 1cAsymptoter og praktisk tolkning

Oppgave 1c

Oppgave: Undersøk om \(S\) har asymptoter, og forklar den praktiske betydningen.
Vis løsning

Hva spør oppgaven om? Vi skal beregne grenser mot begge ender og undersøke om nevneren kan bli null.

Steg 1 - Når t går mot pluss uendelig

\(e^{-0,3t}\to0\), derfor \[S(t)\to\frac{300}{1}=300.\]

Steg 2 - Første asymptote

\(S=300\) er en horisontal asymptote. Modellen sier at antallet smittede nærmer seg 300.

Steg 3 - Når t går mot minus uendelig

\(e^{-0,3t}\to\infty\), så nevneren vokser uten grense og \[S(t)\to0.\]

Steg 4 - Andre asymptote

\(S=0\) er en horisontal asymptote i den matematiske forlengelsen bakover i tid.

Steg 5 - Vertikale asymptoter

Nevneren \(1+28e^{-0,3t}\) er alltid positiv. Den kan aldri være null, så funksjonen har ingen vertikale asymptoter.

Steg 6 - Praktisk domene

I situasjonen brukes normalt \(t\ge0\). Da er asymptoten \(S=300\) den viktigste praktiske tolkningen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Limit[S,x,Infinity], Limit[S,x,-Infinity]
\(300\) og \(0\); ingen vertikal asymptote

Tolkning: Grensene gir de to horisontale asymptotene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
S = 300/(1+28*sp.exp(-sp.Rational(3,10)*t))
print("Limit t -> +infinity =", sp.limit(S, t, sp.oo))
print("Limit t -> -infinity =", sp.limit(S, t, -sp.oo))
denominator = 1+28*sp.exp(-sp.Rational(3,10)*t)
print("Denominator =", denominator)
print("Real zeros of denominator =", sp.solveset(sp.Eq(denominator,0), t, domain=sp.S.Reals))
print("Horizontal asymptotes: S=0 and S=300")
print("Practical future ceiling: 300 students")
Utskrift fra Python:
Limit t -> +infinity = 300
Limit t -> -infinity = 0
Denominator = 1 + 28*exp(-3*t/10)
Real zeros of denominator = EmptySet
Horizontal asymptotes: S=0 and S=300
Practical future ceiling: 300 students

Fasit: Horisontale asymptoter er \(S=0\) og \(S=300\). Det finnes ingen vertikale asymptoter. For \(t\ge0\) betyr \(S=300\) at modellen flater ut mot 300 smittede.

Vanlig feil: Å hevde at nevneren blir null fordi eksponentialleddet kan bli negativt; \(e^u\) er alltid positiv.
Sensorpunkt: Både matematiske grenser og praktisk gyldighetsområde må kommenteres.
Del 2 - Oppgave 2aEksponential- og logaritmeregler

Oppgave 2a

Oppgave: Påstand: Når \(x>0\), er \(e^{k\ln x}=x^k\).
Vis løsning

Hva spør oppgaven om? Vi skal avgjøre om identiteten gjelder og begrunne den med inverse funksjoner.

Steg 1 - Domenet er avgjørende

Når \(x>0\), er \(\ln x\) definert, og reelle potenser \(x^k\) kan skrives ved hjelp av eksponentialfunksjonen.

Steg 2 - Definisjonen av en reell potens

For \(x>0\) defineres \[x^k=e^{k\ln x}.\]

Steg 3 - Alternativ omskriving

Fordi \(e^{\ln x}=x\), kan vi formelt skrive \[e^{k\ln x}=\bigl(e^{\ln x}\bigr)^k=x^k.\]

Steg 4 - Kontroller noen k-verdier

Identiteten gjelder for eksempel for heltall, brøker og irrasjonale reelle \(k\), så lenge \(x>0\).

Steg 5 - Konklusjon

Påstanden er sann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[e^(k ln(x))-x^k, x>0]
\(0\)

Tolkning: Forskjellen forenkles til null under forutsetningen x>0.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
k = sp.symbols("k", real=True)
left = sp.exp(k*sp.log(x))
right = x**k
print("Left side =", left)
print("Right side =", right)
print("Rewrite left using powers =", left.rewrite(sp.Pow))
print("Symbolic difference =", sp.simplify(left-right))
for xv, kv in [(2,3),(9,sp.Rational(1,2)),(5,sp.sqrt(2))]:
    print("x =", xv, "k =", kv, "difference =", sp.N((left-right).subs({x:xv,k:kv}),12))
Utskrift fra Python:
Left side = exp(k*log(x))
Right side = x**k
Rewrite left using powers = x**k
Symbolic difference = 0
x = 2 k = 3 difference = 0
x = 9 k = 1/2 difference = 0
x = 5 k = sqrt(2) difference = 0

Fasit: Påstanden er sann for \(x>0\) og reell \(k\).

Vanlig feil: Å droppe kravet \(x>0\); den reelle logaritmen er ikke definert for ikke-positive x.
Sensorpunkt: Begrunnelsen skal bruke sammenhengen mellom \(e^x\), \(\ln x\) og reelle potenser.
Del 2 - Oppgave 2bDeriverbarhet for stykkevis funksjon

Oppgave 2b

Oppgave: \[f(x)=\begin{cases}x^3-2,&x\lt2,\3x^2-4,&x\ge2.\end{cases}\] Påstand: Funksjonen er deriverbar i \(x=2\).
Vis løsning

Hva spør oppgaven om? Før en funksjon kan være deriverbar, må den være kontinuerlig. Vi kontrollerer derfor grensene og funksjonsverdien først.

Steg 1 - Venstre grense

\[\lim_{x\to2^-}(x^3-2)=8-2=6.\]

Steg 2 - Funksjonsverdien

Siden den andre grenen gjelder ved \(x=2\), er \[f(2)=3\cdot2^2-4=8.\]

Steg 3 - Høyre grense

\[\lim_{x\to2^+}(3x^2-4)=8.\]

Steg 4 - Kontinuitetskravet svikter

Venstregrensen er 6, mens høyregrensen og funksjonsverdien er 8. Funksjonen har et sprang.

Steg 5 - Følge for deriverbarhet

Alle deriverbare funksjoner er kontinuerlige. Siden \(f\) ikke er kontinuerlig ved 2, kan den ikke være deriverbar der.

Steg 6 - Konklusjon

Påstanden er usann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Limit[x^3-2,x,2,-1], Limit[3x^2-4,x,2,1], 3(2)^2-4
\(6,8,8\)

Tolkning: Ulike ensidige grenser viser spranget.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
left = x**3-2
right = 3*x**2-4
left_limit = sp.limit(left, x, 2, dir="-")
right_limit = sp.limit(right, x, 2, dir="+")
value = right.subs(x,2)
print("Left limit =", left_limit)
print("Right limit =", right_limit)
print("f(2) =", value)
print("Continuous at x=2:", left_limit == right_limit == value)
print("Left derivative limit =", sp.diff(left,x).subs(x,2))
print("Right derivative =", sp.diff(right,x).subs(x,2))
print("Differentiable at x=2: False")
Utskrift fra Python:
Left limit = 6
Right limit = 8
f(2) = 8
Continuous at x=2: False
Left derivative limit = 12
Right derivative = 12
Differentiable at x=2: False

Fasit: Påstanden er usann. Funksjonen er ikke engang kontinuerlig i \(x=2\), og derfor ikke deriverbar.

Vanlig feil: Å sammenlikne bare de deriverte og overse at funksjonen har et sprang.
Sensorpunkt: Start med kontinuitet; det gir den raskeste og sterkeste begrunnelsen.
Del 2 - Oppgave 2cOmvendt funksjon og én-til-én-egenskap

Oppgave 2c

Oppgave: Påstand: En funksjon som er både minkende og voksende i definisjonsmengden sin, kan ha en omvendt funksjon.
Vis løsning

Hva spør oppgaven om? Påstanden er en mulighetspåstand. Det holder å gi ett korrekt eksempel på en funksjon med både minkende og voksende deler som samtidig er én-til-én.

Steg 1 - Kravet for omvendt funksjon

En funksjon har en omvendt funksjon på hele verdimengden når den er injektiv: ulike x-verdier må gi ulike funksjonsverdier.

Steg 2 - Velg et frakoblet domene

La \[D=[-2,-1]\cup[3,4],\qquad f(x)=x^2.\]

Steg 3 - Monotoni på første del

På \([-2,-1]\) er \(f\) strengt minkende, fordi \(f^{\prime}(x)=2x\lt0\). Verdimengden der er \([1,4]\).

Steg 4 - Monotoni på andre del

På \([3,4]\) er \(f\) strengt voksende, fordi \(2x>0\). Verdimengden der er \([9,16]\).

Steg 5 - Kontroller injektivitet globalt

De to verdimengdene overlapper ikke. Derfor kan ingen verdi komme fra både den minkende og den voksende delen.

Steg 6 - Konklusjon

Funksjonen er én-til-én på hele \(D\) og har en omvendt funksjon. Påstanden er derfor sann. Selv ved en strengere tolkning finnes det trivielle ettpunktsdomener som også gjør «kan ha» sann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Function[x^2,{-2<=x<=-1 or 3<=x<=4}]
Verdimengder \([1,4]\) og \([9,16]\), uten overlapp

Tolkning: Eksemplet er både minkende og voksende på ulike deler, men fortsatt injektivt.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = x**2
print("f'(x) =", sp.diff(f,x))
print("On [-2,-1], f'(x) < 0, so f is decreasing")
print("Range on [-2,-1] = [1,4]")
print("On [3,4], f'(x) > 0, so f is increasing")
print("Range on [3,4] = [9,16]")
print("The ranges are disjoint:", 4 < 9)
points = [-2,-1.5,-1,3,3.5,4]
values = [p**2 for p in points]
print("Sample x-values =", points)
print("Sample f(x)-values =", values)
print("All sample values distinct =", len(values) == len(set(values)))
Utskrift fra Python:
f'(x) = 2*x
On [-2,-1], f'(x) < 0, so f is decreasing
Range on [-2,-1] = [1,4]
On [3,4], f'(x) > 0, so f is increasing
Range on [3,4] = [9,16]
The ranges are disjoint: True
Sample x-values = [-2, -1.5, -1, 3, 3.5, 4]
Sample f(x)-values = [4, 2.25, 1, 9, 12.25, 16]
All sample values distinct = True

Fasit: Påstanden er sann. For eksempel er \(f(x)=x^2\) på \([-2,-1]\cup[3,4]\) minkende på første del, voksende på andre del og likevel injektiv.

Vanlig feil: Å anta at enhver funksjon som skifter monotoni automatisk gjentar funksjonsverdier; domenets form og delområdenes verdimengder er avgjørende.
Sensorpunkt: Et konkret eksempel må kontrolleres for både monotoni og injektivitet.
Del 2 - Oppgave 3aAvstand mellom parameterpunkter

Oppgave 3a

Oppgave: \[\vec r_A(t)=\left(\frac12(t-4),t\right),\qquad \vec r_B(t)=\left(\frac12t,\frac32\left(t-\frac15\right)\right).\] Bestem avstanden mellom bilene etter 1 minutt.
Vis løsning

Hva spør oppgaven om? Vi skal finne begge posisjonene ved \(t=1\), ta differansevektoren og beregne lengden.

Steg 1 - Bil A etter ett minutt

\[\vec r_A(1)=\left(\frac12(1-4),1\right)=\left(-\frac32,1\right).\]

Steg 2 - Bil B etter ett minutt

\[\vec r_B(1)=\left(\frac12,\frac32\cdot\frac45\right)=\left(\frac12,\frac65\right).\]

Steg 3 - Differansevektor

\[\vec r_B(1)-\vec r_A(1)=\left(2,\frac15\right).\]

Steg 4 - Avstandsformelen

\[d=\sqrt{2^2+\left(\frac15\right)^2}.\]

Steg 5 - Eksakt verdi

\[d=\sqrt{\frac{101}{25}}=\frac{\sqrt{101}}5.\]

Steg 6 - Desimal og enhet

\[d\approx2,010\text{ km}.\]

Bilenes rette veier, posisjonene etter ett minutt og veikrysset.
Bilenes rette veier, posisjonene etter ett minutt og veikrysset.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Distance[(-3/2,1),(1/2,6/5)]
\(\sqrt{101}/5\approx2,010\)

Tolkning: Avstandsverktøyet bekrefter den eksakte lengden.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
rA = sp.Matrix([sp.Rational(1,2)*(t-4), t])
rB = sp.Matrix([sp.Rational(1,2)*t, sp.Rational(3,2)*(t-sp.Rational(1,5))])
A1 = rA.subs(t,1)
B1 = rB.subs(t,1)
difference = B1-A1
distance = sp.sqrt(difference.dot(difference))
print("rA(1) =", tuple(A1))
print("rB(1) =", tuple(B1))
print("Difference vector =", tuple(difference))
print("Exact distance =", distance)
print("Distance in km =", sp.N(distance, 12))
Utskrift fra Python:
rA(1) = (-3/2, 1)
rB(1) = (1/2, 6/5)
Difference vector = (2, 1/5)
Exact distance = sqrt(101)/5
Distance in km = 2.00997512422

Fasit: Avstanden er \(\frac{\sqrt{101}}5\text{ km}\approx2,010\text{ km}\).

Vanlig feil: Å trekke sammen koordinatene i stedet for å bruke lengden av differansevektoren.
Sensorpunkt: Begge posisjoner, differansevektor og kilometerenhet skal vises.
Del 2 - Oppgave 3bFart fra parameterfunksjon

Oppgave 3b

Oppgave: Argumenter for hvilken bil som kjører på motorveien.
Vis løsning

Hva spør oppgaven om? Vi skal finne lengden av hver konstante hastighetsvektor og omregne fra kilometer per minutt til kilometer per time.

Steg 1 - Hastigheten til A

\[\vec v_A=\vec r_A^{\prime}(t)=\left(\frac12,1\right).\]

Steg 2 - Farten til A

\[|\vec v_A|=\sqrt{\frac14+1}=\frac{\sqrt5}{2}\text{ km/min}.\] Dette er \(30\sqrt5\approx67,1\text{ km/h}\).

Steg 3 - Hastigheten til B

\[\vec v_B=\left(\frac12,\frac32\right).\]

Steg 4 - Farten til B

\[|\vec v_B|=\sqrt{\frac14+\frac94}=\frac{\sqrt{10}}2\text{ km/min}.\] Dette er \(30\sqrt{10}\approx94,9\text{ km/h}\).

Steg 5 - Sammenlikn

Bil B har klart høyere fart enn bil A.

Steg 6 - Praktisk argument

En fart nær 95 km/h passer en motorvei bedre enn en fart nær 67 km/h. Derfor er B på motorveien.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Length((1/2,1))*60, Length((1/2,3/2))*60
\(30\sqrt5\approx67,1\), \(30\sqrt{10}\approx94,9\)

Tolkning: B har størst fart.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
vA = sp.Matrix([sp.Rational(1,2), 1])
vB = sp.Matrix([sp.Rational(1,2), sp.Rational(3,2)])
speedA_min = sp.sqrt(vA.dot(vA))
speedB_min = sp.sqrt(vB.dot(vB))
speedA_hour = 60*speedA_min
speedB_hour = 60*speedB_min
print("vA =", tuple(vA), "km/min")
print("vB =", tuple(vB), "km/min")
print("Speed A exact =", speedA_hour, "km/h")
print("Speed A decimal =", sp.N(speedA_hour, 10), "km/h")
print("Speed B exact =", speedB_hour, "km/h")
print("Speed B decimal =", sp.N(speedB_hour, 10), "km/h")
print("Motorway car = B")
Utskrift fra Python:
vA = (1/2, 1) km/min
vB = (1/2, 3/2) km/min
Speed A exact = 30*sqrt(5) km/h
Speed A decimal = 67.08203932 km/h
Speed B exact = 30*sqrt(10) km/h
Speed B decimal = 94.86832981 km/h
Motorway car = B

Fasit: Bil B kjører omtrent \(94,9\text{ km/h}\), mens A kjører omtrent \(67,1\text{ km/h}\). Derfor er B på motorveien.

Vanlig feil: Å sammenlikne bare én koordinatkomponent; fart er lengden av hastighetsvektoren.
Sensorpunkt: Omregningen fra km/min til km/h og et praktisk argument må være tydelig.
Del 2 - Oppgave 3cSkjæring mellom parameterlinjer

Oppgave 3c

Oppgave: Veiene krysser hverandre. Hvilken bil kommer først til veikrysset?
Vis løsning

Hva spør oppgaven om? Vi skal finne skjæringspunktet mellom veiene og deretter tidspunktet hver bil når akkurat dette punktet.

Steg 1 - Likning for vei A

Fra \(y=t\) og \(x=(t-4)/2\) får vi \[y=2x+4.\]

Steg 2 - Likning for vei B

Fra \(x=t/2\) får vi \(t=2x\). Dermed \[y=\frac32\left(2x-\frac15\right)=3x-\frac3{10}.\]

Steg 3 - Finn veikrysset

\[2x+4=3x-\frac3{10}\Rightarrow x=\frac{43}{10}.\] Da er \[y=2\cdot\frac{43}{10}+4=\frac{63}{5}.\]

Steg 4 - Tid for A

For A er y-koordinaten lik tiden, så \[t_A=\frac{63}{5}=12,6\text{ min}.\]

Steg 5 - Tid for B

For B er \(x=t/2\), så \[t_B=2\cdot\frac{43}{10}=\frac{43}{5}=8,6\text{ min}.\]

Steg 6 - Konklusjon

Bil B kommer \(12,6-8,6=4,0\) minutter før bil A.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Intersect[y=2x+4,y=3x-3/10]
\((43/10,63/5)\)

Tolkning: Sett punktet inn i hver parameterfunksjon for å få de to tidene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x,y = sp.symbols("x y", real=True)
intersection = sp.solve([sp.Eq(y,2*x+4), sp.Eq(y,3*x-sp.Rational(3,10))],[x,y], dict=True)[0]
xI = intersection[x]
yI = intersection[y]
tA = yI
tB = 2*xI
print("Intersection =", (xI,yI))
print("Time for A =", tA, "minutes =", sp.N(tA,8))
print("Time for B =", tB, "minutes =", sp.N(tB,8))
print("B arrives earlier by", sp.simplify(tA-tB), "minutes")
print("A position check =", (sp.Rational(1,2)*(tA-4),tA))
print("B position check =", (sp.Rational(1,2)*tB,sp.Rational(3,2)*(tB-sp.Rational(1,5))))
Utskrift fra Python:
Intersection = (43/10, 63/5)
Time for A = 63/5 minutes = 12.600000
Time for B = 43/5 minutes = 8.6000000
B arrives earlier by 4 minutes
A position check = (43/10, 63/5)
B position check = (43/10, 63/5)

Fasit: Veikrysset er \((4,3,12,6)\). Bil B er der etter \(8,6\) min, bil A etter \(12,6\) min. B kommer først.

Vanlig feil: Å sette \(\vec r_A(t)=\vec r_B(t)\) med samme t; bilene trenger ikke være i krysset samtidig.
Sensorpunkt: Bruk egne tider for de to bilene etter at det geometriske skjæringspunktet er funnet.
Del 2 - Oppgave 4aLogaritmisk jordskjelvskala

Oppgave 4a

Oppgave: \[M=\frac23\lg(E)-3,2.\] Finn \(E\) uttrykt ved \(M\), og beregn energien når \(M=4,7\).
Vis løsning

Hva spør oppgaven om? Vi skal isolere tierlogaritmen og deretter bruke at \(10^{\lg E}=E\).

Steg 1 - Flytt konstantleddet

\[M+3,2=\frac23\lg E.\]

Steg 2 - Multipliser med 3/2

\[\lg E=\frac32(M+3,2)=1,5M+4,8.\]

Steg 3 - Opphev logaritmen

\[E=10^{1,5M+4,8}.\]

Steg 4 - Sett inn M=4,7

\[E=10^{1,5\cdot4,7+4,8}=10^{11,85}.\]

Steg 5 - Numerisk verdi

\[10^{11,85}\approx7,08\cdot10^{11}.\]

Steg 6 - Enhet

Energien er omtrent \(7,08\cdot10^{11}\text{ J}\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[M=(2/3)log(10,E)-3.2,E]
\(E=10^{1,5M+4,8}\)

Tolkning: Sett M=4,7 for numerisk energi.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
M = sp.symbols("M", real=True)
E_formula = 10**(sp.Rational(3,2)*M + sp.Rational(24,5))
E_47 = sp.simplify(E_formula.subs(M, sp.Rational(47,10)))
print("E(M) =", E_formula)
print("Exponent when M=4.7 =", sp.Rational(3,2)*sp.Rational(47,10)+sp.Rational(24,5))
print("Exact energy form =", E_47)
print("Energy =", sp.N(E_47, 12), "J")
M_check = sp.Rational(2,3)*sp.log(E_47,10)-sp.Rational(16,5)
print("Magnitude check =", sp.simplify(M_check))
Utskrift fra Python:
E(M) = 10**(3*M/2 + 24/5)
Exponent when M=4.7 = 237/20
Exact energy form = 100000000000*10**(17/20)
Energy = 707945784384. J
Magnitude check = 47/10

Fasit: \(E=10^{1,5M+4,8}\). Når \(M=4,7\), er \(E\approx7,08\cdot10^{11}\text{ J}\).

Vanlig feil: Å bruke \(e^x\) i stedet for \(10^x\); \(\lg\) er tierlogaritmen.
Sensorpunkt: Isoleringen av \(\lg E\), eksponenten og joule-enheten må være med.
Del 2 - Oppgave 4bMultiplikativ virkning av logaritmisk skala

Oppgave 4b

Oppgave: Hvor mange ganger større blir energien dersom \(M\) øker med 1?
Vis løsning

Hva spør oppgaven om? Vi skal ta forholdet mellom energien ved \(M+1\) og energien ved \(M\).

Steg 1 - Energifunksjonen

\[E(M)=10^{1,5M+4,8}.\]

Steg 2 - Energi ved M+1

\[E(M+1)=10^{1,5(M+1)+4,8}.\]

Steg 3 - Lag forholdet

\[\frac{E(M+1)}{E(M)}=\frac{10^{1,5M+1,5+4,8}}{10^{1,5M+4,8}}.\]

Steg 4 - Subtraher eksponentene

\[\frac{E(M+1)}{E(M)}=10^{1,5}.\]

Steg 5 - Eksakt og numerisk

\[10^{1,5}=10\sqrt{10}\approx31,62.\]

Steg 6 - Tolkning

Én enhet høyere momentmagnitude betyr omtrent 31,6 ganger så mye frigitt energi.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[10^(1.5(M+1)+4.8)/10^(1.5M+4.8)]
\(10^{1,5}=10\sqrt{10}\approx31,62\)

Tolkning: Forholdet er uavhengig av M.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
M = sp.symbols("M", real=True)
E = lambda value: 10**(sp.Rational(3,2)*value + sp.Rational(24,5))
ratio = sp.simplify(E(M+1)/E(M))
print("Energy ratio E(M+1)/E(M) =", ratio)
print("Exact radical form =", sp.sqrtdenest(ratio))
print("Decimal factor =", sp.N(ratio, 12))
for magnitude in [3,4.7,7]:
    numeric_ratio = sp.N(E(sp.Float(magnitude)+1)/E(sp.Float(magnitude)),10)
    print("M =", magnitude, "ratio =", numeric_ratio)
Utskrift fra Python:
Energy ratio E(M+1)/E(M) = 10*sqrt(10)
Exact radical form = 10*sqrt(10)
Decimal factor = 31.6227766017
M = 3 ratio = 31.62277660
M = 4.7 ratio = 31.62277660
M = 7 ratio = 31.62277660

Fasit: Energien blir \(10^{1,5}=10\sqrt{10}\approx31,6\) ganger så stor.

Vanlig feil: Å svare at energien øker med 1 eller 10 ganger fordi skalaen er logaritmisk.
Sensorpunkt: Et forhold mellom to energier gir enheten uavhengig multiplikasjonsfaktor.
Del 2 - Oppgave 5aRegresjonsmodeller og modellvalg

Oppgave 5a

Oppgave: Lag modeller for antall bensinbiler og elbiler i Moss, \(t\) år etter 2010, basert på tabellen 2010-2022. Argumenter for valgene.
Vis løsning

Hva spør oppgaven om? Vi skal bruke alle 13 datapunktene, velge en enkel lineær modell for den jevne bensinnedgangen og en logistisk modell for elbilveksten som ikke kan fortsette eksponentielt for alltid.

Steg 1 - Registrer data

For bensin er tallene \(14185,13592,\ldots,8705\). For elektrisk er de \(2,14,\ldots,5363\), med \(t=0,1,\ldots,12\).

Steg 2 - Lineær regresjon for bensin

Minstekvadraters regresjon gir omtrent \[B(t)=14243,3-451,8t.\]

Steg 3 - Vurder bensinmodellen

Forklaringsgraden er \(R^2\approx0,9926\). Punktene ligger nær en rett, fallende trend, så en lineær modell er rimelig i dataperioden.

Steg 4 - Logistisk regresjon for elbiler

En logistisk regresjon gir omtrent \[L(t)=\frac{18956,7}{1+275,04e^{-0,39054t}}.\]

Steg 5 - Vurder elbilmodellen

Her er \(R^2\approx0,9982\). Modellen beskriver rask vekst, men har samtidig en øvre grense, som er mer realistisk enn ubegrenset eksponentiell vekst.

Steg 6 - Modellene er ikke unike

Andre godt begrunnede modeller kan også gi uttelling. Det avgjørende er samsvar med data, dokumentasjon av regresjon og kritisk vurdering av ekstrapolasjon.

Datapunkter og de valgte regresjonsmodellene.
Datapunkter og de valgte regresjonsmodellene.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
FitLine({(0,14185),...,(12,8705)}); FitLogistic({(0,2),...,(12,5363)})
\(B(t)\approx14243,3-451,8t\), \(L(t)\approx18956,7/(1+275,04e^{-0,39054t})\)

Tolkning: Regresjonsgraf og residualer støtter valgene i dataperioden.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import numpy as np
from scipy.optimize import curve_fit

t = np.arange(13, dtype=float)
petrol = np.array([14185,13592,13246,12944,12578,12367,11472,11079,10516,10323,9706,9210,8705], dtype=float)
electric = np.array([2,14,35,111,307,557,754,1071,1467,2057,2810,4031,5363], dtype=float)

def r_squared(observed, predicted):
    return 1-((observed-predicted)**2).sum()/((observed-observed.mean())**2).sum()

linear = np.polyfit(t, petrol, 1)
petrol_pred = np.polyval(linear, t)

def logistic(x, L, a, k):
    return L/(1+a*np.exp(-k*x))

params, covariance = curve_fit(logistic, t, electric, p0=(19000,275,0.39), bounds=(0,np.inf), maxfev=100000)
electric_pred = logistic(t, *params)
print("Petrol linear slope =", round(linear[0], 6))
print("Petrol linear intercept =", round(linear[1], 6))
print("Petrol R^2 =", round(r_squared(petrol, petrol_pred), 9))
print("Logistic L, a, k =", tuple(round(value, 6) for value in params))
print("Electric R^2 =", round(r_squared(electric, electric_pred), 9))
print("Petrol model at t=12 =", round(float(np.polyval(linear,12)), 3))
print("Electric model at t=12 =", round(float(logistic(12,*params)), 3))
Utskrift fra Python:
Petrol linear slope = -451.785714
Petrol linear intercept = 14243.252747
Petrol R^2 = 0.992586853
Logistic L, a, k = (np.float64(18956.483737), np.float64(275.039656), np.float64(0.390541))
Electric R^2 = 0.998210726
Petrol model at t=12 = 8821.824
Electric model at t=12 = 5361.612

Fasit: Et godt modellvalg er \(B(t)\approx14243,3-451,8t\) og \(L(t)\approx\frac{18956,7}{1+275,04e^{-0,39054t}}\).

Vanlig feil: Å velge modell bare ut fra høy \(R^2\) uten å vurdere om langtidsoppførselen er mulig.
Sensorpunkt: Data, regresjonsmetode, parametere, grafisk samsvar og faglig begrunnelse bør dokumenteres.
Del 2 - Oppgave 5bEkstrapolasjon og modellkritikk

Oppgave 5b

Oppgave: Vurder veksten etter 2022 ut fra modellene, og kommenter modellenes gyldighet.
Vis løsning

Hva spør oppgaven om? Vi skal lese hva modellene predikerer, men skille mellom matematisk ekstrapolasjon og realistiske langtidsprognoser.

Steg 1 - Bensinmodellens endring

Den lineære modellen faller med omtrent \(452\) biler per år.

Steg 2 - Eksempelprognoser for bensin

For 2025, \(t=15\), gir modellen omtrent \(7466\) bensinbiler. For 2030, \(t=20\), gir den omtrent \(5208\).

Steg 3 - Begrensning for bensin

En lineær modell blir til slutt negativ. Den treffer null rundt \(t=31,5\), altså cirka 2041-2042, og kan derfor ikke være gyldig ubegrenset.

Steg 4 - Elbilmodellens utvikling

Den logistiske modellen gir omtrent \(10616\) elbiler i 2025 og \(17055\) i 2030.

Steg 5 - Logistisk langtidsatferd

Når \(t\to\infty\), nærmer modellen seg \(18957\) elbiler. Veksten avtar når markedet nærmer seg dette nivået.

Steg 6 - Kritisk konklusjon

Begge modeller kan være nyttige noen år etter 2022, men de bygger bare på historiske data. Bilbestand, politikk, avgifter, ladeinfrastruktur, flytting og teknologisk endring kan endre utviklingen. Særlig den estimerte logistiske grensen er ikke en naturkonstant.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
B(15), B(20), L(15), L(20), Limit[L(t),t,Infinity]
\(7466,5208,10616,17055,18957\)

Tolkning: Tallene viser trendene, mens gyldighetsdrøftingen begrenser konklusjonen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math

def petrol(t):
    return 14243.25274725-451.78571429*t

def electric(t):
    return 18956.7076/(1+275.040876*math.exp(-0.390539617*t))

for year in [2022,2025,2030,2040]:
    t = year-2010
    print(year, "petrol =", round(petrol(t),1), "electric =", round(electric(t),1))
zero_time = 14243.25274725/451.78571429
print("Linear petrol model reaches zero at t =", round(zero_time,3))
print("Corresponding year =", round(2010+zero_time,3))
print("Logistic electric ceiling =", 18956.7076)
print("Electric growth from 2025 to 2030 =", round(electric(20)-electric(15),1))
Utskrift fra Python:
2022 petrol = 8821.8 electric = 5361.6
2025 petrol = 7466.5 electric = 10615.8
2030 petrol = 5207.5 electric = 17055.3
2040 petrol = 689.7 electric = 18914.3
Linear petrol model reaches zero at t = 31.527
Corresponding year = 2041.527
Logistic electric ceiling = 18956.7076
Electric growth from 2025 to 2030 = 6439.5

Fasit: Modellene antyder fortsatt fall i bensinbiler og fortsatt, men etter hvert avtakende, vekst i elbiler. De bør bare ekstrapoleres forsiktig utenfor 2010-2022.

Vanlig feil: Å presentere modellverdier langt fram i tid som sikre prognoser.
Sensorpunkt: Gi konkrete modellverdier, beskriv langtidsoppførselen og diskuter eksterne forhold som modellene ikke inneholder.
Del 2 - Oppgave 6aNumerisk optimering med løkke

Oppgave 6a

Oppgave: Lars bruker programmet med \(f(x)=-x^2+4\), \(A(x)=xf(x)\), framoverdifferanse, \(h=0,0001\) og trinn \(dx=0,01\). Forklar hva han finner, og oppgi programutskriften.
Vis løsning

Hva spør oppgaven om? Vi skal knytte arealfunksjonen til rektangelet, følge løkken nøyaktig og sammenlikne med det eksakte maksimumet.

Steg 1 - Geometrisk areal

Rektangelet har bredde \(x\) og høyde \(f(x)=4-x^2\). Derfor er \[A(x)=x(4-x^2)=4x-x^3.\]

Steg 2 - Hva der_areal gjør

Programmet bruker \((A(x+h)-A(x))/h\) som en numerisk tilnærming til \(A^{\prime}(x)\).

Steg 3 - Løkkestrategien

Så lenge den estimerte deriverte ved neste prøvepunkt \(x+dx\) er positiv, økes \(x\) med \(0,01\).

Steg 4 - Stoppunktet

Løkken ender ved flyttallsverdien \(x\approx1,1500000000000008\), fordi den deriverte ved neste trinn ikke lenger er positiv.

Steg 5 - Faktisk utskrift

Programmet skriver \[A(1,15)=3,0791250000000003.\]

Steg 6 - Eksakt kontroll

\(A^{\prime}(x)=4-3x^2\), så eksakt maksimum er ved \(x=2/\sqrt3\approx1,1547\), med \(A_{\max}=16/(3\sqrt3)\approx3,07920\). Programmet gir en svært nær tilnærming.

Arealfunksjonen med programmets tilnærming og det eksakte maksimumet.
Arealfunksjonen med programmets tilnærming og det eksakte maksimumet.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[x(4-x^2),0,2]
\((2/\sqrt3,16/(3\sqrt3))\)

Tolkning: Det eksakte maksimumet ligger litt til høyre for programmets siste trinn.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
def f(x):
    return -x**2 + 4

def areal(x):
    return x*f(x)

h = 0.0001

def der_areal(x):
    return (areal(x+h)-areal(x))/h

x = 0
dx = 0.01
iterations = 0
while der_areal(x+dx) > 0:
    x = x+dx
    iterations += 1

print(areal(x))
print("x =", x)
print("iterations =", iterations)
print("der_areal(x) =", der_areal(x))
print("der_areal(x+dx) =", der_areal(x+dx))

import sympy as sp
xs = sp.symbols("x", real=True)
A = xs*(4-xs**2)
x_exact = sp.solve(sp.Eq(sp.diff(A,xs),0),xs)[1]
print("Exact maximizing x =", x_exact)
print("Exact maximum area =", sp.simplify(A.subs(xs,x_exact)))
print("Exact maximum decimal =", sp.N(A.subs(xs,x_exact),12))
Utskrift fra Python:
3.0791250000000003
x = 1.1500000000000008
iterations = 115
der_areal(x) = 0.03215498999953326
der_areal(x+dx) = -0.037148010001430976
Exact maximizing x = 2*sqrt(3)/3
Exact maximum area = 16*sqrt(3)/9
Exact maximum decimal = 3.07920143568

Fasit: Lars tilnærmer det største rektangelarealet. Programmet skriver \(3,0791250000000003\), ved \(x\approx1,15\).

Vanlig feil: Å oppgi bare det eksakte maksimumet og ignorere hva det konkrete programmet faktisk skriver.
Sensorpunkt: Forklar både geometrien, den numeriske deriverte, løkken og forskjellen mellom numerisk og eksakt svar.
Del 2 - Oppgave 6bVurdering av søkestrategi

Oppgave 6b

Oppgave: Hvilken strategi bruker Lars, og vil den fungere uavhengig av hvilken funksjon \(f\) er?
Vis løsning

Hva spør oppgaven om? Vi skal beskrive algoritmen som et lokalt trinnsøk og identifisere forutsetningene den trenger.

Steg 1 - Navngi strategien

Programmet bruker et framoverrettet «hill-climbing»-søk: det går mot høyre så lenge arealet fortsatt øker.

Steg 2 - Stoppkriteriet

Fortegnet til en numerisk derivert brukes som indikator. Når fortegnet blir ikke-positivt, stoppes søket.

Steg 3 - Oppløsning

Nøyaktigheten styres særlig av \(dx=0,01\). Et mindre trinn kan gi et mer presist x, men krever flere iterasjoner.

Steg 4 - Når metoden fungerer

Den fungerer rimelig når arealfunksjonen er glatt, starter i et stigende område og har ett tydelig maksimum før domenets slutt.

Steg 5 - Når metoden kan feile

Den kan stoppe ved et lokalt maksimum, ved et flatt parti eller på grunn av numerisk støy. Den kan også gå utenfor gyldig domene eller aldri stoppe dersom funksjonen fortsetter å øke.

Steg 6 - Konklusjon

Strategien er ikke universell. En robust algoritme må kjenne domenet, ha maksimal iterasjonsgrense og gjerne sammenlikne flere kandidater eller bruke en etablert optimeringsmetode.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Derivative[A](x)>0 med trinnvis x-økning
Lokalt fortegnssøk, ikke en generell global metode

Tolkning: Graf og derivert viser hvilke antakelser søket bygger på.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
def hill_climb(area, derivative_estimate, start=0.0, dx=0.01, right_limit=2.0, max_steps=100000):
    x = start
    steps = 0
    while x+dx <= right_limit and derivative_estimate(x+dx) > 0 and steps < max_steps:
        x += dx
        steps += 1
    return x, area(x), steps

h = 0.0001
area1 = lambda x: x*(4-x**2)
der1 = lambda x: (area1(x+h)-area1(x))/h
print("Original case =", hill_climb(area1, der1))

area2 = lambda x: (x-0.5)**2
der2 = lambda x: (area2(x+h)-area2(x))/h
print("Convex function case =", hill_climb(area2, der2))

area3 = lambda x: -(x-0.4)**2+2 + 0.2*(-(x-1.5)**2+2)
der3 = lambda x: (area3(x+h)-area3(x))/h
print("Multiple-shape case =", hill_climb(area3, der3))
print("Conclusion: the method needs domain and shape assumptions")
Utskrift fra Python:
Original case = (1.1500000000000008, 3.0791250000000003, 115)
Convex function case = (0.0, 0.25, 0)
Multiple-shape case = (0.5800000000000003, 2.1983200000000003, 58)
Conclusion: the method needs domain and shape assumptions

Fasit: Lars bruker et trinnvis lokalt søk basert på fortegnet til en numerisk derivert. Metoden fungerer ikke uavhengig av funksjonen.

Vanlig feil: Å kalle strategien «binærsøk»; programmet halverer ikke et intervall, men går med faste trinn.
Sensorpunkt: Nevn både trinnstørrelse, lokal/global problematikk, domene og mulige stoppfeil.
Del 2 - Oppgave 7Maksimalt pyramidevolum i halvkule

Oppgave 7

Oppgave: En kule med radius \(r\) deles i to. I den ene halvkulen skjæres en pyramide med rektangulær grunnflate i snittflaten. Bestem det største volumet.
Vis løsning

Hva spør oppgaven om? Vi skal maksimere grunnflatearealet i sirkelskiven og høyden i halvkulen, og vise at begge maksimum kan oppnås samtidig.

Steg 1 - Volumformelen

For en pyramide er \[V=\frac{hG}{3},\] der \(G\) er rektangelets areal og \(h\) er høyden.

Steg 2 - Størst mulig høyde

Fra snittflaten til toppen av halvkulen er maksimal høyde \(h=r\). Dette oppnås når toppunktet er kulens øverste punkt.

Steg 3 - Rektangel i en sirkel

La rektangelets sider være \(a\) og \(b\). Når hjørnene ligger på sirkelen med radius \(r\), er diagonalen \(2r\), så \[a^2+b^2=4r^2.\]

Steg 4 - Maksimer grunnflaten

Fra \((a-b)^2\ge0\) følger \(a^2+b^2\ge2ab\). Dermed \[G=ab\le\frac{a^2+b^2}{2}=2r^2.\] Likhet gjelder når \(a=b\), altså for et kvadrat.

Steg 5 - Kombiner maksimumene

Et kvadrat med side \(\sqrt2r\) kan ligge i snittflaten samtidig som toppunktet ligger rett over sentrum i høyde \(r\). Hele pyramiden ligger i halvkulen fordi halvkulen er konveks.

Steg 6 - Største volum

\[V_{\max}=\frac13\cdot r\cdot2r^2=\frac23r^3.\]

Skisse av maksimal pyramide: kvadrat i snittflaten og toppunkt i halvkulens topp.
Skisse av maksimal pyramide: kvadrat i snittflaten og toppunkt i halvkulens topp.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[(1/3)*r*(2r^2)]
\(2r^3/3\)

Tolkning: Kvadratisk grunnflate og høyde r gir maksimum.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
r,a,b,h = sp.symbols("r a b h", positive=True)
# For an inscribed rectangle: a^2+b^2=4r^2.
# AM-GM gives 2ab <= a^2+b^2.
G_max = sp.simplify((4*r**2)/2)
h_max = r
V_max = sp.simplify(h_max*G_max/3)
side_square = sp.sqrt(2)*r
print("Maximum rectangular base area =", G_max)
print("Square side length =", side_square)
print("Maximum height =", h_max)
print("Maximum pyramid volume =", V_max)
print("Diagonal check =", sp.simplify(sp.sqrt(side_square**2+side_square**2)))
print("For r=1, volume =", V_max.subs(r,1))
Utskrift fra Python:
Maximum rectangular base area = 2*r**2
Square side length = sqrt(2)*r
Maximum height = r
Maximum pyramid volume = 2*r**3/3
Diagonal check = 2*r
For r=1, volume = 2/3

Fasit: \(\displaystyle V_{\max}=\frac{2}{3}r^3\). Maksimum oppnås med kvadratisk grunnflate og toppunkt i halvkulens topp.

Vanlig feil: Å bruke sirkelarealet \(\pi r^2\) som grunnflate; grunnflaten skal være et rektangel.
Sensorpunkt: Vis hvorfor det største innskrevne rektangelet er et kvadrat, og hvorfor høyden kan være r samtidig.
Kilde og metode: Oppgavetekstene er transkribert fra Utdanningsdirektoratets eksamenssett REA3056 Matematikk R1, våren 2024 (LK20). Løsningene er originale. Alle Python-blokker er kjørt ved generering, og lagret utskrift er hentet direkte fra kjøringen. Tabellverdier, originalprogrammet, matematiske symboler og figurer er kontrollert mot de renderte PDF-sidene.