R2 eksamenVår 2020

Matematikk R2 eksamen – vår 2020

ifingo
Norsk (Bokmål)

ifingo · Matematikk R2

Matematikk R2 - eksamen vår 2020

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 / Oppgave 1aProduktregelen

Oppgave 1a

Oppgave: Deriver funksjonen \(f(x)=x\sin x\).
Original poengangivelse: Oppgave 1 (3 poeng).
Vis løsning

Hva spør oppgaven om? Vi skal derivere et produkt av funksjonene \(x\) og \(\sin x\). Produktregelen må brukes på begge faktorene.

  1. Identifiser faktorene
    Sett \(u(x)=x\) og \(v(x)=\sin x\).
  2. Deriver første faktor
    \(u\prime(x)=1\).
  3. Deriver andre faktor
    \(v\prime(x)=\cos x\).
  4. Bruk produktregelen
    \((uv)\prime=u\prime v+uv\prime\).
  5. Sett inn uttrykkene
    \(f\prime(x)=1\cdot\sin x+x\cdot\cos x\).
  6. Skriv svaret ryddig
    \[f\prime(x)=\sin x+x\cos x\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Derivative(x*sin(x),x)
Resultat: \(\sin x+x\cos x\)
Tolkning: CAS bekrefter at begge leddene fra produktregelen må være med.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, diff, simplify, N

x = symbols('x', real=True)
f = x*sin(x)
derivative = diff(f, x)
expected = sin(x) + x*cos(x)

print("Funksjon f(x) =", f)
print("Derivert f'(x) =", derivative)
print("Forventet uttrykk =", expected)
print("Symbolsk kontroll =", simplify(derivative - expected))
print("f'(0) =", derivative.subs(x, 0))
print("Numerisk f'(1) =", N(derivative.subs(x, 1), 12))

assert simplify(derivative - expected) == 0
Kjørt utskriftFunksjon f(x) = x*sin(x)
Derivert f'(x) = x*cos(x) + sin(x)
Forventet uttrykk = x*cos(x) + sin(x)
Symbolsk kontroll = 0
f'(0) = 0
Numerisk f'(1) = 1.38177329068

Fasit: \(f\prime(x)=\sin x+x\cos x\).

Vanlig feil: Å derivere produktet som \(1\cdot\cos x\), eller å glemme ett av produktregelens to ledd.
Sensorpunkt: Sensor ser etter eksplisitt og korrekt bruk av produktregelen.
Del 1 / Oppgave 1bKvotientregel og kjerneregel

Oppgave 1b

Oppgave: Deriver funksjonen \(g(x)=\dfrac{\cos(x^2)}{x}\), der \(x\ne0\).
Original poengangivelse: Oppgave 1 (3 poeng).
Vis løsning

Hva spør oppgaven om? Telleren er en sammensatt cosinusfunksjon, og hele uttrykket er en kvotient. Vi må kombinere kjerneregelen og kvotientregelen.

  1. Definer teller og nevner
    Sett \(u(x)=\cos(x^2)\) og \(v(x)=x\).
  2. Deriver telleren
    Kjerneregelen gir \(u\prime(x)=-\sin(x^2)\cdot2x=-2x\sin(x^2)\).
  3. Deriver nevneren
    \(v\prime(x)=1\).
  4. Bruk kvotientregelen
    \(g\prime=(u\prime v-uv\prime)/v^2\).
  5. Sett inn og forenkle
    \[g\prime(x)=\frac{-2x^2\sin(x^2)-\cos(x^2)}{x^2}\]
  6. Skriv en ekvivalent form
    \[g\prime(x)=-2\sin(x^2)-\frac{\cos(x^2)}{x^2}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Derivative(cos(x^2)/x,x)
Resultat: \(-2\sin(x^2)-\cos(x^2)/x^2\)
Tolkning: CAS kombinerer kjerneregelen i telleren med kvotientregelen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, cos, sin, diff, simplify, together, N

x = symbols('x', real=True, nonzero=True)
g = cos(x**2)/x
raw = diff(g, x)
expected = -2*sin(x**2) - cos(x**2)/x**2

print("Funksjon g(x) =", g)
print("Derivert fra SymPy =", raw)
print("Samlet brøk =", together(raw))
print("Forventet form =", expected)
print("Symbolsk kontroll =", simplify(raw - expected))
print("Numerisk g'(1) =", N(raw.subs(x, 1), 12))

assert simplify(raw - expected) == 0
Kjørt utskriftFunksjon g(x) = cos(x**2)/x
Derivert fra SymPy = -2*sin(x**2) - cos(x**2)/x**2
Samlet brøk = (-2*x**2*sin(x**2) - cos(x**2))/x**2
Forventet form = -2*sin(x**2) - cos(x**2)/x**2
Symbolsk kontroll = 0
Numerisk g'(1) = -2.22324427548

Fasit: \(g\prime(x)=-2\sin(x^2)-\dfrac{\cos(x^2)}{x^2}\), \(x\ne0\).

Vanlig feil: Å glemme faktoren \(2x\) fra kjerneregelen eller å bruke feil fortegn i kvotientregelen.
Sensorpunkt: Sensor ser etter korrekt kjerneregel, kvotientregel og at domenet \(x\ne0\) respekteres.
Del 1 / Oppgave 2aUbestemt integral

Oppgave 2a

Oppgave: Bestem integralet \(\displaystyle\int\left(x^2+3+e^{2x}\right)\,dx\).
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi integrerer hvert ledd separat. Eksponentialleddet krever at vi kompenserer for den indre deriverte 2.

  1. Del integralet opp
    \(\int x^2dx+\int3dx+\int e^{2x}dx\).
  2. Integrer potensleddet
    \(\int x^2dx=x^3/3\).
  3. Integrer konstanten
    \(\int3dx=3x\).
  4. Integrer eksponentialleddet
    \(\int e^{2x}dx=\frac12e^{2x}\).
  5. Samle leddene
    \(F(x)=x^3/3+3x+e^{2x}/2\).
  6. Ta med integrasjonskonstanten
    \[\int\left(x^2+3+e^{2x}\right)dx=\frac{x^3}{3}+3x+\frac12e^{2x}+C\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(x^2+3+exp(2x),x)
Resultat: \(x^3/3+3x+e^{2x}/2\)
Tolkning: GeoGebra viser én stamfunksjon; den generelle løsningen har i tillegg \(+C\).

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, exp, integrate, diff, simplify

x = symbols('x', real=True)
integrand = x**2 + 3 + exp(2*x)
antiderivative = integrate(integrand, x)
expected = x**3/3 + 3*x + exp(2*x)/2
back = diff(expected, x)

print("Integrand =", integrand)
print("Stamfunksjon fra SymPy =", antiderivative)
print("Forventet stamfunksjon =", expected)
print("Derivert tilbake =", back)
print("Kontroll mot integranden =", simplify(back - integrand))
print("Kontroll mellom formene =", simplify(antiderivative - expected))

assert simplify(back - integrand) == 0
assert simplify(antiderivative - expected) == 0
Kjørt utskriftIntegrand = x**2 + exp(2*x) + 3
Stamfunksjon fra SymPy = x**3/3 + 3*x + exp(2*x)/2
Forventet stamfunksjon = x**3/3 + 3*x + exp(2*x)/2
Derivert tilbake = x**2 + exp(2*x) + 3
Kontroll mot integranden = 0
Kontroll mellom formene = 0

Fasit: \(\displaystyle\frac{x^3}{3}+3x+\frac12e^{2x}+C\).

Vanlig feil: Å skrive \(e^{2x}\) som egen stamfunksjon uten faktoren \(1/2\), eller å glemme \(+C\).
Sensorpunkt: Sensor ser etter korrekt leddvis integrasjon og kontroll av eksponentialleddet.
Del 1 / Oppgave 2bSubstitusjon

Oppgave 2b

Oppgave: Bestem integralet \(\displaystyle\int6x\sin(x^2)\,dx\).
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Kjernen \(x^2\) har derivert \(2x\), som finnes som faktor i integranden. Substitusjon gjør integralet direkte.

  1. Velg substitusjon
    Sett \(u=x^2\).
  2. Finn differensialet
    \(du=2x\,dx\), altså \(6x\,dx=3\,du\).
  3. Bytt variabel
    \(\int6x\sin(x^2)dx=3\int\sin u\,du\).
  4. Integrer sinus
    \(\int\sin u\,du=-\cos u\).
  5. Sett tilbake
    \(-3\cos(x^2)\).
  6. Legg til konstant og kontroller
    \[\int6x\sin(x^2)dx=-3\cos(x^2)+C\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(6*x*sin(x^2),x)
Resultat: \(-3\cos(x^2)\)
Tolkning: CAS bekrefter substitusjonen og det negative fortegnet i stamfunksjonen til sinus.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, integrate, diff, simplify

x = symbols('x', real=True)
integrand = 6*x*sin(x**2)
antiderivative = integrate(integrand, x)
expected = -3*cos(x**2)
back = diff(expected, x)

print("Integrand =", integrand)
print("Stamfunksjon fra SymPy =", antiderivative)
print("Forventet stamfunksjon =", expected)
print("Derivert av forventet svar =", back)
print("Kontroll mot integranden =", simplify(back - integrand))
print("Kontroll mellom formene =", simplify(antiderivative - expected))

assert simplify(back - integrand) == 0
assert simplify(antiderivative - expected) == 0
Kjørt utskriftIntegrand = 6*x*sin(x**2)
Stamfunksjon fra SymPy = -3*cos(x**2)
Forventet stamfunksjon = -3*cos(x**2)
Derivert av forventet svar = 6*x*sin(x**2)
Kontroll mot integranden = 0
Kontroll mellom formene = 0

Fasit: \(-3\cos(x^2)+C\).

Vanlig feil: Å glemme minusfortegnet eller å bruke \(du=x\,dx\) i stedet for \(du=2x\,dx\).
Sensorpunkt: Sensor ser etter en tydelig substitusjon og korrekt tilbakebytte.
Del 1 / Oppgave 2cDelvis integrasjon

Oppgave 2c

Oppgave: Bestem integralet \(\displaystyle\int_1^e x\ln x\,dx\).
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Produktet av et polynom og en logaritme passer til delvis integrasjon. Deretter setter vi inn grensene.

  1. Velg deler
    Sett \(u=\ln x\) og \(dv=x\,dx\).
  2. Finn du og v
    \(du=dx/x\) og \(v=x^2/2\).
  3. Bruk formelen
    \(\int u\,dv=uv-\int v\,du\).
  4. Finn stamfunksjonen
    \[\int x\ln x\,dx=\frac{x^2}{2}\ln x-\frac{x^2}{4}\]
  5. Sett inn øvre og nedre grense
    Ved \(x=e\) får vi \(e^2/4\), og ved \(x=1\) får vi \(-1/4\).
  6. Trekk fra
    \[\int_1^e x\ln x\,dx=\frac{e^2}{4}-\left(-\frac14\right)=\frac{e^2+1}{4}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(x*ln(x),x,1,e)
Resultat: \((e^2+1)/4\)
Tolkning: CAS gir den eksakte verdien etter grenseinnsetting.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, log, E, integrate, simplify, N

x = symbols('x', positive=True)
integrand = x*log(x)
antiderivative = integrate(integrand, x)
value = integrate(integrand, (x, 1, E))
expected = (E**2 + 1)/4

print("Integrand =", integrand)
print("Stamfunksjon =", antiderivative)
print("Verdi ved x=e =", antiderivative.subs(x, E))
print("Verdi ved x=1 =", antiderivative.subs(x, 1))
print("Bestemt integral =", value)
print("Desimalverdi =", N(value, 12))
print("Symbolsk kontroll =", simplify(value - expected))

assert simplify(value - expected) == 0
Kjørt utskriftIntegrand = x*log(x)
Stamfunksjon = x**2*log(x)/2 - x**2/4
Verdi ved x=e = exp(2)/4
Verdi ved x=1 = -1/4
Bestemt integral = 1/4 + exp(2)/4
Desimalverdi = 2.09726402473
Symbolsk kontroll = 0

Fasit: \(\displaystyle\frac{e^2+1}{4}\).

Vanlig feil: Å glemme at \(\ln e=1\) og \(\ln1=0\), eller å trekke grensene i feil rekkefølge.
Sensorpunkt: Sensor ser etter riktig valg ved delvis integrasjon og korrekt grenseinnsetting.
Del 1 / Oppgave 3aAritmetisk rekke

Oppgave 3a

Oppgave: I en aritmetisk rekke er \(a_1=3\), og summen av de 5 første leddene er 55. Hva blir summen av de 10 første leddene?
Original poengangivelse: Oppgave 3 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi bruker sumformelen for å finne differansen \(d\), og deretter beregner vi \(S_{10}\).

  1. Skriv sumformelen
    \(S_n=\frac n2(2a_1+(n-1)d)\).
  2. Bruk opplysningen om de fem første
    \(55=\frac52(2\cdot3+4d)\).
  3. Løs for differansen
    \(110=30+20d\), så \(d=4\).
  4. Finn det tiende leddet
    \(a_{10}=3+9\cdot4=39\).
  5. Beregn summen
    \(S_{10}=\frac{10}{2}(3+39)\).
  6. Konkluder
    \[S_{10}=210\]
Den aritmetiske rekken har lineært voksende ledd og delsummer.
Den aritmetiske rekken har lineært voksende ledd og delsummer.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(55=5/2*(2*3+4*d),d)
Resultat: \(d=4\)
Tolkning: Når differansen er funnet, gir sumformelen \(S_{10}=210\).

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, simplify

d = symbols('d', real=True)
equation = Eq(55, 5*(2*3 + 4*d)/2)
solution = solve(equation, d)[0]
a10 = 3 + 9*solution
S10 = 10*(3 + a10)/2
terms = [3 + k*solution for k in range(10)]

print("Likning for S5 =", equation)
print("Differanse d =", solution)
print("De ti første leddene =", terms)
print("Tiende ledd a10 =", a10)
print("Sum beregnet med formel =", S10)
print("Sum kontrollert direkte =", sum(terms))

assert solution == 4
assert simplify(S10 - 210) == 0
assert sum(terms) == 210
Kjørt utskriftLikning for S5 = Eq(55, 10*d + 15)
Differanse d = 4
De ti første leddene = [3, 7, 11, 15, 19, 23, 27, 31, 35, 39]
Tiende ledd a10 = 39
Sum beregnet med formel = 210
Sum kontrollert direkte = 210

Fasit: \(S_{10}=210\).

Vanlig feil: Å anta en differanse uten å bruke opplysningen \(S_5=55\), eller å bruke \(n\) i stedet for \(n-1\).
Sensorpunkt: Sensor ser etter at differansen først bestemmes og at sumformelen brukes korrekt.
Del 1 / Oppgave 3bUendelig geometrisk rekke

Oppgave 3b

Oppgave: Begrunn at rekken \(7+\frac72+\frac74+\cdots\) konvergerer, og bestem summen.
Original poengangivelse: Oppgave 3 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi identifiserer første ledd og kvotient. En uendelig geometrisk rekke konvergerer når absoluttverdien av kvotienten er mindre enn 1.

  1. Finn første ledd
    \(a_1=7\).
  2. Finn kvotienten
    \(q=(7/2)/7=1/2\).
  3. Kontroller konvergens
    \(|q|=1/2<1\), derfor konvergerer rekken.
  4. Bruk sumformelen
    \(S=a_1/(1-q)\).
  5. Sett inn
    \(S=7/(1-1/2)\).
  6. Beregn
    \[S=14\]
Delsummene i den geometriske rekken nærmer seg 14.
Delsummene i den geometriske rekken nærmer seg 14.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Sum(7*(1/2)^(n-1),n,1,Infinity)
Resultat: \(14\)
Tolkning: CAS bekrefter både konvergens og sumverdien.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, summation, Rational, oo, simplify

n = symbols('n', integer=True, positive=True)
term = 7*Rational(1, 2)**(n-1)
partial_sums = [summation(term, (n, 1, k)) for k in range(1, 9)]
infinite_sum = summation(term, (n, 1, oo))
expected = 7/(1-Rational(1, 2))

print("Generelt ledd =", term)
print("Kvotient q =", Rational(1, 2))
print("De åtte første delsummene =", partial_sums)
print("Uendelig sum fra SymPy =", infinite_sum)
print("Sum fra formelen =", expected)
print("Symbolsk kontroll =", simplify(infinite_sum - expected))

assert abs(Rational(1, 2)) < 1
assert infinite_sum == 14
Kjørt utskriftGenerelt ledd = 7*2**(1 - n)
Kvotient q = 1/2
De åtte første delsummene = [7, 21/2, 49/4, 105/8, 217/16, 441/32, 889/64, 1785/128]
Uendelig sum fra SymPy = 14
Sum fra formelen = 14
Symbolsk kontroll = 0

Fasit: Rekken konvergerer fordi \(|q|=1/2<1\), og summen er \(14\).

Vanlig feil: Å bruke \(S=a_1/(1+q)\) eller å glemme å begrunne konvergenskravet.
Sensorpunkt: Sensor ser etter både konvergensbegrunnelse og korrekt bruk av sumformelen.
Del 1 / Oppgave 4aTrigonometriske ekstremalpunkter

Oppgave 4a

Oppgave: Funksjonen er gitt ved \(f(x)=2\sin(\pi x+\pi)-1\), \(x\in\langle-1,3\rangle\). Bestem koordinatene til toppunktene og bunnpunktene.
Original poengangivelse: Oppgave 4 (5 poeng).
Vis løsning

Hva spør oppgaven om? Amplituden er 2 og likevektslinjen er \(y=-1\). Vi finner hvor sinus er henholdsvis 1 og -1 innenfor intervallet.

  1. Les av amplitude og likevektslinje
    Maksimal verdi er \(-1+2=1\), og minimal verdi er \(-1-2=-3\).
  2. Finn toppunktene
    \(\sin(\pi x+\pi)=1\) når \(\pi x+\pi=\pi/2+2k\pi\).
  3. Løs toppunktlikningen
    \(x=-1/2+2k\), som gir \(x=-1/2\) og \(x=3/2\) i intervallet.
  4. Finn bunnpunktene
    \(\sin(\pi x+\pi)=-1\) når \(\pi x+\pi=3\pi/2+2k\pi\).
  5. Løs bunnpunktlikningen
    \(x=1/2+2k\), som gir \(x=1/2\) og \(x=5/2\).
  6. Skriv koordinatene
    Toppunktene er \((-1/2,1)\) og \((3/2,1)\). Bunnpunktene er \((1/2,-3)\) og \((5/2,-3)\).
Grafen viser de to toppunktene og de to bunnpunktene på intervallet.
Grafen viser de to toppunktene og de to bunnpunktene på intervallet.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Extremum(2*sin(pi*x+pi)-1,-1,3)
Resultat: \((-1/2,1),(1/2,-3),(3/2,1),(5/2,-3)\)
Tolkning: GeoGebra finner de fire indre ekstremalpunktene på det oppgitte intervallet.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, pi, diff, solve, Eq, simplify, Rational

x = symbols('x', real=True)
f = 2*sin(pi*x + pi) - 1
f1 = diff(f, x)
critical = [Rational(-1,2), Rational(1,2), Rational(3,2), Rational(5,2)]
points = [(v, simplify(f.subs(x, v))) for v in critical]
maxima = [p for p in points if p[1] == 1]
minima = [p for p in points if p[1] == -3]

print("Funksjon f(x) =", f)
print("Derivert f'(x) =", f1)
print("Kritiske x-verdier i intervallet =", critical)
print("Ekstremalpunkter =", points)
print("Toppunkter =", maxima)
print("Bunnpunkter =", minima)

assert maxima == [(Rational(-1,2), 1), (Rational(3,2), 1)]
assert minima == [(Rational(1,2), -3), (Rational(5,2), -3)]
Kjørt utskriftFunksjon f(x) = -2*sin(pi*x) - 1
Derivert f'(x) = -2*pi*cos(pi*x)
Kritiske x-verdier i intervallet = [-1/2, 1/2, 3/2, 5/2]
Ekstremalpunkter = [(-1/2, 1), (1/2, -3), (3/2, 1), (5/2, -3)]
Toppunkter = [(-1/2, 1), (3/2, 1)]
Bunnpunkter = [(1/2, -3), (5/2, -3)]

Fasit: Toppunkter: \((-1/2,1)\) og \((3/2,1)\). Bunnpunkter: \((1/2,-3)\) og \((5/2,-3)\).

Vanlig feil: Å glemme faseforskyvningen \(+\pi\) eller å finne x-verdier uten å kontrollere intervallet.
Sensorpunkt: Sensor ser etter korrekte trigonometriske likninger, intervalkontroll og koordinater.
Del 1 / Oppgave 4bSkjæringspunkter med aksene

Oppgave 4b

Oppgave: Bestem skjæringspunktene mellom grafen til \(f(x)=2\sin(\pi x+\pi)-1\) og hver av koordinataksene.
Original poengangivelse: Oppgave 4 (5 poeng).
Vis løsning

Hva spør oppgaven om? For skjæring med x-aksen setter vi \(f(x)=0\). For skjæring med y-aksen setter vi \(x=0\).

  1. Sett funksjonen lik null
    \(2\sin(\pi x+\pi)-1=0\), altså \(\sin(\pi x+\pi)=1/2\).
  2. Bruk sinusløsningene
    \(\pi x+\pi=\pi/6+2k\pi\) eller \(5\pi/6+2k\pi\).
  3. Isoler x
    \(x=-5/6+2k\) eller \(x=-1/6+2k\).
  4. Velg løsninger i intervallet
    Vi får \(x=-5/6,-1/6,7/6,11/6\).
  5. Finn skjæringen med y-aksen
    \(f(0)=2\sin\pi-1=-1\).
  6. Skriv punktene
    X-aksen: \((-5/6,0),(-1/6,0),(7/6,0),(11/6,0)\). Y-aksen: \((0,-1)\).
Nullpunktene og y-akseskjæringen er markert på grafen.
Nullpunktene og y-akseskjæringen er markert på grafen.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({2*sin(pi*x+pi)-1=0,x>-1,x<3},x)
Resultat: \(x=-5/6,-1/6,7/6,11/6\)
Tolkning: CAS gir alle nullpunktene i det aktuelle intervallet; innsetting av \(x=0\) gir y-akseskjæringen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, pi, solveset, Interval, simplify, Rational

x = symbols('x', real=True)
f = 2*sin(pi*x + pi) - 1
roots = list(solveset(f, x, domain=Interval.open(-1, 3)))
roots = sorted(roots, key=lambda value: float(value))
y_intercept = simplify(f.subs(x, 0))
check_values = [simplify(f.subs(x, value)) for value in roots]

print("Funksjon f(x) =", f)
print("Nullpunkter i intervallet =", roots)
print("Kontroll f(x) i nullpunktene =", check_values)
print("Skjæring med y-aksen: (0,", y_intercept, ")")
print("Antall skjæringer med x-aksen =", len(roots))

assert roots == [Rational(-5,6), Rational(-1,6), Rational(7,6), Rational(11,6)]
assert all(value == 0 for value in check_values)
assert y_intercept == -1
Kjørt utskriftFunksjon f(x) = -2*sin(pi*x) - 1
Nullpunkter i intervallet = [-5/6, -1/6, 7/6, 11/6]
Kontroll f(x) i nullpunktene = [0, 0, 0, 0]
Skjæring med y-aksen: (0, -1 )
Antall skjæringer med x-aksen = 4

Fasit: X-aksen: \((-5/6,0),(-1/6,0),(7/6,0),(11/6,0)\). Y-aksen: \((0,-1)\).

Vanlig feil: Å bare oppgi én løsning av sinuslikningen eller å glemme at perioden i x er 2.
Sensorpunkt: Sensor ser etter begge sinusgrenene, alle løsninger i intervallet og korrekt y-akseskjæring.
Del 1 / Oppgave 4cGrafskisse

Oppgave 4c

Oppgave: Lag en skisse av grafen til \(f(x)=2\sin(\pi x+\pi)-1\) på \(x\in\langle-1,3\rangle\).
Original poengangivelse: Oppgave 4 (5 poeng).
Vis løsning

Hva spør oppgaven om? En korrekt skisse må vise amplitude, periode, likevektslinje, ekstremalpunkter og akseskjæringer i riktig rekkefølge.

  1. Finn perioden
    Koeffisienten foran x er \(\pi\), så perioden er \(T=2\pi/\pi=2\).
  2. Finn likevektslinjen
    Den vertikale forskyvningen er \(-1\), altså \(y=-1\).
  3. Marker ekstremalpunktene
    Toppunkter ved x = -1/2 og 3/2; bunnpunkter ved x = 1/2 og 5/2.
  4. Marker nullpunktene
    Nullpunktene ligger ved \(-5/6,-1/6,7/6,11/6\).
  5. Marker y-akseskjæringen
    Grafen går gjennom \((0,-1)\).
  6. Trekk en jevn sinuskurve
    Kurven gjentar seg med periode 2 og ligger mellom y = -3 og y = 1.
Kontrollert skisse av grafen på hele intervallet.
Kontrollert skisse av grafen på hele intervallet.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Function(2*sin(pi*x+pi)-1,-1,3)
Resultat: Grafen på det oppgitte intervallet
Tolkning: Graftegneren skal vise samme ekstremalpunkter, nullpunkter og periode som den analytiske løsningen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
import numpy as np
from math import pi

sample_x = np.arange(-1, 3.0001, 0.25)
sample_y = 2*np.sin(pi*sample_x + pi) - 1
period = 2*pi/pi
minimum = float(sample_y.min())
maximum = float(sample_y.max())

print("Periode T =", period)
print("Likevektslinje y = -1")
print("Amplitude = 2")
print("Utvalgte x-verdier =", sample_x[:9])
print("Tilhørende funksjonsverdier =", np.round(sample_y[:9], 6))
print("Minste verdi i utvalget =", minimum)
print("Største verdi i utvalget =", maximum)

assert abs(period - 2) < 1e-12
assert abs(minimum + 3) < 1e-12
assert abs(maximum - 1) < 1e-12
Kjørt utskriftPeriode T = 2.0
Likevektslinje y = -1
Amplitude = 2
Utvalgte x-verdier = [-1.   -0.75 -0.5  -0.25  0.    0.25  0.5   0.75  1.  ]
Tilhørende funksjonsverdier = [-1.        0.414214  1.        0.414214 -1.       -2.414214 -3.
 -2.414214 -1.      ]
Minste verdi i utvalget = -3.0
Største verdi i utvalget = 1.0

Fasit: Grafen er en sinuskurve med amplitude 2, periode 2 og likevektslinje \(y=-1\), som vist i figuren.

Vanlig feil: Å tegne en cosinuskurve med feil startpunkt eller å plassere likevektslinjen ved y = 0.
Sensorpunkt: Sensor ser etter korrekt skala, periode, vertikal forskyvning og alle sentrale punkter.
Del 1 / Oppgave 5aVektorer og kryssprodukt

Oppgave 5a

Oppgave: Vi har punktene \(A(-1,3,2)\), \(B(2,2,1)\), \(C(0,1,0)\) og \(T(5,3,8)\). Bestem \(\overrightarrow{AB}\) og \(\overrightarrow{AC}\). Vis at \(\overrightarrow{AB}\times\overrightarrow{AC}=[0,5,-5]\).
Original poengangivelse: Oppgave 5 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi trekker koordinatene til startpunktet fra endepunktet og beregner deretter kryssproduktet komponentvis.

  1. Finn AB
    \(\overrightarrow{AB}=B-A=(2+1,2-3,1-2)=[3,-1,-1]\).
  2. Finn AC
    \(\overrightarrow{AC}=C-A=(0+1,1-3,0-2)=[1,-2,-2]\).
  3. Sett opp determinanten
    \(\overrightarrow{AB}\times\overrightarrow{AC}=\begin{vmatrix}\mathbf i&\mathbf j&\mathbf k\\3&-1&-1\\1&-2&-2\end{vmatrix}\).
  4. Beregn første komponent
    \((-1)(-2)-(-1)(-2)=0\).
  5. Beregn de to siste komponentene
    Andre komponent blir 5, og tredje komponent blir -5.
  6. Konkluder
    \[\overrightarrow{AB}\times\overrightarrow{AC}=[0,5,-5]\]
Vektorene AB og AC ligger i grunnplanet til pyramiden.
Vektorene AB og AC ligger i grunnplanet til pyramiden.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Cross((3,-1,-1),(1,-2,-2))
Resultat: \((0,5,-5)\)
Tolkning: Kryssproduktet er normalt på planet gjennom A, B og C.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix

A = Matrix([-1, 3, 2])
B = Matrix([2, 2, 1])
C = Matrix([0, 1, 0])
AB = B - A
AC = C - A
cross_product = AB.cross(AC)

print("Punkt A =", A.T)
print("Punkt B =", B.T)
print("Punkt C =", C.T)
print("Vektor AB =", AB.T)
print("Vektor AC =", AC.T)
print("Kryssprodukt AB x AC =", cross_product.T)
print("Kontroll: prikkprodukt med AB =", cross_product.dot(AB))
print("Kontroll: prikkprodukt med AC =", cross_product.dot(AC))

assert AB == Matrix([3, -1, -1])
assert AC == Matrix([1, -2, -2])
assert cross_product == Matrix([0, 5, -5])
Kjørt utskriftPunkt A = Matrix([[-1, 3, 2]])
Punkt B = Matrix([[2, 2, 1]])
Punkt C = Matrix([[0, 1, 0]])
Vektor AB = Matrix([[3, -1, -1]])
Vektor AC = Matrix([[1, -2, -2]])
Kryssprodukt AB x AC = Matrix([[0, 5, -5]])
Kontroll: prikkprodukt med AB = 0
Kontroll: prikkprodukt med AC = 0

Fasit: \(\overrightarrow{AB}=[3,-1,-1]\), \(\overrightarrow{AC}=[1,-2,-2]\), og \(\overrightarrow{AB}\times\overrightarrow{AC}=[0,5,-5]\).

Vanlig feil: Å trekke koordinatene i feil rekkefølge eller å bruke prikkprodukt i stedet for kryssprodukt.
Sensorpunkt: Sensor ser etter korrekte vektorer, synlig utregning av kryssproduktet og normalitetsforståelse.
Del 1 / Oppgave 5bVolum med trippelprodukt

Oppgave 5b

Oppgave: Bestem volumet av pyramiden \(ABCT\).
Original poengangivelse: Oppgave 5 (6 poeng).
Vis løsning

Hva spør oppgaven om? Volumet av en tetraeder/pyramide med tre kantvektorer fra samme punkt er en sjettedel av absoluttverdien av skalartrippelproduktet.

  1. Finn den tredje kantvektoren
    \(\overrightarrow{AT}=T-A=[6,0,6]\).
  2. Bruk kryssproduktet fra a
    \(\overrightarrow{AB}\times\overrightarrow{AC}=[0,5,-5]\).
  3. Beregn skalartrippelproduktet
    \([0,5,-5]\cdot[6,0,6]=-30\).
  4. Ta absoluttverdien
    Parallellpipedet har volum \(|-30|=30\).
  5. Del på 6
    En tetraeder utgjør en sjettedel av parallellpipedet.
  6. Konkluder
    \[V=\frac{30}{6}=5\]
Pyramiden ABCT har grunnflate ABC og toppunkt T.
Pyramiden ABCT har grunnflate ABC og toppunkt T.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Abs(Dot(Cross((3,-1,-1),(1,-2,-2)),(6,0,6)))/6
Resultat: \(5\)
Tolkning: CAS beregner absoluttverdien av trippelproduktet og deler på 6.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, Abs, Rational

A = Matrix([-1, 3, 2])
B = Matrix([2, 2, 1])
C = Matrix([0, 1, 0])
T = Matrix([5, 3, 8])
AB = B - A
AC = C - A
AT = T - A
normal = AB.cross(AC)
triple = normal.dot(AT)
volume = Abs(triple)/6

print("AB =", AB.T)
print("AC =", AC.T)
print("AT =", AT.T)
print("AB x AC =", normal.T)
print("Skalartrippelprodukt =", triple)
print("Volum av parallellpiped =", Abs(triple))
print("Volum av pyramiden =", volume)

assert triple == -30
assert volume == 5
Kjørt utskriftAB = Matrix([[3, -1, -1]])
AC = Matrix([[1, -2, -2]])
AT = Matrix([[6, 0, 6]])
AB x AC = Matrix([[0, 5, -5]])
Skalartrippelprodukt = -30
Volum av parallellpiped = 30
Volum av pyramiden = 5

Fasit: Volumet av pyramiden er \(5\) volumenheter.

Vanlig feil: Å dele på 3 i stedet for 6, eller å glemme absoluttverdien av trippelproduktet.
Sensorpunkt: Sensor ser etter riktig tredje vektor, korrekt trippelprodukt og geometrisk faktor 1/6.
Del 1 / Oppgave 5cPlanlikning

Oppgave 5c

Oppgave: Bestem likningen for planet som inneholder punktene A, B og C.
Original poengangivelse: Oppgave 5 (6 poeng).
Vis løsning

Hva spør oppgaven om? Kryssproduktet fra del a er en normalvektor til planet. Vi setter normalvektoren inn i punkt-normal-formen.

  1. Velg normalvektor
    \([0,5,-5]\) kan forenkles til \(\mathbf n=[0,1,-1]\).
  2. Bruk punkt-normal-form
    \(\mathbf n\cdot([x,y,z]-A)=0\).
  3. Sett inn A
    \(0(x+1)+1(y-3)-1(z-2)=0\).
  4. Forenkle
    \(y-3-z+2=0\).
  5. Skriv standardform
    \(y-z-1=0\).
  6. Kontroller punktene
    Alle tre punktene oppfyller \(y-z=1\).
Grunnflaten ABC ligger i planet y - z = 1.
Grunnflaten ABC ligger i planet y - z = 1.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Plane((-1,3,2),(2,2,1),(0,1,0))
Resultat: \(y-z=1\)
Tolkning: GeoGebra finner et plan med normalvektor parallell med \((0,1,-1)\).

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, symbols, simplify

x, y, z = symbols('x y z', real=True)
A = Matrix([-1, 3, 2])
B = Matrix([2, 2, 1])
C = Matrix([0, 1, 0])
normal = (B-A).cross(C-A)
plane_expression = y - z - 1
checks = [plane_expression.subs({x:P[0], y:P[1], z:P[2]}) for P in (A,B,C)]

print("Normalvektor fra kryssprodukt =", normal.T)
print("Forenklet normalvektor =", Matrix([0, 1, -1]).T)
print("Planuttrykk = y - z - 1")
print("Innsetting av A, B og C =", checks)
print("Planlikning: y - z - 1 = 0")

assert normal == Matrix([0,5,-5])
assert checks == [0,0,0]
Kjørt utskriftNormalvektor fra kryssprodukt = Matrix([[0, 5, -5]])
Forenklet normalvektor = Matrix([[0, 1, -1]])
Planuttrykk = y - z - 1
Innsetting av A, B og C = [0, 0, 0]
Planlikning: y - z - 1 = 0

Fasit: Planet har likning \(y-z=1\).

Vanlig feil: Å bruke en kantvektor som normalvektor eller å glemme konstantleddet når punktet settes inn.
Sensorpunkt: Sensor ser etter en gyldig normalvektor, punkt-normal-form og kontroll av punktene.
Del 1 / Oppgave 6aKonvergensområde

Oppgave 6a

Oppgave: En uendelig geometrisk rekke er gitt ved \(2+\ln x+\dfrac{(\ln x)^2}{2}+\cdots\). Bestem rekkens konvergensområde.
Original poengangivelse: Oppgave 6 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi må skrive rekken som en geometrisk rekke og kreve at absoluttverdien av kvotienten er mindre enn 1.

  1. Finn første ledd
    \(a_1=2\).
  2. Finn kvotienten
    \(q=(\ln x)/2\), fordi \(2q=\ln x\).
  3. Kontroller tredje ledd
    \(2q^2=2(\ln x/2)^2=(\ln x)^2/2\).
  4. Bruk konvergenskravet
    \(|\ln x/2|<1\).
  5. Løs ulikheten
    \(-2<\ln x<2\).
  6. Eksponentier
    \[e^{-2}

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(abs(ln(x)/2)<1,x)
Resultat: \(e^{-2}
Tolkning: CAS løser absoluttverdiulikheten og tar samtidig hensyn til at \(x>0\).

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, log, Abs, solve_univariate_inequality, exp

x = symbols('x', positive=True, real=True)
q = log(x)/2
condition = Abs(q) < 1
solution = solve_univariate_inequality(condition, x)

print("Første ledd a1 = 2")
print("Kvotient q =", q)
print("Konvergenskrav =", condition)
print("Løsningsmengde =", solution)
print("Nedre grense =", exp(-2))
print("Øvre grense =", exp(2))
print("Endepunktene er ikke med fordi |q| = 1 der")

assert str(solution) == "(x < exp(2)) & (exp(-2) < x)"
Kjørt utskriftFørste ledd a1 = 2
Kvotient q = log(x)/2
Konvergenskrav = Abs(log(x))/2 < 1
Løsningsmengde = (x < exp(2)) & (exp(-2) < x)
Nedre grense = exp(-2)
Øvre grense = exp(2)
Endepunktene er ikke med fordi |q| = 1 der

Fasit: Rekken konvergerer for \(e^{-2}

Vanlig feil: Å bruke \(q=\ln x\) i stedet for \(q=\ln x/2\), eller å ta med endepunktene.
Sensorpunkt: Sensor ser etter korrekt kvotient, absoluttverdikrav og åpent intervall.

Del 1 / Oppgave 6bSum av geometrisk rekke

Oppgave 6b

Oppgave: Bestem x slik at summen av rekken \(2+\ln x+\dfrac{(\ln x)^2}{2}+\cdots\) blir 4.
Original poengangivelse: Oppgave 6 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi finner sumfunksjonen for den geometriske rekken og løser likningen innenfor konvergensområdet.

  1. Skriv sumformelen
    \(S=a_1/(1-q)\).
  2. Sett inn a1 og q
    \(S(x)=2/(1-\ln x/2)\).
  3. Forenkle
    \(S(x)=4/(2-\ln x)\).
  4. Sett summen lik 4
    \(4/(2-\ln x)=4\).
  5. Løs likningen
    \(2-\ln x=1\), så \(\ln x=1\).
  6. Kontroller konvergensområdet
    \(x=e\) ligger mellom \(e^{-2}\) og \(e^2\), og er derfor gyldig.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(2/(1-ln(x)/2)=4,x)
Resultat: \(x=e\)
Tolkning: CAS finner kandidaten, og domenekontrollen bekrefter at rekken konvergerer der.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, log, Eq, solve, E, simplify

x = symbols('x', positive=True, real=True)
q = log(x)/2
sum_function = 2/(1-q)
solutions = solve(Eq(sum_function, 4), x)

print("Kvotient q(x) =", q)
print("Sumfunksjon S(x) =", simplify(sum_function))
print("Likning S(x)=4")
print("Løsninger =", solutions)
print("Kontroll S(e) =", simplify(sum_function.subs(x, E)))
print("Konvergenskontroll |ln(e)/2| =", abs(log(E)/2))

assert solutions == [E]
assert simplify(sum_function.subs(x, E)-4) == 0
Kjørt utskriftKvotient q(x) = log(x)/2
Sumfunksjon S(x) = -4/(log(x) - 2)
Likning S(x)=4
Løsninger = [E]
Kontroll S(e) = 4
Konvergenskontroll |ln(e)/2| = 1/2

Fasit: \(x=e\).

Vanlig feil: Å løse sumlikningen uten å kontrollere at løsningen ligger i konvergensområdet.
Sensorpunkt: Sensor ser etter korrekt sumfunksjon, algebraisk løsning og domenekontroll.
Del 1 / Oppgave 7Retningsfelt og tangentretning

Oppgave 7

Oppgave: Differensiallikningen \(2x\,y\prime-3y=0\) har integralkurver gjennom punktene A, B, C og D i figuren. Vurder om hver markert tangentretning samsvarer med differensiallikningen.
Original poengangivelse: Oppgave 7 (2 poeng).
Vis løsning

Hva spør oppgaven om? Vi isolerer \(y\prime\) og beregner stigningstallet i hvert av de fire punktene. Deretter sammenligner vi med den tegnede retningen.

  1. Isoler den deriverte
    \[y\prime=\frac{3y}{2x}\]
  2. Vurder A(2,2)
    \(y\prime=6/4=3/2\), men markeringen er horisontal. A stemmer ikke.
  3. Vurder B(-2,2)
    \(y\prime=6/(-4)=-3/2\), som samsvarer med den fallende retningen. B stemmer.
  4. Vurder C(-2,-2)
    \(y\prime=-6/(-4)=3/2\), som samsvarer med den stigende retningen. C stemmer.
  5. Vurder D(2,-2)
    \(y\prime=-6/4=-3/2\), mens den markerte linjen er mye slakere. D stemmer ikke.
  6. Konkluder
    Bare de markerte tangentretningene i B og C samsvarer med differensiallikningen.
Retningsfeltet viser hvorfor B og C passer, mens A og D ikke gjør det.
Retningsfeltet viser hvorfor B og C passer, mens A og D ikke gjør det.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Simplify(3*y/(2*x))
Resultat: \(y\prime=3y/(2x)\)
Tolkning: Innsetting av de fire koordinatparene gir stigningstallene 3/2, -3/2, 3/2 og -3/2.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Rational

points = {
    "A": (2, 2),
    "B": (-2, 2),
    "C": (-2, -2),
    "D": (2, -2),
}
marked_slopes = {"A": 0, "B": Rational(-3,2), "C": Rational(3,2), "D": Rational(-1,4)}
calculated = {name: Rational(3*y, 2*x) for name, (x,y) in points.items()}
matches = {name: calculated[name] == marked_slopes[name] for name in points}

print("Differensiallikningen gir y' = 3y/(2x)")
print("Beregnete stigningstall =", calculated)
print("Modellerte markerte stigningstall =", marked_slopes)
print("Samsvar i hvert punkt =", matches)
print("Punkter som samsvarer =", [name for name, ok in matches.items() if ok])

assert calculated == {"A":Rational(3,2), "B":Rational(-3,2), "C":Rational(3,2), "D":Rational(-3,2)}
assert [name for name, ok in matches.items() if ok] == ["B", "C"]
Kjørt utskriftDifferensiallikningen gir y' = 3y/(2x)
Beregnete stigningstall = {'A': 3/2, 'B': -3/2, 'C': 3/2, 'D': -3/2}
Modellerte markerte stigningstall = {'A': 0, 'B': -3/2, 'C': 3/2, 'D': -1/4}
Samsvar i hvert punkt = {'A': False, 'B': True, 'C': True, 'D': False}
Punkter som samsvarer = ['B', 'C']

Fasit: A: nei. B: ja. C: ja. D: nei.

Vanlig feil: Å bare se på om linjen stiger eller synker uten å sammenligne størrelsen på stigningstallet.
Sensorpunkt: Sensor ser etter isolering av \(y\prime\), innsetting i alle fire punkter og begrunnet sammenligning med figuren.
Del 1 / Oppgave 8Kuleflate tangent til to plan

Oppgave 8

Oppgave: Planene er \(\alpha:-2x+2y-z=21\) og \(\beta:-7x+4y-4z=56\). En kuleflate tangerer \(\alpha\) i \(P(-3,7,-1)\) og \(\beta\) i \(Q(-4,5,-2)\). Bestem en likning for kuleflaten.
Original poengangivelse: Oppgave 8 (3 poeng).
Vis løsning

Hva spør oppgaven om? Radiusen til et tangentpunkt står normalt på tangentplanet. Sentrum må derfor ligge både på normalen gjennom P og på normalen gjennom Q.

  1. Finn normalvektorene
    \(\mathbf n_\alpha=[-2,2,-1]\) og \(\mathbf n_\beta=[-7,4,-4]\).
  2. Sett opp første normallinje
    \(S=P+s\mathbf n_\alpha=(-3,7,-1)+s[-2,2,-1]\).
  3. Sett opp andre normallinje
    \(S=Q+t\mathbf n_\beta=(-4,5,-2)+t[-7,4,-4]\).
  4. Løs likningssystemet
    Koordinatlikningene gir \(s=-3\) og \(t=-1\).
  5. Finn sentrum og radius
    \(S=(3,1,2)\), og \(r=|SP|=9\).
  6. Skriv kulelikningen
    \[(x-3)^2+(y-1)^2+(z-2)^2=81\]
Radiusene SP og SQ står normalt på hvert sitt tangentplan.
Radiusene SP og SQ står normalt på hvert sitt tangentplan.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({-3-2*s=-4-7*t,7+2*s=5+4*t,-1-s=-2-4*t},{s,t})
Resultat: \(s=-3,\ t=-1\)
Tolkning: Likningssystemet finner skjæringspunktet mellom de to normallinjene, altså sentrum S.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, symbols, solve, Eq, simplify, sqrt

s, t = symbols('s t', real=True)
P = Matrix([-3, 7, -1])
Q = Matrix([-4, 5, -2])
n_alpha = Matrix([-2, 2, -1])
n_beta = Matrix([-7, 4, -4])
line_alpha = P + s*n_alpha
line_beta = Q + t*n_beta
solution = solve(list(line_alpha-line_beta), (s,t), dict=True)[0]
S = line_alpha.subs(s, solution[s])
r2 = simplify((S-P).dot(S-P))

print("Normalvektor til alpha =", n_alpha.T)
print("Normalvektor til beta =", n_beta.T)
print("Løsning for parameterne =", solution)
print("Sentrum S =", S.T)
print("Radius i andre r^2 =", r2)
print("Radius r =", sqrt(r2))
print("Kulelikning: (x-3)^2 + (y-1)^2 + (z-2)^2 = 81")

assert solution == {s:-3, t:-1}
assert S == Matrix([3,1,2])
assert r2 == 81
Kjørt utskriftNormalvektor til alpha = Matrix([[-2, 2, -1]])
Normalvektor til beta = Matrix([[-7, 4, -4]])
Løsning for parameterne = {s: -3, t: -1}
Sentrum S = Matrix([[3, 1, 2]])
Radius i andre r^2 = 81
Radius r = 9
Kulelikning: (x-3)^2 + (y-1)^2 + (z-2)^2 = 81

Fasit: \((x-3)^2+(y-1)^2+(z-2)^2=81\).

Vanlig feil: Å anta at P eller Q er sentrum, eller å bruke planetenes konstantledd som radius.
Sensorpunkt: Sensor ser etter begge normallinjene, korrekt sentrum, radius og standard kulelikning.
Del 1 / Oppgave 9Matematisk induksjon

Oppgave 9

Oppgave: En følge er gitt ved \(a_1=2\) og \(a_n=a_{n-1}+n\). Bruk induksjon til å vise at \(a_n=\dfrac{n^2+n+2}{2}\) for alle \(n\in\mathbb N\).
Original poengangivelse: Oppgave 9 (3 poeng).
Vis løsning

Hva spør oppgaven om? Et induksjonsbevis består av et startsteg og et induksjonssteg. I induksjonssteget bruker vi antakelsen for n = k til å bevise formelen for n = k+1.

  1. Startsteg
    For \(n=1\) gir formelen \((1+1+2)/2=2=a_1\).
  2. Induksjonsantakelse
    Anta at \(a_k=(k^2+k+2)/2\) for en vilkårlig \(k\ge1\).
  3. Bruk rekursjonen
    \(a_{k+1}=a_k+(k+1)\).
  4. Sett inn antakelsen
    \[a_{k+1}=\frac{k^2+k+2}{2}+k+1\]
  5. Forenkle
    \[a_{k+1}=\frac{k^2+3k+4}{2}=\frac{(k+1)^2+(k+1)+2}{2}\]
  6. Konkluder
    Siden startsteget og induksjonssteget holder, gjelder formelen for alle \(n\in\mathbb N\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Simplify((k^2+k+2)/2+(k+1)-(((k+1)^2+(k+1)+2)/2))
Resultat: \(0\)
Tolkning: CAS bekrefter at uttrykket i induksjonssteget er identisk med formelen for k+1.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, simplify

k = symbols('k', integer=True, positive=True)
formula_k = (k**2 + k + 2)/2
next_from_recursion = formula_k + (k + 1)
formula_next = ((k+1)**2 + (k+1) + 2)/2
base_value = (1**2 + 1 + 2)/2
sequence = [2]
for n in range(2, 9):
    sequence.append(sequence[-1] + n)
formula_values = [(n**2+n+2)//2 for n in range(1,9)]

print("Startsteg, formelen ved n=1 =", base_value)
print("a_(k+1) fra rekursjonen =", simplify(next_from_recursion))
print("Formelen ved k+1 =", simplify(formula_next))
print("Differanse i induksjonssteget =", simplify(next_from_recursion-formula_next))
print("Følgen beregnet rekursivt =", sequence)
print("Følgen fra formelen =", formula_values)

assert base_value == 2
assert simplify(next_from_recursion-formula_next) == 0
assert sequence == formula_values
Kjørt utskriftStartsteg, formelen ved n=1 = 2.0
a_(k+1) fra rekursjonen = k**2/2 + 3*k/2 + 2
Formelen ved k+1 = k/2 + (k + 1)**2/2 + 3/2
Differanse i induksjonssteget = 0
Følgen beregnet rekursivt = [2, 4, 7, 11, 16, 22, 29, 37]
Følgen fra formelen = [2, 4, 7, 11, 16, 22, 29, 37]

Fasit: Formelen \(a_n=(n^2+n+2)/2\) er bevist ved induksjon.

Vanlig feil: Å kontrollere noen få ledd uten å gjennomføre induksjonssteget, eller å legge til k i stedet for k+1.
Sensorpunkt: Sensor ser etter tydelig startsteg, induksjonsantakelse, korrekt rekursjonsbruk og konklusjon.

Del 2 - med hjelpemidler

Del 2 / Oppgave 1aSinusregresjon

Oppgave 1a

Oppgave: Tabellen viser månedlig energiforbruk i 2019: 1540, 1480, 1320, 1050, 800, 750, 660, 730, 940, 1170, 1300 og 1520 kWh for måned 1–12. Bruk regresjon til å bestemme en trigonometrisk funksjon som passer godt med dataene.
Original poengangivelse: Oppgave 1 (8 poeng).
Vis løsning

Hva spør oppgaven om? Dataene har ett tydelig årlig maksimum og minimum. Vi tilpasser derfor modellen \(g(t)=A\sin(Bt+C)+D\) med ikke-lineær sinusregresjon.

  1. Registrer dataene
    Bruk punktene \((1,1540),(2,1480),\ldots,(12,1520)\).
  2. Velg modelltype
    En sinusmodell passer fordi forbruket varierer periodisk gjennom året.
  3. Kjør regresjonen
    Regresjonen gir omtrent \(A=442.88\), \(B=0.51949\), \(C=1.16359\) og \(D=1108.49\).
  4. Skriv modellen
    \[g(t)\approx442.88\sin(0.51949t+1.16359)+1108.49\]
  5. Kontroller perioden
    \(T=2\pi/B\approx12.095\) måneder, som er nær ett år.
  6. Vurder tilpasningen
    Forklaringsgraden er \(R^2\approx0.9907\), og grafen ligger tett på datapunktene.
Datapunktene og den beregnede sinusregresjonen.
Datapunktene og den beregnede sinusregresjonen.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1FitSin({(1,1540),(2,1480),(3,1320),(4,1050),(5,800),(6,750),(7,660),(8,730),(9,940),(10,1170),(11,1300),(12,1520)})
Resultat: \(g(t)\approx442.88\sin(0.51949t+1.16359)+1108.49\)
Tolkning: FitSin bestemmer amplitude, vinkelhastighet, fase og likevektsnivå direkte fra datapunktene.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
import numpy as np
from scipy.optimize import minimize_scalar

months = np.arange(1, 13, dtype=float)
consumption = np.array([1540,1480,1320,1050,800,750,660,730,940,1170,1300,1520], dtype=float)

def linear_fit_for_omega(omega):
    design = np.column_stack([np.sin(omega*months), np.cos(omega*months), np.ones_like(months)])
    coefficients = np.linalg.lstsq(design, consumption, rcond=None)[0]
    residual = consumption - design@coefficients
    return float(residual@residual), coefficients

optimization = minimize_scalar(lambda omega: linear_fit_for_omega(omega)[0], bounds=(0.35,0.75), method="bounded")
omega = float(optimization.x)
sse, coefficients = linear_fit_for_omega(omega)
sine_coefficient, cosine_coefficient, vertical_shift = coefficients
amplitude = float(np.hypot(sine_coefficient, cosine_coefficient))
phase = float(np.arctan2(cosine_coefficient, sine_coefficient))
predicted = amplitude*np.sin(omega*months + phase) + vertical_shift
r_squared = 1 - sse/np.sum((consumption-consumption.mean())**2)

print("Amplitude A =", amplitude)
print("Vinkelhastighet B =", omega)
print("Fase C =", phase)
print("Vertikalt nivå D =", vertical_shift)
print("Periode 2*pi/B =", 2*np.pi/omega)
print("Forklaringsgrad R^2 =", r_squared)
print("Modellverdier måned 1-12 =", np.round(predicted, 3))
print("Residualer =", np.round(consumption-predicted, 3))

assert 0.98 < r_squared < 1
assert abs(2*np.pi/omega - 12) < 0.2
Kjørt utskriftAmplitude A = 442.8838941850591
Vinkelhastighet B = 0.5194865972360987
Fase C = 1.1635953740632698
Vertikalt nivå D = 1108.49278589954
Periode 2*pi/B = 12.094990208811826
Forklaringsgrad R^2 = 0.990714991626039
Modellverdier måned 1-12 = [1548.588 1465.892 1288.896 1064.301  851.365  706.273  667.308  744.749
  918.166 1141.8   1356.646 1506.017]
Residualer = [ -8.588  14.108  31.104 -14.301 -51.365  43.727  -7.308 -14.749  21.834
  28.2   -56.646  13.983]

Fasit: En egnet modell er \(g(t)\approx442.88\sin(0.51949t+1.16359)+1108.49\). Avrundede regresjonsparametere kan variere litt mellom verktøy.

Vanlig feil: Å tvinge perioden til nøyaktig 12 uten å opplyse det, eller å bruke grader i stedet for radianer.
Sensorpunkt: Sensor ser etter dokumentert regresjon, en tydelig funksjon og en rimelighetsvurdering av periode og tilpasning.
Del 2 / Oppgave 1bStørst vekstfart

Oppgave 1b

Oppgave: For en annen bolig er \(f(t)=1300+730\sin(0.52t+1.07)\). Når økte forbruket raskest ifølge modellen?
Original poengangivelse: Oppgave 1 (8 poeng).
Vis løsning

Hva spør oppgaven om? Forbruket øker raskest når den deriverte har størst positiv verdi. Vi finner maksimum av cosinusfaktoren i \(f\prime(t)\).

  1. Deriver modellen
    \[f\prime(t)=730\cdot0.52\cos(0.52t+1.07)=379.6\cos(0.52t+1.07)\]
  2. Finn maksimal mulig vekstfart
    Cosinus har maksimal verdi 1, så maksimal vekstfart er 379.6 kWh per måned per måned.
  3. Sett cosinus lik 1
    \(0.52t+1.07=2k\pi\).
  4. Velg riktig heltall
    For \(0\le t\le12\) gir \(k=1\) den eneste aktuelle løsningen.
  5. Beregn tidspunktet
    \[t=\frac{2\pi-1.07}{0.52}\approx10.03\]
  6. Tolk svaret
    Forbruket økte raskest omtrent ved måned 10, altså tidlig i oktober.
Forbrukskurven stiger brattest rundt måned 10.
Forbrukskurven stiger brattest rundt måned 10.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(0.52*t+1.07=2*pi,t)
Resultat: \(t\approx10.03\)
Tolkning: Likningen finner tidspunktet der den deriverte når sin maksimale verdi.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, diff, pi, N, simplify

t = symbols('t', real=True)
f = 1300 + 730*sin(0.52*t + 1.07)
derivative = diff(f, t)
time = (2*pi - 1.07)/0.52
maximum_rate = 730*0.52

print("Modell f(t) =", f)
print("Derivert f'(t) =", derivative)
print("Maksimal mulig vekstfart =", maximum_rate)
print("Tidspunkt fra fasebetingelsen =", time)
print("Numerisk tidspunkt =", N(time, 12))
print("Kontroll av cosinusargumentet =", N(0.52*time + 1.07, 12))
print("Kontroll f'(t) =", N(derivative.subs(t, time), 12))

assert abs(float(N(time))-10.0253563599607) < 1e-10
assert abs(float(N(derivative.subs(t,time)))-379.6) < 1e-9
Kjørt utskriftModell f(t) = 730*sin(0.52*t + 1.07) + 1300
Derivert f'(t) = 379.6*cos(0.52*t + 1.07)
Maksimal mulig vekstfart = 379.6
Tidspunkt fra fasebetingelsen = -2.05769230769231 + 3.84615384615385*pi
Numerisk tidspunkt = 10.0253563600
Kontroll av cosinusargumentet = 6.28318530718
Kontroll f'(t) = 379.600000000

Fasit: Forbruket økte raskest ved \(t\approx10.03\), omtrent tidlig i oktober.

Vanlig feil: Å finne når forbruket er størst i stedet for når vekstfarten er størst.
Sensorpunkt: Sensor ser etter derivasjon, maksimering av den deriverte og praktisk tolkning av t-verdien.
Del 2 / Oppgave 1cBestemt integral og praktisk tolkning

Oppgave 1c

Oppgave: Bestem \(\displaystyle\int_0^{12}f(t)\,dt\) for \(f(t)=1300+730\sin(0.52t+1.07)\). Gi en praktisk tolkning av svaret.
Original poengangivelse: Oppgave 1 (8 poeng).
Vis løsning

Hva spør oppgaven om? Integralverdien summerer modellert månedlig energiforbruk kontinuerlig gjennom året.

  1. Sett opp integralet
    \(\int_0^{12}[1300+730\sin(0.52t+1.07)]dt\).
  2. Integrer konstantleddet
    \(\int_0^{12}1300dt=15600\).
  3. Finn en stamfunksjon til sinusleddet
    \(\int730\sin(0.52t+1.07)dt=-\frac{730}{0.52}\cos(0.52t+1.07)\).
  4. Sett inn grensene
    \[15600+\frac{730}{0.52}[\cos(1.07)-\cos(7.31)]\]
  5. Beregn numerisk
    Integralverdien er omtrent 15547.46.
  6. Tolk enheten
    Modellen anslår et samlet energiforbruk på omtrent 15 547 kWh i løpet av året.
Arealet under forbrukskurven representerer modellert årsforbruk.
Arealet under forbrukskurven representerer modellert årsforbruk.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(1300+730*sin(0.52*t+1.07),t,0,12)
Resultat: \(15547.46\)
Tolkning: CAS evaluerer det bestemte integralet og gir modellens anslag for årsforbruket.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, integrate, N, cos

t = symbols('t', real=True)
f = 1300 + 730*sin(0.52*t + 1.07)
antiderivative = integrate(f, t)
annual_consumption = integrate(f, (t, 0, 12))
manual_form = 1300*12 + 730/0.52*(cos(1.07)-cos(0.52*12+1.07))

print("Modell f(t) =", f)
print("Stamfunksjon =", antiderivative)
print("Bestemt integral 0 til 12 =", annual_consumption)
print("Numerisk integral =", N(annual_consumption, 14))
print("Manuell kontrollform =", manual_form)
print("Numerisk kontrollform =", N(manual_form, 14))
print("Forskjell =", N(annual_consumption-manual_form, 5))

assert abs(float(N(annual_consumption))-15547.4642019871) < 1e-7
Kjørt utskriftModell f(t) = 730*sin(0.52*t + 1.07) + 1300
Stamfunksjon = 1300*t - 1403.84615384615*cos(0.52*t + 1.07)
Bestemt integral 0 til 12 = 15547.4642019871
Numerisk integral = 15547.464201987
Manuell kontrollform = 15547.4642019871
Numerisk kontrollform = 15547.464201987
Forskjell = 0

Fasit: \(\displaystyle\int_0^{12}f(t)dt\approx15547.46\). Dette tolkes som omtrent 15 547 kWh totalt energiforbruk i året.

Vanlig feil: Å tolke integralet som forbruket i én måned eller å glemme faktoren 1/0.52 ved integrasjon.
Sensorpunkt: Sensor ser etter korrekt bestemt integral, numerisk verdi og meningsfull praktisk tolkning.
Del 2 / Oppgave 1dIntegral av produktmodeller

Oppgave 1d

Oppgave: Energiprisen modelleres av \(p(t)=0.85+0.17\sin(0.52t+1.07)\) kroner per kWh. Bestem den årlige energikostnaden når modellene f og p legges til grunn.
Original poengangivelse: Oppgave 1 (8 poeng).
Vis løsning

Hva spør oppgaven om? Kostnadsraten er produktet av energiforbruk og pris. Årskostnaden finnes derfor ved å integrere \(f(t)p(t)\) fra 0 til 12.

  1. Skriv kostnadsfunksjonen
    \(c(t)=f(t)p(t)\).
  2. Sett inn modellene
    \(c(t)=[1300+730\sin u][0.85+0.17\sin u]\), der \(u=0.52t+1.07\).
  3. Sett opp årsbeløpet
    \[K=\int_0^{12}f(t)p(t)\,dt\]
  4. Bruk CAS eller numerisk integrasjon
    Produktet inneholder både \(\sin u\) og \(\sin^2u\), så digital integrasjon er hensiktsmessig.
  5. Beregn
    \(K\approx13941.45\).
  6. Tolk og avrund
    Den modellerte årskostnaden er omtrent 13 941 kroner, eventuelt 13 900 kr avrundet til hundre kroner.
Både forbruk og pris varierer med samme sesongfase i modellene.
Både forbruk og pris varierer med samme sesongfase i modellene.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral((1300+730*sin(0.52*t+1.07))*(0.85+0.17*sin(0.52*t+1.07)),t,0,12)
Resultat: \(13941.45\)
Tolkning: Integralet summerer forbruk multiplisert med samtidig energipris gjennom hele året.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, integrate, expand_trig, N

t = symbols('t', real=True)
f = 1300 + 730*sin(0.52*t + 1.07)
p = 0.85 + 0.17*sin(0.52*t + 1.07)
cost_rate = f*p
annual_cost = integrate(cost_rate, (t, 0, 12))

print("Forbruksmodell f(t) =", f)
print("Prismodell p(t) =", p)
print("Produkt f(t)*p(t) =", cost_rate)
print("Utvidet produkt =", expand_trig(cost_rate.expand()))
print("Eksakt/numerisk integralobjekt =", annual_cost)
print("Årskostnad numerisk =", N(annual_cost, 14))
print("Avrundet til nærmeste krone =", round(float(N(annual_cost))))

assert abs(float(N(annual_cost))-13941.4533272957) < 1e-7
Kjørt utskriftForbruksmodell f(t) = 730*sin(0.52*t + 1.07) + 1300
Prismodell p(t) = 0.17*sin(0.52*t + 1.07) + 0.85
Produkt f(t)*p(t) = (0.17*sin(0.52*t + 1.07) + 0.85)*(730*sin(0.52*t + 1.07) + 1300)
Utvidet produkt = 124.1*(0.480124229028534*sin(0.52*t) + 0.877200504274682*cos(0.52*t))**2 + 404.024538727511*sin(0.52*t) + 738.164224347145*cos(0.52*t) + 1105.0
Eksakt/numerisk integralobjekt = 13941.4533272957
Årskostnad numerisk = 13941.453327296
Avrundet til nærmeste krone = 13941

Fasit: Den modellerte årlige energikostnaden er omtrent \(13\,941\) kr.

Vanlig feil: Å multiplisere årsforbruket med én enkelt månedspris eller å integrere f og p hver for seg og deretter multiplisere integralene.
Sensorpunkt: Sensor ser etter produktet \(f(t)p(t)\), korrekt integrasjonsintervall og enhet i kroner.
Del 2 / Oppgave 2aDifferensiallikning og modellering

Oppgave 2a

Oppgave: Ved radioaktiv stråling avtar massen med en vekstfart som til enhver tid er proporsjonal med massen som er igjen. Begrunn at \(M\prime=kM\) beskriver situasjonen, og forklar hvorfor \(k<0\).
Original poengangivelse: Oppgave 2 (8 poeng).
Vis løsning

Hva spør oppgaven om? Formuleringen «vekstfarten er proporsjonal med massen» oversettes direkte til en differensiallikning. Fortegnet bestemmes av at massen avtar.

  1. Tolk vekstfarten
    \(M\prime(t)\) er endringen i masse per time.
  2. Tolk proporsjonaliteten
    At vekstfarten er proporsjonal med massen betyr \(M\prime(t)=kM(t)\) for en konstant k.
  3. Bruk at massen er positiv
    I den fysiske situasjonen er \(M(t)>0\).
  4. Bruk at massen avtar
    Avtagende masse betyr \(M\prime(t)<0\).
  5. Bestem fortegnet til k
    Siden \(M\prime=kM\), \(M>0\) og \(M\prime<0\), må \(k<0\).
  6. Beskriv løsningen
    Differensiallikningen har eksponentialløsninger \(M(t)=Ce^{kt}\), som avtar når \(k<0\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1SolveODE(y'=k*y)
Resultat: \(M(t)=C e^{kt}\)
Tolkning: CAS viser den generelle eksponentialløsningen; negativ k gir eksponentielt henfall.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Function, Eq, diff, dsolve, exp, simplify

t, k, C = symbols('t k C', real=True)
M = Function('M')
ode = Eq(diff(M(t), t), k*M(t))
general_solution = dsolve(ode)
trial_solution = C*exp(k*t)
residual = simplify(diff(trial_solution, t) - k*trial_solution)

print("Differensiallikning =", ode)
print("Generell løsning fra SymPy =", general_solution)
print("Prøveløsning =", trial_solution)
print("ODE-residual =", residual)
print("Når M(t)>0 og k<0, er M'(t)=k*M(t)<0")
print("Dermed beskriver modellen en avtagende masse")

assert residual == 0
Kjørt utskriftDifferensiallikning = Eq(Derivative(M(t), t), k*M(t))
Generell løsning fra SymPy = Eq(M(t), C1*exp(k*t))
Prøveløsning = C*exp(k*t)
ODE-residual = 0
Når M(t)>0 og k<0, er M'(t)=k*M(t)<0
Dermed beskriver modellen en avtagende masse

Fasit: \(M\prime=kM\) uttrykker proporsjonaliteten. Fordi \(M>0\) og massen avtar, må \(k<0\).

Vanlig feil: Å skrive \(M\prime=k\) eller å hevde at k er positiv fordi massen er positiv.
Sensorpunkt: Sensor ser etter oversettelse fra tekst til differensiallikning og en klar fortegnsbegrunnelse.
Del 2 / Oppgave 2bEksponentielt henfall

Oppgave 2b

Oppgave: Ved \(t=0\) var massen 100 mg, og ved \(t=6\) var massen 97 mg. Bestem funksjonsuttrykket \(M(t)\).
Original poengangivelse: Oppgave 2 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter initialverdien inn i den generelle løsningen og bruker målingen etter 6 timer til å bestemme henfallskonstanten.

  1. Start med generell løsning
    \(M(t)=Ce^{kt}\).
  2. Bruk M(0)=100
    \(100=Ce^0\), så \(C=100\).
  3. Bruk M(6)=97
    \(97=100e^{6k}\).
  4. Isoler k
    \(e^{6k}=0.97\), dermed \(k=\ln(0.97)/6\).
  5. Beregn k
    \(k\approx-0.00507653\) per time.
  6. Skriv modellen
    \[M(t)=100e^{\frac{\ln(0.97)}6t}=100\cdot0.97^{t/6}\]
Modellen går gjennom punktene (0,100) og (6,97).
Modellen går gjennom punktene (0,100) og (6,97).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({C=100,C*exp(6*k)=97},{C,k})
Resultat: \(C=100,\ k=\ln(0.97)/6\)
Tolkning: CAS bestemmer begge konstantene fra de to målingene.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, exp, log, solve, Eq, N, simplify

t, C, k = symbols('t C k', real=True)
solution = solve([Eq(C, 100), Eq(C*exp(6*k), 97)], (C,k), dict=True)[0]
model = simplify(solution[C]*exp(solution[k]*t))
alternative = 100*exp(log(0.97)*t/6)

print("Løsning for C og k =", solution)
print("Henfallskonstant k =", solution[k])
print("Numerisk k =", N(solution[k], 14))
print("Modell M(t) =", model)
print("Alternativ form = 100*0.97^(t/6)")
print("Kontroll M(0) =", simplify(model.subs(t,0)))
print("Kontroll M(6) =", N(model.subs(t,6), 14))
print("Symbolsk modellkontroll =", simplify(model-alternative))

assert simplify(model.subs(t,0)-100) == 0
assert abs(float(N(model.subs(t,6)))-97) < 1e-10
Kjørt utskriftLøsning for C og k = {C: 100, k: -log(10)/3 + log(97)/6}
Henfallskonstant k = -log(10)/3 + log(97)/6
Numerisk k = -0.0050765345807848
Modell M(t) = 100/(100/97)**(t/6)
Alternativ form = 100*0.97^(t/6)
Kontroll M(0) = 100
Kontroll M(6) = 97.000000000000
Symbolsk modellkontroll = -100*exp(-0.00507653458078476*t) + 100*97**(t/6)/10**(t/3)

Fasit: \(M(t)=100e^{(\ln0.97/6)t}=100\cdot0.97^{t/6}\) mg.

Vanlig feil: Å bruke 0.97 som vekstfaktor per time i stedet for per 6 timer.
Sensorpunkt: Sensor ser etter riktig initialverdi, korrekt logaritmeløsning for k og en kontroll mot begge datapunktene.
Del 2 / Oppgave 2cLøse eksponentiallikning

Oppgave 2c

Oppgave: Hvor lang tid vil det gå før massen er 2 mg?
Original poengangivelse: Oppgave 2 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter henfallsmodellen lik 2 og løser eksponentiallikningen med logaritmer.

  1. Sett M(t)=2
    \(100e^{kt}=2\), der \(k=\ln(0.97)/6\).
  2. Del på 100
    \(e^{kt}=0.02\).
  3. Ta naturlig logaritme
    \(kt=\ln(0.02)\).
  4. Isoler t
    \[t=\frac{\ln(0.02)}{\ln(0.97)/6}\]
  5. Beregn
    \(t\approx770.61\) timer.
  6. Omregn til døgn
    \(770.61/24\approx32.11\) døgn.
Kurven når 2 mg etter omtrent 771 timer.
Kurven når 2 mg etter omtrent 771 timer.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(100*exp((ln(0.97)/6)*t)=2,t)
Resultat: \(t\approx770.61\)
Tolkning: CAS løser eksponentiallikningen og returnerer tiden i timer.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, log, exp, N, Rational, simplify

t = symbols('t', real=True)
k = log(Rational(97,100))/6
model = 100*exp(k*t)
solution = log(Rational(1,50))/k

print("Henfallskonstant k =", k)
print("Likning 100*exp(k*t) = 2")
print("Eksakt løsning t =", solution)
print("Numerisk tid i timer =", N(solution, 14))
print("Numerisk tid i døgn =", N(solution/24, 12))
print("Kontroll M(t) =", simplify(model.subs(t, solution)))

assert abs(float(N(solution))-770.608954430367) < 1e-8
assert simplify(model.subs(t,solution)-2) == 0
Kjørt utskriftHenfallskonstant k = log(97/100)/6
Likning 100*exp(k*t) = 2
Eksakt løsning t = -6*log(50)/log(97/100)
Numerisk tid i timer = 770.60895443037
Numerisk tid i døgn = 32.1087064346
Kontroll M(t) = 2

Fasit: Det tar omtrent \(770.61\) timer, altså \(32.11\) døgn, før massen er 2 mg.

Vanlig feil: Å bruke vanlig logaritme inkonsistent eller å glemme at k er negativ.
Sensorpunkt: Sensor ser etter korrekt eksponentiallikning, logaritmesteg, enhet og rimelighetskontroll.
Del 2 / Oppgave 2dTerskel for avtagingsfart

Oppgave 2d

Oppgave: Stoffet vurderes som ikke helsefarlig når massen minker med mindre enn 0.2 mg per time. Hvor lang tid går det før denne grensen nås?
Original poengangivelse: Oppgave 2 (8 poeng).
Vis løsning

Hva spør oppgaven om? «Minker med» viser til størrelsen på den negative vekstfarten. Vi løser derfor \(-M\prime(t)=0.2\) og bruker at henfallsfarten deretter fortsetter å avta.

  1. Deriver modellen
    \(M\prime(t)=kM(t)\), der \(k<0\).
  2. Skriv positiv avtagingsfart
    \(-M\prime(t)=-kM(t)\).
  3. Sett terskelen
    \(-kM(t)=0.2\).
  4. Finn terskelmassen
    \(M(t)=0.2/(-k)\approx39.397\) mg.
  5. Løs for tiden
    \[t=\frac{\ln(39.397/100)}{k}\approx183.49\]
  6. Tolk
    Etter omtrent 183.5 timer, eller 7.65 døgn, er avtagingsfarten mindre enn 0.2 mg/time.
Den markerte helsefaregrensen nås lenge før massen har falt til 2 mg.
Den markerte helsefaregrensen nås lenge før massen har falt til 2 mg.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(-Derivative(100*exp((ln(0.97)/6)*t),t)=0.2,t)
Resultat: \(t\approx183.49\)
Tolkning: CAS finner tidspunktet der den positive størrelsen på henfallsfarten er nøyaktig 0.2 mg/time.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, log, exp, diff, N, Rational, simplify

t = symbols('t', real=True)
k = log(Rational(97,100))/6
M = 100*exp(k*t)
decay_rate = -diff(M, t)
threshold_mass = Rational(1,5)/(-k)
solution = log(threshold_mass/100)/k

print("Modell M(t) =", M)
print("Derivert M'(t) =", diff(M,t))
print("Positiv avtagingsfart -M'(t) =", decay_rate)
print("Masse ved terskelen =", N(threshold_mass, 14))
print("Tid ved terskelen =", N(solution, 14), "timer")
print("Tid ved terskelen =", N(solution/24, 12), "døgn")
print("Kontroll -M'(t) =", simplify(decay_rate.subs(t,solution)))

assert abs(float(N(solution))-183.487704907224) < 1e-8
assert simplify(decay_rate.subs(t,solution)-Rational(1,5)) == 0
Kjørt utskriftModell M(t) = 100*exp(t*log(97/100)/6)
Derivert M'(t) = 50*exp(t*log(97/100)/6)*log(97/100)/3
Positiv avtagingsfart -M'(t) = -50*exp(t*log(97/100)/6)*log(97/100)/3
Masse ved terskelen = 39.396954126349
Tid ved terskelen = 183.48770490722 timer
Tid ved terskelen = 7.64532103780 døgn
Kontroll -M'(t) = 1/5

Fasit: Etter omtrent \(183.49\) timer, eller \(7.65\) døgn, vurderes stoffet ikke lenger som helsefarlig etter den oppgitte regelen.

Vanlig feil: Å sette massen M(t) lik 0.2 mg i stedet for å sette avtagingsfarten lik 0.2 mg/time.
Sensorpunkt: Sensor ser etter korrekt tolkning av \(-M\prime\), terskellikning og enhet.
Del 2 / Oppgave 3aAritmetisk sum i praktisk modell

Oppgave 3a

Oppgave: Det innerste papirlaget har diameter 5.00 cm, papiret er 0.015 cm tykt, og diameteren øker med 0.03 cm for hver ny runde. Hvor mange meter papir er igjen når det er 50 runder igjen?
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Omkretsene danner en aritmetisk rekke fordi diameteren øker med et konstant beløp for hver runde.

  1. Finn første omkrets
    \(a_1=\pi\cdot5.00\) cm.
  2. Finn differansen
    Hver diameter øker med 0.03 cm, så omkretsen øker med \(d=0.03\pi\) cm.
  3. Finn siste diameter
    Runde 50 har diameter \(5.00+49\cdot0.03=6.47\) cm.
  4. Bruk sumformelen
    \(L=\frac{50}{2}\pi(5.00+6.47)\) cm.
  5. Beregn i centimeter
    \(L\approx900.852\) cm.
  6. Konverter til meter
    \[L\approx9.01\text{ m}\]
Papirlengden vokser ikke lineært med diameteren fordi antall runder også øker.
Papirlengden vokser ikke lineært med diameteren fordi antall runder også øker.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Sum(pi*(5+0.03*(n-1)),n,1,50)/100
Resultat: \(9.0085\text{ m}\)
Tolkning: CAS summerer omkretsen til hver av de 50 gjenværende rundene og konverterer centimeter til meter.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, pi, summation, N, simplify

n = symbols('n', integer=True, positive=True)
diameter_n = 5 + 0.03*(n-1)
circumference_n = pi*diameter_n
length_cm = summation(circumference_n, (n,1,50))
length_m = length_cm/100
last_diameter = diameter_n.subs(n,50)
formula_check = 50*pi*(5+last_diameter)/2/100

print("Diameter i runde n =", diameter_n)
print("Diameter i runde 50 =", last_diameter)
print("Sum av 50 omkretser i cm =", N(length_cm, 14))
print("Papirlengde i meter =", N(length_m, 14))
print("Kontroll med sumformelen =", N(formula_check, 14))
print("Forskjell =", N(length_m-formula_check, 5))

assert abs(float(N(length_m))-9.00851693416873) < 1e-10
Kjørt utskriftDiameter i runde n = 0.03*n + 4.97
Diameter i runde 50 = 6.47000000000000
Sum av 50 omkretser i cm = 900.85169341687
Papirlengde i meter = 9.0085169341687
Kontroll med sumformelen = 9.0085169341687
Forskjell = 0

Fasit: Det er omtrent \(9.01\) meter papir igjen.

Vanlig feil: Å bruke 50 ganger den samme omkretsen eller å glemme omregningen fra centimeter til meter.
Sensorpunkt: Sensor ser etter aritmetisk rekke, korrekt siste diameter, sum og enhet.
Del 2 / Oppgave 3bAntall runder og aritmetisk rekke

Oppgave 3b

Oppgave: Hvor mange meter papir er det på tørkerullen når diameteren D er 20.00 cm?
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi finner først hvor mange rundeomkretser som inngår fra diameter 5.00 cm til 20.00 cm, og summerer den aritmetiske rekken.

  1. Sett opp diameterformelen
    \(d_n=5.00+0.03(n-1)\).
  2. Finn antall runder
    \(20=5+0.03(n-1)\), som gir \(n=501\).
  3. Finn første og siste omkrets
    \(a_1=5\pi\) cm og \(a_{501}=20\pi\) cm.
  4. Bruk sumformelen
    \(L=\frac{501}{2}(5\pi+20\pi)\) cm.
  5. Beregn
    \(L\approx19674.224\) cm.
  6. Konverter
    \[L\approx196.74\text{ m}\]
Punktet ved D = 20 cm svarer til omtrent 196.74 meter papir.
Punktet ved D = 20 cm svarer til omtrent 196.74 meter papir.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(5+0.03*(n-1)=20,n)
Resultat: \(n=501\)
Tolkning: Når n er bestemt, summeres 501 omkretser fra 5π til 20π centimeter.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, pi, summation, N

n, k = symbols('n k', integer=True, positive=True)
number_of_rounds = solve(Eq(5 + 0.03*(n-1), 20), n)[0]
diameter_k = 5 + 0.03*(k-1)
length_cm = summation(pi*diameter_k, (k,1,number_of_rounds))
length_m = length_cm/100
sum_formula = number_of_rounds*pi*(5+20)/2/100

print("Antall runder n =", number_of_rounds)
print("Første diameter = 5.00 cm")
print("Siste diameter = 20.00 cm")
print("Lengde fra direkte sum i cm =", N(length_cm, 14))
print("Lengde i meter =", N(length_m, 14))
print("Kontroll med sumformelen =", N(sum_formula, 14))
print("Forskjell =", N(length_m-sum_formula, 5))

assert abs(float(number_of_rounds)-501) < 1e-12
assert abs(float(N(length_m))-196.742239931061) < 1e-9
Kjørt utskriftAntall runder n = 501.000000000000
Første diameter = 5.00 cm
Siste diameter = 20.00 cm
Lengde fra direkte sum i cm = 19674.223993106
Lengde i meter = 196.74223993106
Kontroll med sumformelen = 196.74223993106
Forskjell = 0

Fasit: Rullen inneholder omtrent \(196.74\) meter papir når diameteren er 20.00 cm.

Vanlig feil: Å bruke 500 runder uten å ta med den innerste runden med diameter 5.00 cm.
Sensorpunkt: Sensor ser etter korrekt indeksmodell, 501 ledd, sumformel og meteromregning.
Del 2 / Oppgave 3cOmvendt modell og andregradslikning

Oppgave 3c

Oppgave: Hva er diameteren D når det er 500 meter papir igjen på tørkerullen?
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter sumformelen for n runder lik 50 000 cm, løser andregradslikningen for n og beregner deretter den tilhørende diameteren.

  1. Skriv summen for n runder
    \[L_n=\frac{n\pi}{2}\left(2\cdot5+0.03(n-1)\right)\text{ cm}\]
  2. Sett lengden lik 500 m
    \(L_n=50000\) cm.
  3. Løs likningen digitalt
    Den positive løsningen er \(n\approx877.215\).
  4. Finn diameteren
    \(D=5+0.03(n-1)\).
  5. Beregn
    \(D\approx31.2864\) cm.
  6. Vurder heltallsrunder
    877 hele runder gir omtrent 499.79 m og diameter 31.28 cm; den kontinuerlige modellen gir \(D\approx31.29\) cm.
500 meter svarer til en diameter på omtrent 31.29 cm.
500 meter svarer til en diameter på omtrent 31.29 cm.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve(pi*n/2*(10+0.03*(n-1))=50000,n)
Resultat: \(n\approx877.215\)
Tolkning: Den positive løsningen brukes i diameterformelen; den negative algebraiske løsningen forkastes.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, pi, N

n = symbols('n', real=True)
length_cm = pi*n/2*(10 + 0.03*(n-1))
solutions = solve(Eq(length_cm, 50000), n)
positive = [value for value in solutions if value > 0][0]
diameter = 5 + 0.03*(positive-1)

def length_for_rounds(number):
    return pi*number/2*(10 + 0.03*(number-1))/100

print("Likning for 500 meter =", Eq(length_cm, 50000))
print("Begge algebraiske løsninger for n =", solutions)
print("Positiv løsning n =", N(positive, 14))
print("Diameter fra kontinuerlig modell =", N(diameter, 14), "cm")
print("Lengde ved 877 runder =", N(length_for_rounds(877), 12), "m")
print("Diameter ved 877 runder =", 5+0.03*(877-1), "cm")
print("Lengde ved 878 runder =", N(length_for_rounds(878), 12), "m")

assert abs(float(N(diameter))-31.2864358065468) < 1e-9
Kjørt utskriftLikning for 500 meter = Eq(pi*n*(0.03*n + 9.97)/2, 50000)
Begge algebraiske løsninger for n = [-1209.54786021823, 877.214526884894]
Positiv løsning n = 877.21452688489
Diameter fra kontinuerlig modell = 31.286435806547 cm
Lengde ved 877 runder = 499.789063756 m
Diameter ved 877 runder = 31.279999999999998 cm
Lengde ved 878 runder = 500.772696416 m

Fasit: Diameteren er omtrent \(31.29\) cm i den kontinuerlige modellen.

Vanlig feil: Å velge den negative løsningen for antall runder eller å bruke 500 som centimeter i stedet for 50 000 cm.
Sensorpunkt: Sensor ser etter sumlikning, forkasting av negativ løsning, diameterberegning og fornuftig avrunding.
Del 2 / Oppgave 4Avstand fra punkt til plan

Oppgave 4

Oppgave: Punktene er \(A(-1,-1,2)\), \(B(3,4,-1)\), \(C(5,3,1)\) og \(D(5,6,4)\). Planet \(\alpha\) går gjennom A, B og C, og linjen \(\ell\) går gjennom A og D. En kuleflate har radius 8 og sentrum S på \(\ell\), og tangerer \(\alpha\). Bestem de mulige koordinatene til S.
Original poengangivelse: Oppgave 4 (2 poeng).
Vis løsning

Hva spør oppgaven om? Sentrum må ligge på linjen, og avstanden fra sentrum til tangentplanet må være lik radiusen 8. Absoluttverdien i avstandsformelen gir to mulige sentre.

  1. Finn en normalvektor til planet
    \(\overrightarrow{AB}=[4,5,-3]\), \(\overrightarrow{AC}=[6,4,-1]\), og kryssproduktet kan forenkles til \(\mathbf n=[1,-2,-2]\).
  2. Finn planlikningen
    Gjennom A får vi \(x-2y-2z+3=0\).
  3. Parameteriser linjen
    \(\ell:\ S(t)=A+t(D-A)=(-1,-1,2)+t(6,7,2)\).
  4. Sett inn i planuttrykket
    \(x(t)-2y(t)-2z(t)+3=-12t\).
  5. Bruk avstandsformelen
    \(\frac{|-12t|}{\sqrt{1^2+(-2)^2+(-2)^2}}=\frac{12|t|}{3}=4|t|=8\), så \(t=\pm2\).
  6. Finn sentrene
    \[S(-2)=(-13,-15,-2),\qquad S(2)=(11,13,6)\]
Linjen skjærer de to parallelle avstandsflatene på hver side av planet, og gir to mulige sentre.
Linjen skjærer de to parallelle avstandsflatene på hver side av planet, og gir to mulige sentre.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(abs((-1+6*t)-2*(-1+7*t)-2*(2+2*t)+3)/3=8,t)
Resultat: \(t=-2\) eller \(t=2\)
Tolkning: De to parameterverdiene representerer de to sidene av planet i avstand 8 langs linjen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, symbols, Abs, solve, Eq, simplify

A = Matrix([-1,-1,2])
B = Matrix([3,4,-1])
C = Matrix([5,3,1])
D = Matrix([5,6,4])
AB = B-A
AC = C-A
normal_raw = AB.cross(AC)
normal = Matrix([1,-2,-2])
t = symbols('t', real=True)
S = A + t*(D-A)
plane_value = simplify(S[0]-2*S[1]-2*S[2]+3)
distance = Abs(plane_value)/3
parameters = solve(Eq(distance,8), t)
centers = [S.subs(t,value) for value in parameters]

print("AB =", AB.T)
print("AC =", AC.T)
print("Kryssprodukt AB x AC =", normal_raw.T)
print("Forenklet normalvektor =", normal.T)
print("Plan: x - 2y - 2z + 3 = 0")
print("Linje S(t) =", S.T)
print("Planuttrykk langs linjen =", plane_value)
print("Avstand til planet =", distance)
print("Parameterverdier =", parameters)
print("Mulige sentre =", [center.T for center in centers])

assert normal_raw == Matrix([7,-14,-14])
assert parameters == [-2,2]
assert centers == [Matrix([-13,-15,-2]), Matrix([11,13,6])]
Kjørt utskriftAB = Matrix([[4, 5, -3]])
AC = Matrix([[6, 4, -1]])
Kryssprodukt AB x AC = Matrix([[7, -14, -14]])
Forenklet normalvektor = Matrix([[1, -2, -2]])
Plan: x - 2y - 2z + 3 = 0
Linje S(t) = Matrix([[6*t - 1, 7*t - 1, 2*t + 2]])
Planuttrykk langs linjen = -12*t
Avstand til planet = 4*Abs(t)
Parameterverdier = [-2, 2]
Mulige sentre = [Matrix([[-13, -15, -2]]), Matrix([[11, 13, 6]])]

Fasit: De mulige sentrene er \(S_1=(-13,-15,-2)\) og \(S_2=(11,13,6)\).

Vanlig feil: Å sette avstanden lik 8 uten absoluttverdi og dermed bare få ett sentrum, eller å bruke en feil planlikning.
Sensorpunkt: Sensor ser etter korrekt plan, linjeparameterisering, avstandsformel og begge løsninger.