R1 eksamenHøst 2023LK20

Matematikk R1 eksamen – høst 2023

ifingo
Norsk (Bokmål)

ifingo · Matematikk R1

Matematikk R1 - høsten 2023, LK20 (REA3056)

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 - Oppgave 1Produktregelen og logaritmer

Oppgave 1

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

Hva spør oppgaven om? Vi skal bruke produktregelen og samtidig huske at funksjonen bare er definert for \(x>0\).

Steg 1 - Identifiser produktet

Funksjonen er produktet av \(u(x)=x^2\) og \(v(x)=\ln x\).

Steg 2 - Deriver faktorene

Vi har \(u^{\prime}(x)=2x\) og \(v^{\prime}(x)=1/x\).

Steg 3 - Bruk produktregelen

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

Steg 4 - Sett inn

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

Steg 5 - Forenkle

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

GeoGebra/CAS-kontroll

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

Tolkning: CAS bruker produktregelen og forenkler.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
f = x**2 * sp.log(x)
f_prime = sp.diff(f, x)
factored = sp.factor(f_prime)
print("f(x) =", f)
print("Product-rule derivative =", f_prime)
print("Factored derivative =", factored)
print("Domain condition: x > 0")
print("Check at x=e:", sp.simplify(f_prime.subs(x, sp.E)))
Utskrift fra Python:
f(x) = x**2*log(x)
Product-rule derivative = 2*x*log(x) + x
Factored derivative = x*(2*log(x) + 1)
Domain condition: x > 0
Check at x=e: 3*E

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

Vanlig feil: Å derivere produktet som \((x^2)^{\prime}(\ln x)^{\prime}\).
Sensorpunkt: Produktregelen, den deriverte av \(\ln x\) og domenet bør være synlige.
Del 1 - Oppgave 2Logaritmer og eksponentialuttrykk

Oppgave 2

Oppgave: Skriv uttrykkene \(2\ln(e^3)\), \(3\lg 70\) og \(e^{3\ln2}\) i stigende rekkefølge. Begrunn svaret.
Vis løsning

Hva spør oppgaven om? Vi skal forenkle de to eksakte uttrykkene og plassere tierlogaritmen mellom dem.

Steg 1 - Første uttrykk

\[2\ln(e^3)=2\cdot3=6.\]

Steg 2 - Tredje uttrykk

\[e^{3\ln2}=e^{\ln(2^3)}=e^{\ln8}=8.\]

Steg 3 - Avgrens tierlogaritmen

Fordi \(10\lt70\lt100\), er \(1\lt\lg70\lt2\). Dermed er \(3\lt3\lg70\lt6\).

Steg 4 - Numerisk kontroll

\(3\lg70\approx5{,}5353\).

Steg 5 - Sett i stigende rekkefølge

\[3\lg70\lt2\ln(e^3)\lt e^{3\ln2}.\]

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Numeric({3 log(10,70), 2 ln(e^3), e^(3 ln(2))})
\(5.5353<6<8\)

Tolkning: Numeriske verdier bekrefter den eksakte begrunnelsen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A = 2*sp.log(sp.E**3)
B = 3*sp.log(70, 10)
C = sp.exp(3*sp.log(2))
print("2*ln(e^3) =", sp.simplify(A))
print("3*lg(70) exact =", B)
print("3*lg(70) decimal =", sp.N(B, 12))
print("e^(3*ln(2)) =", sp.simplify(C))
ordered = sorted([("3*lg(70)", B), ("2*ln(e^3)", A), ("e^(3*ln(2))", C)], key=lambda pair: float(pair[1]))
print("Increasing order =", [name for name, value in ordered])
Utskrift fra Python:
2*ln(e^3) = 6
3*lg(70) exact = 3*log(7)/log(10) + 3
3*lg(70) decimal = 5.53529412004
e^(3*ln(2)) = 8
Increasing order = ['3*lg(70)', '2*ln(e^3)', 'e^(3*ln(2))']

Fasit: \(3\lg70\lt2\ln(e^3)\lt e^{3\ln2}\).

Vanlig feil: Å tolke \(\lg\) som naturlig logaritme.
Sensorpunkt: Bruk eksakte logaritmeregler; desimaltall bør bare være kontroll.
Del 1 - Oppgave 3aVektorlengder

Oppgave 3a

Oppgave: I trekanten \(ABC\) er \(A(-3,-1)\), \(B(2,-2)\) og \(C(5,2)\). Avgjør ved hjelp av vektorregning hvilken side som er kortest.
Vis løsning

Hva spør oppgaven om? Vi skal sammenlikne kvadrerte sidelengder, slik at vi slipper unødvendige kvadratrøtter.

Steg 1 - Finn sidevektorene

\[\overrightarrow{AB}=(5,-1),\quad\overrightarrow{AC}=(8,3),\quad\overrightarrow{BC}=(3,4).\]

Steg 2 - Beregn kvadrerte lengder

\[|AB|^2=5^2+(-1)^2=26.\]

Steg 3 - Fortsett sammenlikningen

\[|AC|^2=8^2+3^2=73,\qquad |BC|^2=3^2+4^2=25.\]

Steg 4 - Sammenlikn

Fordi \(25<26<73\), er \(|BC|<|AB|<|AC|\).

Steg 5 - Konklusjon

Siden \(BC\) er kortest.

Koordinatframstilling av trekanten ABC.
Koordinatframstilling av trekanten ABC.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Distance(A,B), Distance(A,C), Distance(B,C)
\(\sqrt{26},\sqrt{73},5\)

Tolkning: GeoGebra viser at BC har minst lengde.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A = sp.Matrix([-3, -1])
B = sp.Matrix([2, -2])
C = sp.Matrix([5, 2])
AB = B - A
AC = C - A
BC = C - B
squared = {"AB": AB.dot(AB), "AC": AC.dot(AC), "BC": BC.dot(BC)}
lengths = {name: sp.sqrt(value) for name, value in squared.items()}
print("AB =", tuple(AB), "and |AB|^2 =", squared["AB"])
print("AC =", tuple(AC), "and |AC|^2 =", squared["AC"])
print("BC =", tuple(BC), "and |BC|^2 =", squared["BC"])
print("Exact lengths =", lengths)
print("Shortest side =", min(squared, key=squared.get))
Utskrift fra Python:
AB = (5, -1) and |AB|^2 = 26
AC = (8, 3) and |AC|^2 = 73
BC = (3, 4) and |BC|^2 = 25
Exact lengths = {'AB': sqrt(26), 'AC': sqrt(73), 'BC': 5}
Shortest side = BC

Fasit: Siden \(BC\) er kortest, med lengde \(5\).

Vanlig feil: Å sammenlikne bare forskjellene i x- eller y-koordinat.
Sensorpunkt: Alle tre sidevektorene og en tydelig lengdesammenlikning må vises.
Del 1 - Oppgave 3bSkalarprodukt og rette vinkler

Oppgave 3b

Oppgave: Avgjør ved hjelp av vektorregning om noen av vinklene i trekanten er \(90^{\circ}\).
Vis løsning

Hva spør oppgaven om? Vi skal beregne skalarproduktet mellom sidevektorene som møtes i hvert hjørne.

Steg 1 - Vinkelen ved A

\[\overrightarrow{AB}\cdot\overrightarrow{AC}=(5,-1)\cdot(8,3)=40-3=37\ne0.\]

Steg 2 - Vinkelen ved B

\[\overrightarrow{BA}\cdot\overrightarrow{BC}=(-5,1)\cdot(3,4)=-15+4=-11\ne0.\]

Steg 3 - Vinkelen ved C

\[\overrightarrow{CA}\cdot\overrightarrow{CB}=(-8,-3)\cdot(-3,-4)=24+12=36\ne0.\]

Steg 4 - Bruk ortogonalitetskriteriet

To ikke-nullvektorer er vinkelrette akkurat når skalarproduktet er null.

Steg 5 - Konklusjon

Ingen av de tre skalarproduktene er null, så trekanten har ingen rett vinkel.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Dot(Vector(A,B),Vector(A,C)), Dot(Vector(B,A),Vector(B,C)), Dot(Vector(C,A),Vector(C,B))
\(37,-11,36\)

Tolkning: Ingen av resultatene er null.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A = sp.Matrix([-3, -1])
B = sp.Matrix([2, -2])
C = sp.Matrix([5, 2])
products = {
    "angle A": (B-A).dot(C-A),
    "angle B": (A-B).dot(C-B),
    "angle C": (A-C).dot(B-C),
}
for name, value in products.items():
    print(name, "dot product =", value)
print("Any right angle:", any(value == 0 for value in products.values()))
print("Sign interpretation: angle B is obtuse because its dot product is negative")
Utskrift fra Python:
angle A dot product = 37
angle B dot product = -11
angle C dot product = 36
Any right angle: False
Sign interpretation: angle B is obtuse because its dot product is negative

Fasit: Ingen av vinklene i trekanten er \(90^{\circ}\).

Vanlig feil: Å bruke vektorer som ikke har samme startpunkt når vinkelen undersøkes.
Sensorpunkt: Skalarproduktet ved alle tre hjørner må kontrolleres.
Del 1 - Oppgave 4aNumerisk derivasjon og løkkestrategi

Oppgave 4a

Oppgave: Programmet bruker \(f(x)=2x^2-9x-2\), en framoverdifferanse \(df(x,h)\), \(h=0{,}001\), starter med \(a=0\), og øker \(a\) med 1 så lenge \(df(a,h)<0\). Forklar strategien.
Vis løsning

Hva spør oppgaven om? Vi skal forklare hva den numeriske deriverte betyr, hvorfor fortegnet brukes, og hvorfor løkken stopper.

Steg 1 - Tilnærmet derivert

Uttrykket \((f(x+h)-f(x))/h\) er en framoverdifferanse som tilnærmer \(f^{\prime}(x)\).

Steg 2 - Start til venstre

Programmet starter ved \(a=0\), der grafen er avtakende og den tilnærmede deriverte er negativ.

Steg 3 - Flytt mot høyre

Så lenge \(df(a,h)<0\), flyttes prøvepunktet én hel enhet mot høyre.

Steg 4 - Stopp når stigningen skifter fortegn

Når den tilnærmede deriverte ikke lenger er negativ, antar programmet at bunnpunktet er passert.

Steg 5 - Hvorfor svaret blir grovt

Funksjonen har bunnpunkt ved \(x=2{,}25\), men programmet undersøker bare \(a=0,1,2,3,\ldots\). Derfor stopper det ved \(a=3\).

Steg 6 - Metodens idé

Strategien er et trinnvis søk etter fortegnsskiftet til den deriverte, men søketrinnet 1 er altfor stort.

Originalkoden i eksamenssettet.
Originalkoden i eksamenssettet.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
IterationList[If[(f(a+0.001)-f(a))/0.001<0,a+1,a],0,4]
\(0,1,2,3\)

Tolkning: Søket hopper over det virkelige bunnpunktet ved 2,25.

Python-kontroll med SymPy

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

def df(x, h):
    return (f(x+h) - f(x))/h

h = 0.001
a = 0
history = []
while df(a, h) < 0:
    history.append((a, df(a, h)))
    a = a + 1
history.append((a, df(a, h)))
print("Visited a-values and forward differences:")
for value, slope in history:
    print("a =", value, "df(a,h) =", round(slope, 6))
print("Program stops at a =", a)
print("Program output =", (a, f(a)))
print("Exact vertex x-coordinate =", 9/4)
Utskrift fra Python:
Visited a-values and forward differences:
a = 0 df(a,h) = -8.998
a = 1 df(a,h) = -4.998
a = 2 df(a,h) = -0.998
a = 3 df(a,h) = 3.002
Program stops at a = 3
Program output = (3, -11)
Exact vertex x-coordinate = 2.25

Fasit: Programmet søker mot høyre etter stedet der den numeriske deriverte går fra negativ til ikke-negativ, men bruker for stort søketrinn.

Vanlig feil: Å tro at \(h=0{,}001\) også er steglengden til variabelen \(a\); i originalkoden økes \(a\) med 1.
Sensorpunkt: Forklar både framoverdifferansen, fortegnskriteriet, løkken og årsaken til feil svaret.
Del 1 - Oppgave 4bProgramretting og bunnpunkt

Oppgave 4b

Oppgave: Foreslå en endring i koden som gir et riktigere svar for bunnpunktet til \(f(x)=2x^2-9x-2\).
Vis løsning

Hva spør oppgaven om? Vi skal gjøre søketrinnet like lite som differansetrinnet og kontrollere resultatet mot eksakt derivasjon.

Steg 1 - Finn feilen

Linja \(a=a+1\) gjør at programmet bare undersøker heltall.

Steg 2 - Endre søketrinnet

Bytt linja til \(a=a+h\). Da økes \(a\) med \(0{,}001\) i hver runde.

Steg 3 - Ny løkke

Programmet stopper nær stedet der framoverdifferansen skifter fortegn, altså nær \(x=2{,}25\).

Steg 4 - Eksakt kontroll

\[f^{\prime}(x)=4x-9=0\quad\Longrightarrow\quad x=\frac94=2{,}25.\]

Steg 5 - Finn y-koordinaten

\[f\!\left(\frac94\right)=2\left(\frac94\right)^2-9\left(\frac94\right)-2=-\frac{97}{8}=-12{,}125.\]

Steg 6 - Konklusjon

Endringen gir numerisk bunnpunkt omtrent \((2{,}25,-12{,}125)\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[2x^2-9x-2]
\((9/4,-97/8)\)

Tolkning: GeoGebra gir det eksakte bunnpunktet.

Python-kontroll med SymPy

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

def df(x, h):
    return (f(x+h) - f(x))/h

h = 0.001
a = 0.0
iterations = 0
while df(a, h) < 0:
    a = a + h
    iterations += 1
print("Iterations =", iterations)
print("Numerical x =", round(a, 12))
print("Numerical point =", (round(a, 12), round(f(a), 12)))
print("df(a-h,h) =", df(a-h, h))
print("df(a,h) =", df(a, h))
print("Exact point =", (9/4, -97/8))
Utskrift fra Python:
Iterations = 2250
Numerical x = 2.25
Numerical point = (2.25, -12.125)
df(a-h,h) = -0.0020000000020559128
df(a,h) = 0.0020000000020559128
Exact point = (2.25, -12.125)

Fasit: Endre til \(a=a+h\). Bunnpunktet er \(\left(\frac94,-\frac{97}{8}\right)=(2{,}25,-12{,}125)\).

Vanlig feil: Å bare gjøre \(h\) mindre uten å endre linja \(a=a+1\).
Sensorpunkt: Forslaget må faktisk redusere søketrinnet; eksakt bunnpunkt bør brukes som kontroll.

Del 2 - med hjelpemidler

Del 2 - Oppgave 1aEksponentialregresjon

Oppgave 1a

Oppgave: Tabellen viser konsentrasjonen av et stoff ved tidene \(0,10,\ldots,60\) s. Bruk blant annet regresjon til å vise at \[f(t)=2{,}5-2{,}5\cdot0{,}99^t\] er en god modell.
Vis løsning

Hva spør oppgaven om? Vi skal omforme dataene til avstanden fra likevektsverdien 2,5 og utføre eksponentialregresjon.

Steg 1 - Bruk likevektsverdien

La \(q(t)=2{,}5-C(t)\). Tabellen gir omtrent \(2{,}50,2{,}22,1{,}97,1{,}74,1{,}55,1{,}37,1{,}22\).

Steg 2 - Anta eksponentialmodell

Vi tilpasser \(q(t)=A\cdot b^t\).

Steg 3 - Lineariser

\[\ln q(t)=\ln A+t\ln b.\] Dermed kan vi gjøre lineær regresjon på punktene \((t,\ln q)\).

Steg 4 - Regresjonsresultat

Regresjonen gir omtrent \(A=2{,}5006\) og \(b=0{,}9881\).

Steg 5 - Rund til modellen

Avrundet til to desimaler får vi \(q(t)\approx2{,}5\cdot0{,}99^t\).

Steg 6 - Gå tilbake til konsentrasjonen

\[C(t)=2{,}5-q(t)\approx2{,}5-2{,}5\cdot0{,}99^t.\]

Steg 7 - Vurder tilpasningen

Regresjonen av \(q\) har \(R^2\approx0{,}99996\), som viser svært god eksponentiell tilpasning.

Måledata og den oppgitte konsentrasjonsmodellen.
Måledata og den oppgitte konsentrasjonsmodellen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
FitGrowth({(0,2.5),(10,2.22),(20,1.97),(30,1.74),(40,1.55),(50,1.37),(60,1.22)})
\(q(t)\approx2.5006\cdot0.9881^t\)

Tolkning: Dette avrundes til den oppgitte modellen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import numpy as np

t = np.array([0, 10, 20, 30, 40, 50, 60], dtype=float)
concentration = np.array([0, 0.28, 0.53, 0.76, 0.95, 1.13, 1.28], dtype=float)
q = 2.5 - concentration
slope, intercept = np.polyfit(t, np.log(q), 1)
A = np.exp(intercept)
b = np.exp(slope)
predicted_q = A*b**t
ss_res = np.sum((q-predicted_q)**2)
ss_tot = np.sum((q-np.mean(q))**2)
r_squared = 1-ss_res/ss_tot
print("Transformed values q =", q)
print("Regression A =", format(A, ".12f"))
print("Regression b =", format(b, ".12f"))
print("Regression model: q(t) = A*b^t")
print("R^2 =", format(r_squared, ".12f"))
print("Rounded model: C(t) = 2.5 - 2.5*0.99^t")
print("Model values at the measured times =", np.round(2.5-2.5*0.99**t, 6))
Utskrift fra Python:
Transformed values q = [2.5  2.22 1.97 1.74 1.55 1.37 1.22]
Regression A = 2.500613056442
Regression b = 0.988080566224
Regression model: q(t) = A*b^t
R^2 = 0.999957240573
Rounded model: C(t) = 2.5 - 2.5*0.99^t
Model values at the measured times = [0.       0.239045 0.455233 0.650749 0.827571 0.987485 1.132108]

Fasit: Modellen er godt begrunnet fordi regresjonen gir \(q(t)\approx2{,}5006\cdot0{,}9881^t\), som avrundes til \(2{,}5\cdot0{,}99^t\).

Vanlig feil: Å gjøre eksponentialregresjon direkte på konsentrasjonen uten å trekke fra likevektsverdien 2,5.
Sensorpunkt: Vis datatransformasjonen, regresjonsparametrene og hvordan den oppgitte modellen oppstår.
Del 2 - Oppgave 1bEksponentiallikning

Oppgave 1b

Oppgave: Hvor lang tid tar det før konsentrasjonen er \(2{,}0\) mmol/L?
Vis løsning

Hva spør oppgaven om? Vi skal løse likningen \(f(t)=2{,}0\) ved hjelp av logaritmer.

Steg 1 - Sett modellen lik 2,0

\[2{,}5-2{,}5\cdot0{,}99^t=2{,}0.\]

Steg 2 - Isoler potensleddet

\[2{,}5\cdot0{,}99^t=0{,}5\quad\Longrightarrow\quad0{,}99^t=0{,}2.\]

Steg 3 - Ta logaritmen

\[t\ln0{,}99=\ln0{,}2.\]

Steg 4 - Løs for t

\[t=\frac{\ln0{,}2}{\ln0{,}99}\approx160{,}14.\]

Steg 5 - Tolk

Konsentrasjonen når 2,0 mmol/L etter omtrent 160 sekunder, altså cirka 2 minutt og 40 sekund.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[2.5-2.5*0.99^t=2,t]
\(t\approx160.14\)

Tolkning: CAS løser eksponentiallikningen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
solution = sp.log(sp.Rational(1,5))/sp.log(sp.Rational(99,100))
print("Equation: 2.5 - 2.5*0.99^t = 2.0")
print("Reduced equation: 0.99^t = 0.2")
print("Exact logarithmic solution =", solution)
print("Time in seconds =", sp.N(solution, 12))
minutes = int(float(solution)//60)
seconds = float(solution)-60*minutes
print("Approximately", minutes, "minutes and", round(seconds, 2), "seconds")
print("Model check =", sp.N(sp.Rational(5,2)-sp.Rational(5,2)*sp.Rational(99,100)**solution, 12))
Utskrift fra Python:
Equation: 2.5 - 2.5*0.99^t = 2.0
Reduced equation: 0.99^t = 0.2
Exact logarithmic solution = -log(5)/log(99/100)
Time in seconds = 160.137724340
Approximately 2 minutes and 40.14 seconds
Model check = 2.00000000000

Fasit: Omtrent \(160\) sekunder.

Vanlig feil: Å bruke \(t=\ln(0{,}2)/0{,}99\) i stedet for å dele på \(\ln(0{,}99)\).
Sensorpunkt: Likningen må isoleres korrekt og svaret må tolkes med enhet.
Del 2 - Oppgave 1cEndringsfart i eksponentialmodell

Oppgave 1c

Oppgave: Hvor lang tid tar det før konsentrasjonen øker med mindre enn \(0{,}001\) mmol/L per sekund?
Vis løsning

Hva spør oppgaven om? Vi skal finne når den momentane vekstfarten \(f^{\prime}(t)\) blir mindre enn grenseverdien.

Steg 1 - Deriver modellen

\[f^{\prime}(t)=-2{,}5\cdot0{,}99^t\ln(0{,}99).\]

Steg 2 - Fortegnet

Fordi \(\ln(0{,}99)<0\), er \(f^{\prime}(t)>0\), slik vi forventer når konsentrasjonen øker.

Steg 3 - Sett opp ulikheten

\[-2{,}5\ln(0{,}99)\cdot0{,}99^t<0{,}001.\]

Steg 4 - Isoler potensleddet

\[0{,}99^t<\frac{0{,}001}{-2{,}5\ln(0{,}99)}.\]

Steg 5 - Løs med logaritmer

Fordi \(\ln(0{,}99)<0\), snur ulikhetstegnet når vi deler: \[t>\frac{\ln\!\left(0{,}001/[-2{,}5\ln(0{,}99)]\right)}{\ln(0{,}99)}\approx320{,}78.\]

Steg 6 - Tolk

Etter omtrent 321 sekunder, eller 5 minutt og 21 sekund, er økningen mindre enn 0,001 mmol/L per sekund.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[-2.5*ln(0.99)*0.99^t<0.001,t]
\(t>320.775\)

Tolkning: Vekstfarten passerer grensen etter ca. 321 s.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math
coefficient = -2.5*math.log(0.99)
threshold = 0.001
time = math.log(threshold/coefficient)/math.log(0.99)

def derivative(t):
    return coefficient*0.99**t

print("Positive derivative coefficient =", coefficient)
print("Threshold time =", format(time, ".12f"), "seconds")
print("f'(320) =", format(derivative(320), ".12f"))
print("f'(321) =", format(derivative(321), ".12f"))
print("First whole second below threshold =", math.ceil(time))
print("Minutes and seconds =", divmod(math.ceil(time), 60))
Utskrift fra Python:
Positive derivative coefficient = 0.025125839633753626
Threshold time = 320.775029916690 seconds
f'(320) = 0.001007819727
f'(321) = 0.000997741529
First whole second below threshold = 321
Minutes and seconds = (5, 21)

Fasit: Etter omtrent \(321\) sekunder.

Vanlig feil: Å bruke funksjonsverdien \(f(t)\) i stedet for den deriverte \(f^{\prime}(t)\).
Sensorpunkt: Derivasjon, fortegn, ulikhetsretning og tidsenhet må være korrekte.
Del 2 - Oppgave 2aKontinuitet i stykkevis funksjon

Oppgave 2a

Oppgave: Funksjonen er \[f(x)=\begin{cases}-x^2+(2+k)x,&x\lt k,\x^2+(2-k)x,&x\ge k.\end{cases}\] Forklar at \(f\) er kontinuerlig for alle \(k\in\mathbb R\).
Vis løsning

Hva spør oppgaven om? Vi skal kontrollere at venstre grenseverdi ved skjøtepunktet er lik funksjonsverdien fra høyre gren.

Steg 1 - Grenene er polynomer

Hver gren er et polynom og derfor kontinuerlig på sitt eget intervall.

Steg 2 - Venstre grense ved x=k

\[\lim_{x\to k^-}f(x)=-k^2+(2+k)k=2k.\]

Steg 3 - Funksjonsverdien ved x=k

Punktet \(x=k\) tilhører den andre grenen: \[f(k)=k^2+(2-k)k=2k.\]

Steg 4 - Sammenlikn

Venstre grenseverdi og funksjonsverdien er begge \(2k\). Den høyre grenseverdien er også \(2k\).

Steg 5 - Konklusjon

Grenene møtes uten sprang for enhver reell verdi av \(k\), så \(f\) er kontinuerlig.

Funksjonen for k=-3, k=0 og k=3.
Funksjonen for k=-3, k=0 og k=3.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[(-k^2+(2+k)k)-(k^2+(2-k)k)]
\(0\)

Tolkning: Begge grenene gir verdien 2k ved skjøten.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
k = sp.symbols("k", real=True)
left_value = -k**2 + (2+k)*k
right_value = k**2 + (2-k)*k
difference = sp.simplify(left_value-right_value)
print("Left-hand value at x=k =", sp.simplify(left_value))
print("Right-hand value f(k) =", sp.simplify(right_value))
print("Difference =", difference)
print("Continuous for every real k:", difference == 0)
Utskrift fra Python:
Left-hand value at x=k = 2*k
Right-hand value f(k) = 2*k
Difference = 0
Continuous for every real k: True

Fasit: Funksjonen er kontinuerlig for alle \(k\in\mathbb R\).

Vanlig feil: Å kontrollere bare at begge grenene er polynomer og glemme skjøtepunktet.
Sensorpunkt: Vis eksplisitt at begge uttrykkene gir \(2k\) ved \(x=k\).
Del 2 - Oppgave 2bDeriverbarhet i skjøtepunkt

Oppgave 2b

Oppgave: Bestem \(k\) slik at den stykkevise funksjonen blir deriverbar i \(x=k\).
Vis løsning

Hva spør oppgaven om? Kontinuiteten er allerede oppfylt; nå må venstre og høyre derivert være like.

Steg 1 - Deriver venstre gren

\[f_-^{\prime}(x)=-2x+2+k.\]

Steg 2 - Evaluer ved k

\[f_-^{\prime}(k)=-2k+2+k=2-k.\]

Steg 3 - Deriver høyre gren

\[f_+^{\prime}(x)=2x+2-k.\]

Steg 4 - Evaluer ved k

\[f_+^{\prime}(k)=2k+2-k=2+k.\]

Steg 5 - Sett de ensidige deriverte like

\[2-k=2+k\quad\Longrightarrow\quad2k=0.\]

Steg 6 - Konklusjon

\(k=0\). Da er de to deriverte begge lik 2 ved skjøten.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[2-k=2+k,k]
\(k=0\)

Tolkning: De ensidige deriverte blir like bare når k=0.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x, k = sp.symbols("x k", real=True)
left = -x**2 + (2+k)*x
right = x**2 + (2-k)*x
left_slope = sp.diff(left, x).subs(x, k)
right_slope = sp.diff(right, x).subs(x, k)
solution = sp.solve(sp.Eq(left_slope, right_slope), k)
print("Left derivative at k =", sp.simplify(left_slope))
print("Right derivative at k =", sp.simplify(right_slope))
print("Equation =", sp.Eq(left_slope, right_slope))
print("k-values =", solution)
print("Common slope for k=0 =", left_slope.subs(k, 0))
Utskrift fra Python:
Left derivative at k = 2 - k
Right derivative at k = k + 2
Equation = Eq(2 - k, k + 2)
k-values = [0]
Common slope for k=0 = 2

Fasit: \(k=0\).

Vanlig feil: Å sette funksjonsverdiene like på nytt; det undersøker kontinuitet, ikke deriverbarhet.
Sensorpunkt: De ensidige deriverte må beregnes og sammenliknes ved \(x=k\).
Del 2 - Oppgave 2cEn-til-en-funksjon og omvendt funksjon

Oppgave 2c

Oppgave: For hvilke verdier av \(k\) har \(f\) en omvendt funksjon?
Vis løsning

Hva spør oppgaven om? En kontinuerlig funksjon på hele tallinja har en omvendt funksjon når den er én-til-én. Her må den være strengt voksende.

Steg 1 - Endeadferd

Når \(x\to-\infty\), går venstre gren mot \(-\infty\). Når \(x\to\infty\), går høyre gren mot \(\infty\). En globalt injektiv og kontinuerlig funksjon må derfor være voksende.

Steg 2 - Venstre gren

\[f_-^{\prime}(x)=-2x+2+k.\] For \(x\lt k\) er den minste grenseverdien av den deriverte \(2-k\). Vi trenger \(2-k\ge0\), altså \(k\le2\).

Steg 3 - Høyre gren

\[f_+^{\prime}(x)=2x+2-k.\] For \(x\ge k\) er den minste verdien \(k+2\). Vi trenger \(k+2\ge0\), altså \(k\ge-2\).

Steg 4 - Kombiner kravene

\[-2\le k\le2.\]

Steg 5 - Endepunktene

For \(k=\pm2\) er den deriverte null bare i selve skjøtepunktet eller som grense. Funksjonen er fortsatt strengt voksende på hele tallinja.

Steg 6 - Utenfor intervallet

Hvis \(k>2\), avtar venstre gren nær skjøten. Hvis \(k<-2\), avtar høyre gren nær skjøten. Da er funksjonen ikke én-til-én.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve({2-k>=0,2+k>=0},k)
\(-2\le k\le2\)

Tolkning: Akkurat i dette intervallet er begge grenene voksende.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
k = sp.symbols("k", real=True)
left_boundary_slope = 2-k
right_boundary_slope = 2+k
solution = sp.reduce_inequalities([left_boundary_slope >= 0, right_boundary_slope >= 0], k)
print("Left-branch monotonicity condition:", sp.solve_univariate_inequality(left_boundary_slope >= 0, k))
print("Right-branch monotonicity condition:", sp.solve_univariate_inequality(right_boundary_slope >= 0, k))
print("Combined condition:", solution)
for test in [-3, -2, 0, 2, 3]:
    print("k =", test, "boundary slopes =", (left_boundary_slope.subs(k,test), right_boundary_slope.subs(k,test)))
Utskrift fra Python:
Left-branch monotonicity condition: k <= 2
Right-branch monotonicity condition: -2 <= k
Combined condition: (-2 <= k) & (k <= 2)
k = -3 boundary slopes = (5, -1)
k = -2 boundary slopes = (4, 0)
k = 0 boundary slopes = (2, 2)
k = 2 boundary slopes = (0, 4)
k = 3 boundary slopes = (-1, 5)

Fasit: Funksjonen har en omvendt funksjon når \(-2\le k\le2\).

Vanlig feil: Å kreve at den deriverte er strengt positiv også i ett enkelt endepunkt og dermed utelate \(k=\pm2\).
Sensorpunkt: Begrunn global én-til-én-egenskap med monotoni på begge grener og kontinuitet ved skjøten.
Del 2 - Oppgave 3aTredjegradsfunksjoner og ekstremalpunkt

Oppgave 3a

Oppgave: Påstand 1: Grafen til enhver tredjegradsfunksjon har minst ett ekstremalpunkt. Avgjør om påstanden er sann eller usann.
Vis løsning

Hva spør oppgaven om? Vi trenger enten et generelt bevis eller ett moteksempel.

Steg 1 - Finn et moteksempel

La \(f(x)=x^3+x\), som er en tredjegradsfunksjon.

Steg 2 - Deriver

\[f^{\prime}(x)=3x^2+1.\]

Steg 3 - Undersøk fortegnet

Fordi \(3x^2+1>0\) for alle reelle \(x\), er funksjonen strengt voksende overalt.

Steg 4 - Konklusjon

Grafen har ingen lokale maksimums- eller minimumspunkter. Dermed er påstanden usann.

Steg 5 - Tilleggsmerknad

Også \(x^3\) viser at et nullpunkt for den deriverte ikke nødvendigvis er et ekstremalpunkt; origo er et stasjonært vendepunkt.

Tredjegradsfunksjoner som illustrerer påstandene.
Tredjegradsfunksjoner som illustrerer påstandene.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Derivative[x^3+x]
\(3x^2+1>0\)

Tolkning: Moteksemplet er strengt voksende.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = x**3+x
f_prime = sp.diff(f,x)
critical = sp.solve(sp.Eq(f_prime,0),x)
minimum_derivative = sp.minimum(f_prime,x,sp.S.Reals)
print("Counterexample f(x) =", f)
print("f'(x) =", f_prime)
print("Real critical points =", critical)
print("Minimum value of f'(x) =", minimum_derivative)
print("Strictly increasing everywhere:", minimum_derivative > 0)
print("Claim 1 is false")
Utskrift fra Python:
Counterexample f(x) = x**3 + x
f'(x) = 3*x**2 + 1
Real critical points = []
Minimum value of f'(x) = 1
Strictly increasing everywhere: True
Claim 1 is false

Fasit: Påstand 1 er usann.

Vanlig feil: Å anta at alle tredjegradsfunksjoner har to ekstremalpunkter fordi mange standardgrafer har det.
Sensorpunkt: Ett korrekt moteksempel med derivert som aldri skifter fortegn er tilstrekkelig.
Del 2 - Oppgave 3bSkjæring mellom kubikk og linje

Oppgave 3b

Oppgave: Påstand 2: Alle linjer \(y=ax+b\), der \(a,b\in\mathbb R\), vil skjære grafen til en tredjegradsfunksjon \(f\).
Vis løsning

Hva spør oppgaven om? Vi skal undersøke likningen \(f(x)=ax+b\) generelt.

Steg 1 - Flytt alt til én side

Skjæringspunkter oppfyller \[f(x)-(ax+b)=0.\]

Steg 2 - Gradstallet

Når en lineær funksjon trekkes fra en tredjegradsfunksjon, er resultatet fortsatt et polynom av grad 3.

Steg 3 - Oddetallsgrad

Et reelt polynom av oddetallsgrad går mot motsatte uendeligheter når \(x\to-\infty\) og \(x\to\infty\).

Steg 4 - Mellomverdisetningen

Polynomet er kontinuerlig og må derfor ha minst ett reelt nullpunkt.

Steg 5 - Tolkning

Dette nullpunktet er en x-koordinat der linjen og grafen møtes.

Steg 6 - Konklusjon

Påstanden er sann; skjæringen kan være én, to med tangering, eller tre, men minst én finnes alltid.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Intersect[x^3+p x^2+q x+r, a x+b]
minst ett reelt skjæringspunkt

Tolkning: Differansen er et reelt tredjegradspolynom.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x,a,b,p,q,r = sp.symbols("x a b p q r", real=True)
f = x**3+p*x**2+q*x+r
difference = sp.expand(f-(a*x+b))
print("f(x) - (a*x+b) =", difference)
print("Degree in x =", sp.degree(difference,x))
print("Leading coefficient =", sp.LC(sp.Poly(difference,x)))
print("A real cubic has at least one real root by continuity and opposite end behavior")
example = difference.subs({p:1,q:-2,r:4,a:7,b:-3})
print("Example cubic difference =", example)
print("Example numerical roots =", sp.nroots(example))
print("Claim 2 is true")
Utskrift fra Python:
f(x) - (a*x+b) = -a*x - b + p*x**2 + q*x + r + x**3
Degree in x = 3
Leading coefficient = 1
A real cubic has at least one real root by continuity and opposite end behavior
Example cubic difference = x**3 + x**2 - 9*x + 7
Example numerical roots = [-3.82842712474619, 1.00000000000000, 1.82842712474619]
Claim 2 is true

Fasit: Påstand 2 er sann.

Vanlig feil: Å hevde at alle kubiske likninger har tre reelle røtter; de kan ha én reell og to komplekse.
Sensorpunkt: Argumentet må bruke at differansen fortsatt er et kontinuerlig polynom av oddetallsgrad.
Del 2 - Oppgave 3cSymmetri i den deriverte

Oppgave 3c

Oppgave: Påstand 3: Dersom grafen til en tredjegradsfunksjon har vendepunkt for \(x=3\), er \(f^{\prime}(1)=f^{\prime}(5)\).
Vis løsning

Hva spør oppgaven om? Vi skal bruke at den deriverte til en tredjegradsfunksjon er en parabel, og vendepunktets x-koordinat gir symmetriaksen.

Steg 1 - Skriv funksjonen generelt

La \(f(x)=Ax^3+Bx^2+Cx+D\), der \(A\ne0\).

Steg 2 - Bruk vendepunktet

\[f^{\prime\prime}(x)=6Ax+2B.\] Vendepunkt ved \(x=3\) gir \(18A+2B=0\), altså \(B=-9A\).

Steg 3 - Deriver

\[f^{\prime}(x)=3Ax^2+2Bx+C=3Ax^2-18Ax+C.\]

Steg 4 - Fullfør kvadratet

\[f^{\prime}(x)=3A(x-3)^2+(C-27A).\]

Steg 5 - Bruk symmetrien

Punktene 1 og 5 ligger begge 2 enheter fra symmetriaksen \(x=3\). Derfor gir kvadratleddet samme verdi.

Steg 6 - Konklusjon

\[f^{\prime}(1)=3A\cdot4+C-27A=f^{\prime}(5).\] Påstanden er sann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[(3A(1-3)^2+K)-(3A(5-3)^2+K)]
\(0\)

Tolkning: Den deriverte er symmetrisk om x=3.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A,C,D,x = sp.symbols("A C D x", real=True, nonzero=True)
B = -9*A
f = A*x**3+B*x**2+C*x+D
f_prime = sp.factor(sp.diff(f,x))
f_second = sp.factor(sp.diff(f,x,2))
difference = sp.simplify(f_prime.subs(x,1)-f_prime.subs(x,5))
vertex_form = sp.expand(3*A*(x-3)**2+(C-27*A))
print("Condition from f''(3)=0 gives B =", B)
print("f'(x) =", f_prime)
print("f''(x) =", f_second)
print("Vertex-form derivative expands to =", vertex_form)
print("f'(1)-f'(5) =", difference)
print("Claim 3 is true")
Utskrift fra Python:
Condition from f''(3)=0 gives B = -9*A
f'(x) = 3*A*x**2 - 18*A*x + C
f''(x) = 6*A*(x - 3)
Vertex-form derivative expands to = 3*A*x**2 - 18*A*x + C
f'(1)-f'(5) = 0
Claim 3 is true

Fasit: Påstand 3 er sann.

Vanlig feil: Å bruke symmetri til selve tredjegradsfunksjonen; det er den deriverte parabelen som er symmetrisk.
Sensorpunkt: Knytt vendepunktet til \(f^{\prime\prime}(3)=0\) og vis symmetrien i \(f^{\prime}\).
Del 2 - Oppgave 4aVolum med fast grunnside

Oppgave 4a

Oppgave: En åpen kasse har kvadratisk grunnflate og samlet plateareal høyst \(120\,\mathrm{dm}^2\). Hva er største volum når grunnsiden er \(5\) dm?
Vis løsning

Hva spør oppgaven om? Vi skal bruke arealbegrensningen til å finne størst mulig høyde.

Steg 1 - Definer målene

Grunnsiden er \(x=5\) dm og høyden er \(h\) dm.

Steg 2 - Platearealet

Kassen har én bunn og fire sideflater: \[S=x^2+4xh=25+20h.\]

Steg 3 - Bruk arealgrensen

\[25+20h\le120\quad\Longrightarrow\quad20h\le95.\]

Steg 4 - Største høyde

\[h\le\frac{95}{20}=4{,}75.\]

Steg 5 - Volumet

\[V=x^2h=25\cdot4{,}75=118{,}75\ \mathrm{dm}^3.\]

Steg 6 - Hvorfor hele arealet brukes

For fast grunnside øker volumet lineært med høyden, så maksimum oppnås når platearealet er nøyaktig 120.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[25+20h=120,h]
\(h=4.75\), \(V=118.75\)

Tolkning: Hele arealrammen brukes ved maksimum.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
h = sp.symbols("h", nonnegative=True)
x = sp.Integer(5)
area = x**2+4*x*h
height = sp.solve(sp.Eq(area,120),h)[0]
volume = sp.simplify(x**2*height)
print("Area expression =", area)
print("Maximum height =", height)
print("Maximum volume =", volume)
print("Decimal volume =", sp.N(volume,10))
print("Area check =", area.subs(h,height))
Utskrift fra Python:
Area expression = 20*h + 25
Maximum height = 19/4
Maximum volume = 475/4
Decimal volume = 118.7500000
Area check = 120

Fasit: \(118{,}75\,\mathrm{dm}^3\).

Vanlig feil: Å ta med et lokk og bruke \(2x^2+4xh\).
Sensorpunkt: Platearealet for en kasse uten lokk og korrekt enhet må framgå.
Del 2 - Oppgave 4bGlobal volumoptimering

Oppgave 4b

Oppgave: Hva er det maksimale volumet kassen kan få når platearealet er høyst \(120\,\mathrm{dm}^2\)?
Vis løsning

Hva spør oppgaven om? Vi skal uttrykke høyden ved grunnsiden og maksimere en énvariabelfunksjon.

Steg 1 - La grunnsiden være x

La \(x>0\) være siden i kvadratbunnen og \(h>0\) høyden.

Steg 2 - Bruk hele arealet

Ved maksimum er \(x^2+4xh=120\), så \[h=\frac{120-x^2}{4x}.\]

Steg 3 - Volumfunksjonen

\[V(x)=x^2h=\frac{x(120-x^2)}4=30x-\frac{x^3}{4}.\]

Steg 4 - Deriver

\[V^{\prime}(x)=30-\frac{3x^2}{4}.\]

Steg 5 - Kritisk punkt

\[30-\frac{3x^2}{4}=0\quad\Longrightarrow\quad x^2=40,\quad x=2\sqrt{10}.\]

Steg 6 - Høyden

\[h=\frac{120-40}{4(2\sqrt{10})}=\sqrt{10}.\]

Steg 7 - Maksimumsvolum

\[V=40\sqrt{10}\approx126{,}49\ \mathrm{dm}^3.\] Den andrederiverte \(V^{\prime\prime}(x)=-3x/2<0\), så punktet er et maksimum.

Volumfunksjonen når platearealet er 120 dm².
Volumfunksjonen når platearealet er 120 dm².

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[(120x-x^3)/4]
\(x=2\sqrt{10}, h=\sqrt{10}, V=40\sqrt{10}\)

Tolkning: Grafen har globalt maksimum i det fysiske intervallet.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
h = (120-x**2)/(4*x)
V = sp.simplify(x**2*h)
V_prime = sp.factor(sp.diff(V,x))
critical = [s for s in sp.solve(sp.Eq(V_prime,0),x) if s.is_positive][0]
height = sp.simplify(h.subs(x,critical))
maximum = sp.simplify(V.subs(x,critical))
second = sp.simplify(sp.diff(V,x,2).subs(x,critical))
print("h(x) =", h)
print("V(x) =", V)
print("V'(x) =", V_prime)
print("Optimal base side =", critical)
print("Optimal height =", height)
print("Maximum volume =", maximum)
print("Decimal volume =", sp.N(maximum,12))
print("Second derivative at optimum =", second)
Utskrift fra Python:
h(x) = (120 - x**2)/(4*x)
V(x) = x*(120 - x**2)/4
V'(x) = -3*(x**2 - 40)/4
Optimal base side = 2*sqrt(10)
Optimal height = sqrt(10)
Maximum volume = 40*sqrt(10)
Decimal volume = 126.491106407
Second derivative at optimum = -3*sqrt(10)

Fasit: \(V_{\max}=40\sqrt{10}\approx126{,}49\,\mathrm{dm}^3\).

Vanlig feil: Å maksimere arealet i stedet for volumet, eller å glemme det fysiske kravet \(x>0\).
Sensorpunkt: Vis modell, derivert, kritisk punkt, maksimumskontroll og mål med enheter.
Del 2 - Oppgave 4cMinimering av materialbruk

Oppgave 4c

Oppgave: Kassen skal romme \(80\,\mathrm{dm}^3\). Hva er det minste samlede platearealet?
Vis løsning

Hva spør oppgaven om? Vi skal bruke volumkravet til å eliminere høyden og deretter minimere overflatearealet.

Steg 1 - Volumkravet

\[x^2h=80\quad\Longrightarrow\quad h=\frac{80}{x^2}.\]

Steg 2 - Arealfunksjonen

\[S(x)=x^2+4xh=x^2+\frac{320}{x},\qquad x>0.\]

Steg 3 - Deriver

\[S^{\prime}(x)=2x-\frac{320}{x^2}.\]

Steg 4 - Finn kritisk punkt

\[2x-\frac{320}{x^2}=0\quad\Longrightarrow\quad2x^3=320\quad\Longrightarrow\quad x=\sqrt[3]{160}.\]

Steg 5 - Minimumskontroll

\[S^{\prime\prime}(x)=2+\frac{640}{x^3}>0\] for \(x>0\), så punktet gir minimum.

Steg 6 - Forenkle minimumsarealet

Når \(x^3=160\), er \(320/x=2x^2\). Dermed \[S_{\min}=3x^2=3\cdot160^{2/3}.\]

Steg 7 - Numerisk svar

\[S_{\min}\approx88{,}42\ \mathrm{dm}^2.\] Høyden blir omtrent \(2{,}714\) dm.

Platearealet som funksjon av grunnsiden ved volum 80 dm³.
Platearealet som funksjon av grunnsiden ved volum 80 dm³.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[x^2+320/x]
\(x=\sqrt[3]{160}, S_{min}=3\cdot160^{2/3}\)

Tolkning: Dette er globalt minimum for x>0.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
h = 80/x**2
S = x**2+4*x*h
S_prime = sp.factor(sp.diff(S,x))
critical = sp.real_root(160,3)
height = sp.simplify(h.subs(x,critical))
minimum = sp.simplify(S.subs(x,critical))
print("h(x) =", h)
print("S(x) =", S)
print("S'(x) =", S_prime)
print("Optimal base side =", critical)
print("Optimal height =", height)
print("Minimum area exact =", minimum)
print("Equivalent exact form =", 3*160**(sp.Rational(2,3)))
print("Minimum area decimal =", sp.N(minimum,12))
print("Second derivative is positive =", sp.simplify(sp.diff(S,x,2)))
Utskrift fra Python:
h(x) = 80/x**2
S(x) = x**2 + 320/x
S'(x) = 2*(x**3 - 160)/x**2
Optimal base side = 2*20**(1/3)
Optimal height = 20**(1/3)
Minimum area exact = 24*50**(1/3)
Equivalent exact form = 24*50**(1/3)
Minimum area decimal = 88.4167559674
Second derivative is positive = 2 + 640/x**3

Fasit: \(S_{\min}=3\cdot160^{2/3}\approx88{,}42\,\mathrm{dm}^2\).

Vanlig feil: Å sette platearealet lik 120 også i denne deloppgaven; her skal arealet minimeres under volumkravet 80.
Sensorpunkt: Volumkravet, arealfunksjonen, minimumskontrollen og enheten må vises.
Del 2 - Oppgave 5aVektorfart

Oppgave 5a

Oppgave: Puckens posisjon er \[\vec r(t)=\bigl[8(e^{-t}-t),\,5(e^{-t}-t)\bigr].\] Hvilken fart hadde pucken idet den ble sendt av gårde?
Vis løsning

Hva spør oppgaven om? Vi skal derivere vektorfunksjonen og finne lengden av fartsvektoren ved \(t=0\).

Steg 1 - Deriver komponentene

\[\vec r^{\prime}(t)=\bigl[8(-e^{-t}-1),\,5(-e^{-t}-1)\bigr].\]

Steg 2 - Sett t=0

\[\vec r^{\prime}(0)=[-16,-10].\]

Steg 3 - Finn farten

Fart er lengden av fartsvektoren: \[v(0)=\sqrt{(-16)^2+(-10)^2}.\]

Steg 4 - Forenkle

\[v(0)=\sqrt{356}=2\sqrt{89}\approx18{,}87.\]

Steg 5 - Enhet

Posisjon er oppgitt i meter og tid i sekunder, så farten er meter per sekund.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Length(Derivative[(8(exp(-t)-t),5(exp(-t)-t))] at t=0)
\(2\sqrt{89}\approx18.87\)

Tolkning: Lengden av fartsvektoren gir momentanfarten.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
r = sp.Matrix([8*(sp.exp(-t)-t), 5*(sp.exp(-t)-t)])
velocity = r.diff(t)
initial_velocity = velocity.subs(t,0)
initial_speed = sp.sqrt(initial_velocity.dot(initial_velocity))
print("r(t) =", tuple(r))
print("r'(t) =", tuple(velocity))
print("r'(0) =", tuple(initial_velocity))
print("Initial speed exact =", initial_speed)
print("Initial speed decimal =", sp.N(initial_speed,12), "m/s")
Utskrift fra Python:
r(t) = (-8*t + 8*exp(-t), -5*t + 5*exp(-t))
r'(t) = (-8 - 8*exp(-t), -5 - 5*exp(-t))
r'(0) = (-16, -10)
Initial speed exact = 2*sqrt(89)
Initial speed decimal = 18.8679622641 m/s

Fasit: \(2\sqrt{89}\approx18{,}87\,\mathrm{m/s}\).

Vanlig feil: Å oppgi fartsvektoren \([-16,-10]\) som selve farten uten å ta lengden.
Sensorpunkt: Deriver begge komponentene og skill mellom fartsvektor og fart.
Del 2 - Oppgave 5bTreff med banen

Oppgave 5b

Oppgave: Hvor lang tid gikk det før pucken traff vantet på en bane med \(-30\le x\le30\) og \(-15\le y\le15\)?
Vis løsning

Hva spør oppgaven om? Vi skal avgjøre hvilken vegg puckens rette bane møter først og løse den tilsvarende likningen.

Steg 1 - Felles skalarfaktor

Sett \(s(t)=e^{-t}-t\). Da er \(x(t)=8s(t)\) og \(y(t)=5s(t)\), så banen ligger på linjen \(y=(5/8)x\).

Steg 2 - Bevegelsesretning

\(s(0)=1\), og \(s^{\prime}(t)=-e^{-t}-1<0\). Pucken går derfor mot venstre og nedover.

Steg 3 - Sammenlikn veggene

For å nå bunnveggen \(y=-15\) trengs \(s=-3\), som gir \(x=-24\), fortsatt innenfor banen. Venstre vegg \(x=-30\) ville kreve \(s=-3{,}75\), men da er \(y=-18{,}75\), altså har pucken allerede passert bunnveggen.

Steg 4 - Løs trefflikningen

\[5(e^{-t}-t)=-15\quad\Longleftrightarrow\quad e^{-t}-t=-3.\]

Steg 5 - Numerisk løsning

Likningen gir \[t\approx3{,}04748\ \text{s}.\] Eksakt kan den skrives \(t=3+W(e^{-3})\), der \(W\) er Lambert W-funksjonen.

Steg 6 - Treffpunkt

Ved dette tidspunktet er \((x,y)=(-24,-15)\).

Banen, puckens bane og den andre spillerens bane.
Banen, puckens bane og den andre spillerens bane.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[5(exp(-t)-t)=-15,t]
\(t\approx3.04748\), punkt \((-24,-15)\)

Tolkning: Pucken treffer den nedre langsiden først.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", positive=True)
exact_time = 3+sp.LambertW(sp.exp(-3))
r = sp.Matrix([8*(sp.exp(-t)-t),5*(sp.exp(-t)-t)])
point = [sp.simplify(component.subs(t,exact_time)) for component in r]
print("Equation: exp(-t)-t = -3")
print("Exact time =", exact_time)
print("Time decimal =", sp.N(exact_time,14))
print("Impact point exact =", point)
print("Impact point decimal =", [sp.N(value,12) for value in point])
print("Inside horizontal boundary:", abs(float(point[0])) <= 30)
print("Bottom board reached first because x=-24 when y=-15")
Utskrift fra Python:
Equation: exp(-t)-t = -3
Exact time = LambertW(exp(-3)) + 3
Time decimal = 3.0474784910249
Impact point exact = [-24 - 8*LambertW(exp(-3)) + 8*exp(-3 - LambertW(exp(-3))), -15 - 5*LambertW(exp(-3)) + 5*exp(-3 - LambertW(exp(-3)))]
Impact point decimal = [-24.0000000000, -15.0000000000]
Inside horizontal boundary: True
Bottom board reached first because x=-24 when y=-15

Fasit: Omtrent \(3{,}05\) sekunder; pucken treffer vantet i \((-24,-15)\).

Vanlig feil: Å løse \(x=-30\) uten å kontrollere om pucken allerede har krysset \(y=-15\).
Sensorpunkt: Identifiser riktig vegg, løs likningen og oppgi både tid og treffpunkt.
Del 2 - Oppgave 5cSamtidige parameterbevegelser

Oppgave 5c

Oppgave: En annen spiller starter i \(P(-18,11)\) og har konstant fartsvektor \([3,-7]\). Begrunn at spilleren ikke ble truffet av pucken.
Vis løsning

Hva spør oppgaven om? Kollisjon krever samme posisjon ved samme tidspunkt. Vi bruker først at pucken alltid ligger på en bestemt linje.

Steg 1 - Spillerens posisjon

\[\vec q(t)=(-18,11)+t(3,-7)=(-18+3t,11-7t).\]

Steg 2 - Puckens banelinje

Puckens koordinater oppfyller \(5x-8y=0\), fordi \(x=8s\) og \(y=5s\).

Steg 3 - Når krysser spilleren banelinja?

For spilleren er \[5(-18+3t)-8(11-7t)=71t-178.\] Dermed er spilleren på puckens banelinje bare når \[t=\frac{178}{71}\approx2{,}50704.\]

Steg 4 - Spillerens posisjon da

\[\vec q\left(\frac{178}{71}\right)=\left(-\frac{744}{71},-\frac{465}{71}\right)\approx(-10{,}479,-6{,}549).\]

Steg 5 - Puckens posisjon samtidig

\[\vec r(2{,}50704)\approx(-19{,}404,-12{,}128).\]

Steg 6 - Sammenlikn

Posisjonene er ulike med avstand omtrent 10,53 m. Dette er det eneste tidspunktet spilleren befinner seg på puckens banelinje, så kollisjon er umulig.

Steg 7 - Tidskontroll

Tidspunktet \(2{,}507\) s er før pucken treffer vantet ved \(3{,}047\) s, så sammenlikningen skjer mens modellen gjelder.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[5(-18+3t)-8(11-7t)=0,t]
\(t=178/71\), men \(q(t)\ne r(t)\)

Tolkning: Spilleren krysser banelinja, men ikke samtidig på samme punkt som pucken.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math

t_cross = 178/71
player = (-18+3*t_cross, 11-7*t_cross)
puck = (8*(math.exp(-t_cross)-t_cross), 5*(math.exp(-t_cross)-t_cross))
distance = math.dist(player,puck)
t_hit = 3.04747849102487
print("Only time player is on puck's path line =", format(t_cross, ".12f"))
print("Player position then =", tuple(round(v,12) for v in player))
print("Puck position then =", tuple(round(v,12) for v in puck))
print("Distance between them =", format(distance, ".12f"), "m")
print("This time is before board impact:", t_cross < t_hit)
print("Same position:", all(abs(player[i]-puck[i]) < 1e-10 for i in range(2)))
print("Therefore no collision occurs")
Utskrift fra Python:
Only time player is on puck's path line = 2.507042253521
Player position then = (-10.478873239437, -6.549295774648)
Puck position then = (-19.404266300824, -12.127666438015)
Distance between them = 10.525248717165 m
This time is before board impact: True
Same position: False
Therefore no collision occurs

Fasit: Spilleren blir ikke truffet; ved det eneste tidspunktet spilleren krysser puckens banelinje, er de omtrent \(10{,}53\) m fra hverandre.

Vanlig feil: Å sammenlikne banekurvene uten å kreve samme tidspunkt.
Sensorpunkt: En kollisjon er en samtidig likhet av begge koordinater; tidsparameteren må være den samme.
Del 2 - Oppgave 6aCauchys middelverdisetning

Oppgave 6a

Oppgave: For \(f(x)=x^2+3x+1\), bestem \(c\) i Cauchys middelverdisetning når \(a=1\) og \(b=3\).
Vis løsning

Hva spør oppgaven om? Vi skal sette tangentstigningen i \(c\) lik sekantstigningen gjennom endepunktene.

Steg 1 - Funksjonen oppfyller vilkårene

Et polynom er kontinuerlig på \([1,3]\) og deriverbart på \((1,3)\).

Steg 2 - Beregn endepunktsverdiene

\[f(1)=1+3+1=5,\qquad f(3)=9+9+1=19.\]

Steg 3 - Sekantstigningen

\[\frac{f(3)-f(1)}{3-1}=\frac{19-5}{2}=7.\]

Steg 4 - Deriver funksjonen

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

Steg 5 - Sett tangentstigning lik sekantstigning

\[2c+3=7\quad\Longrightarrow\quad c=2.\]

Steg 6 - Intervallkontroll

\(2\in(1,3)\), så verdien oppfyller setningen.

Sekanten fra a=1 til b=3 og den parallelle tangenten ved c=2.
Sekanten fra a=1 til b=3 og den parallelle tangenten ved c=2.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[2c+3=(f(3)-f(1))/(3-1),c]
\(c=2\)

Tolkning: Tangenten ved x=2 er parallell med sekanten.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x,c = sp.symbols("x c", real=True)
f = x**2+3*x+1
a,b = 1,3
secant = sp.simplify((f.subs(x,b)-f.subs(x,a))/(b-a))
derivative = sp.diff(f,x)
solution = sp.solve(sp.Eq(derivative.subs(x,c),secant),c)
print("f(1) =", f.subs(x,a))
print("f(3) =", f.subs(x,b))
print("Secant slope =", secant)
print("f'(x) =", derivative)
print("c-solutions =", solution)
print("c lies in (1,3):", a < solution[0] < b)
Utskrift fra Python:
f(1) = 5
f(3) = 19
Secant slope = 7
f'(x) = 2*x + 3
c-solutions = [2]
c lies in (1,3): True

Fasit: \(c=2\).

Vanlig feil: Å bruke \((f(b)-f(a))/(b+a)\) i stedet for å dele på \(b-a\).
Sensorpunkt: Kontroller vilkårene, beregn sekantstigning, løs likningen og sjekk intervallet.
Del 2 - Oppgave 6bProgrammering av middelverdisetningen

Oppgave 6b

Oppgave: Lag et program som bestemmer \(c\) når du gir verdier til \(a\) og \(b\), for \(f(x)=x^2+3x+1\).
Vis løsning

Hva spør oppgaven om? Programmet skal beregne sekantstigningen og løse \(f^{\prime}(c)=\) sekantstigning, med kontroll av input.

Steg 1 - Definer funksjonen og den deriverte

Bruk \(f(x)=x^2+3x+1\) og \(f^{\prime}(x)=2x+3\).

Steg 2 - Les eller motta a og b

Programmet bør kreve \(a\lt b\), siden intervallet ellers ikke er gyldig skrevet.

Steg 3 - Beregn sekantstigning

\[m=\frac{f(b)-f(a)}{b-a}.\]

Steg 4 - Løs for c

Fra \(2c+3=m\) får vi \(c=(m-3)/2\).

Steg 5 - Returner informasjon

Programmet kan skrive både sekantstigning, \(c\), kontrollverdien \(f^{\prime}(c)\) og om \(c\in(a,b)\).

Steg 6 - Test

For \(a=1,b=3\) skal programmet gi \(c=2\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
c=( ((b^2+3b+1)-(a^2+3a+1))/(b-a)-3 )/2
\(c=(a+b)/2\)

Tolkning: Programmet kan forenkles til midtpunktet.

Python-kontroll med SymPy

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

def f_prime(x):
    return 2*x + 3

def cauchy_c(a, b):
    if not a < b:
        raise ValueError("The input must satisfy a < b")
    secant_slope = (f(b)-f(a))/(b-a)
    c = (secant_slope-3)/2
    return secant_slope, c, f_prime(c), a < c < b

for a, b in [(1,3), (2,8), (-4,5), (0.5,7.25)]:
    slope, c, tangent_slope, inside = cauchy_c(a,b)
    print("a =", a, "b =", b)
    print("secant slope =", slope)
    print("c =", c)
    print("f'(c) =", tangent_slope)
    print("c in (a,b) =", inside)
    print("-")
Utskrift fra Python:
a = 1 b = 3
secant slope = 7.0
c = 2.0
f'(c) = 7.0
c in (a,b) = True
-
a = 2 b = 8
secant slope = 13.0
c = 5.0
f'(c) = 13.0
c in (a,b) = True
-
a = -4 b = 5
secant slope = 4.0
c = 0.5
f'(c) = 4.0
c in (a,b) = True
-
a = 0.5 b = 7.25
secant slope = 10.75
c = 3.875
f'(c) = 10.75
c in (a,b) = True
-

Fasit: Et korrekt program gir \(c\) ved å løse \(2c+3=(f(b)-f(a))/(b-a)\).

Vanlig feil: Å hardkode \(c=2\), slik at programmet bare virker for \(a=1,b=3\).
Sensorpunkt: Programmet må bruke inndataene, håndtere \(a\lt b\) og dokumentere resultatet.
Del 2 - Oppgave 6cOppdage et mønster med program

Oppgave 6c

Oppgave: Bruk programmet til å undersøke om det finnes en sammenheng mellom \(c\) og verdiene av \(a\) og \(b\).
Vis løsning

Hva spør oppgaven om? Vi skal teste flere intervaller og deretter bevise mønsteret algebraisk.

Steg 1 - Observer programresultater

Eksempler som \((a,b)=(1,3),(2,8),(-4,5)\) gir henholdsvis \(c=2,5,0{,}5\).

Steg 2 - Formuler hypotesen

Alle verdiene er midtpunktene i intervallene: \[c=\frac{a+b}{2}.\]

Steg 3 - Beregn sekantstigningen generelt

\[\frac{f(b)-f(a)}{b-a}=\frac{b^2-a^2+3(b-a)}{b-a}=a+b+3.\]

Steg 4 - Bruk den deriverte

\[f^{\prime}(c)=2c+3.\]

Steg 5 - Sett uttrykkene like

\[2c+3=a+b+3\quad\Longrightarrow\quad c=\frac{a+b}{2}.\]

Steg 6 - Tolk

For denne andregradsfunksjonen ligger punktet fra middelverdisetningen alltid nøyaktig midt i intervallet.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[(((b^2+3b+1)-(a^2+3a+1))/(b-a)-3)/2]
\((a+b)/2\)

Tolkning: CAS bekrefter midtpunktsformelen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
a,b,c = sp.symbols("a b c", real=True)
secant = sp.simplify(((b**2+3*b+1)-(a**2+3*a+1))/(b-a))
formula = sp.solve(sp.Eq(2*c+3,secant),c)[0]
print("General secant slope =", secant)
print("Solution for c =", formula)
print("This is the interval midpoint")
tests = [(1,3),(2,8),(-4,5),(0.5,7.25)]
for left,right in tests:
    value = (left+right)/2
    print("a,b =", (left,right), "c =", value, "midpoint check =", value == (left+right)/2)
Utskrift fra Python:
General secant slope = a + b + 3
Solution for c = a/2 + b/2
This is the interval midpoint
a,b = (1, 3) c = 2.0 midpoint check = True
a,b = (2, 8) c = 5.0 midpoint check = True
a,b = (-4, 5) c = 0.5 midpoint check = True
a,b = (0.5, 7.25) c = 3.875 midpoint check = True

Fasit: \(c=(a+b)/2\).

Vanlig feil: Å konkludere fra bare ett testintervall uten å verifisere mønsteret algebraisk.
Sensorpunkt: Bruk programdata til hypotese, og vis deretter den generelle forenklingen.
Del 2 - Oppgave 6dGenerell andregradsfunksjon

Oppgave 6d

Oppgave: Anne påstår at dersom \(a=2\) og \(b=8\), vil \(c=5\) for alle andregradsfunksjoner. Avgjør om påstanden er riktig.
Vis løsning

Hva spør oppgaven om? Vi skal bruke en generell andregradsfunksjon og se om koeffisientene påvirker c.

Steg 1 - Generell andregradsfunksjon

La \(g(x)=Ax^2+Bx+C\), der \(A\ne0\).

Steg 2 - Sekantstigning generelt

\[\frac{g(b)-g(a)}{b-a}=\frac{A(b^2-a^2)+B(b-a)}{b-a}=A(a+b)+B.\]

Steg 3 - Tangentstigning

\[g^{\prime}(c)=2Ac+B.\]

Steg 4 - Bruk middelverdisetningen

\[2Ac+B=A(a+b)+B.\] Siden \(A\ne0\), kan vi forkorte til \[2c=a+b.\]

Steg 5 - Generell formel

\[c=\frac{a+b}{2}.\] Dette er uavhengig av \(A,B,C\).

Steg 6 - Sett inn a=2 og b=8

\[c=\frac{2+8}{2}=5.\]

Steg 7 - Konklusjon

Anne har rett for alle genuine andregradsfunksjoner.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Simplify[Solve[2A c+B=A(a+b)+B,c]]
\(c=(a+b)/2\), derfor \(c=5\)

Tolkning: Koeffisientene faller bort når A er ulik 0.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A,B,C,a,b,c,x = sp.symbols("A B C a b c x", real=True)
g = A*x**2+B*x+C
secant = sp.factor((g.subs(x,b)-g.subs(x,a))/(b-a))
derivative = sp.diff(g,x).subs(x,c)
solution = sp.solve(sp.Eq(derivative,secant),c)[0]
print("General quadratic g(x) =", g)
print("Secant slope =", secant)
print("g'(c) =", derivative)
print("c =", solution)
print("For a=2 and b=8, c =", solution.subs({a:2,b:8}))
examples = [(1,3,-4),(2,-7,10),(-5,11,0)]
for qa,qb,qc in examples:
    print("Quadratic coefficients =", (qa,qb,qc), "gives c = 5 on [2,8]")
Utskrift fra Python:
General quadratic g(x) = A*x**2 + B*x + C
Secant slope = A*a + A*b + B
g'(c) = 2*A*c + B
c = a/2 + b/2
For a=2 and b=8, c = 5
Quadratic coefficients = (1, 3, -4) gives c = 5 on [2,8]
Quadratic coefficients = (2, -7, 10) gives c = 5 on [2,8]
Quadratic coefficients = (-5, 11, 0) gives c = 5 on [2,8]

Fasit: Annes påstand er riktig: \(c=5\) for alle andregradsfunksjoner når \(a=2\) og \(b=8\).

Vanlig feil: Å teste noen få spesielle parabler og kalle det et generelt bevis.
Sensorpunkt: Bruk en generell andregradsfunksjon og vis at alle koeffisientene faller bort.
Kilde og metode: Oppgavetekstene er transkribert fra Utdanningsdirektoratets eksamenssett REA3056 Matematikk R1, høsten 2023 (LK20). Løsningene er originale. Alle Python-blokker er kjørt ved generering, og lagret utskrift er hentet direkte fra kjøringen. Oppgaveformler, originalprogrammet og figurene er kontrollert mot de renderte PDF-sidene.