R2 eksamenVår 2021

Matematikk R2 eksamen – vår 2021

ifingo
Norsk (Bokmål)

ifingo · Matematikk R2

Matematikk R2 - eksamen vår 2021

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 / Oppgave 1aKjerneregel

Oppgave 1a

Oppgave: Deriver funksjonen \(f(x)=\cos(2x+1)\).
Original poengangivelse: Oppgave 1 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi skal derivere en sammensatt cosinusfunksjon. Kjernen er \(2x+1\), og den deriverte av cosinus gir et minusfortegn.

  1. Finn kjernen
    Sett \(u=2x+1\). Da er \(u\prime=2\).
  2. Deriver den ytre funksjonen
    For \(\cos u\) er den deriverte \(-\sin u\).
  3. Bruk kjerneregelen
    \[f\prime(x)=-\sin(2x+1)\cdot2\]
  4. Ordne konstantfaktoren
    \[f\prime(x)=-2\sin(2x+1)\]
  5. Kontroller fortegnet
    Cosinus avtar når argumentet passerer 0, så minusfortegnet er nødvendig.
  6. Kontroller et punkt
    Ved \(x=-\tfrac12\) er argumentet 0 og \(f\prime(-\tfrac12)=0\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Derivative(cos(2x+1),x)
Resultat: \(-2\sin(2x+1)\)
Tolkning: CAS bekrefter både minusfortegnet og faktoren 2 fra kjerneregelen.

Digital kontroll i Python (SymPy)

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

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

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

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

Fasit: \(f\prime(x)=-2\sin(2x+1)\).

Vanlig feil: Å glemme minusfortegnet fra derivasjonen av cosinus eller faktoren 2 fra kjernen.
Sensorpunkt: Sensor ser etter en tydelig anvendelse av kjerneregelen og korrekt fortegn.
Del 1 / Oppgave 1bProduktregel og kjerneregel

Oppgave 1b

Oppgave: Deriver funksjonen \(g(x)=\cos(2x)\sin x\).
Original poengangivelse: Oppgave 1 (4 poeng).
Vis løsning

Hva spør oppgaven om? Funksjonen er et produkt. Den første faktoren krever kjerneregelen, og den andre er en vanlig sinusfunksjon.

  1. Velg faktorene
    Sett \(u=\cos(2x)\) og \(v=\sin x\).
  2. Deriver første faktor
    \(u\prime=-2\sin(2x)\).
  3. Deriver andre faktor
    \(v\prime=\cos x\).
  4. Bruk produktregelen
    \(g\prime=u\prime v+uv\prime\).
  5. Sett inn
    \[g\prime(x)=-2\sin(2x)\sin x+\cos(2x)\cos x\]
  6. Kontroller strukturen
    Begge produktleddene må være med; bare det første får faktoren 2.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Derivative(cos(2x)*sin(x),x)
Resultat: \(-2\sin(2x)\sin x+\cos(2x)\cos x\)
Tolkning: CAS viser de to leddene fra produktregelen og faktoren 2 fra kjerneregelen.

Digital kontroll i Python (SymPy)

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

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

print("Funksjon g(x) =", g)
print("Derivert fra SymPy =", derivative)
print("Forventet form =", expected)
print("Symbolsk kontroll =", simplify(derivative - expected))
print("Trigonometrisk forenkling =", trigsimp(derivative))
print("Numerisk g'(pi/4) =", N(derivative.subs(x, 3.141592653589793/4), 12))

assert simplify(derivative - expected) == 0
Kjørt utskriftFunksjon g(x) = sin(x)*cos(2*x)
Derivert fra SymPy = -2*sin(x)*sin(2*x) + cos(x)*cos(2*x)
Forventet form = -2*sin(x)*sin(2*x) + cos(x)*cos(2*x)
Symbolsk kontroll = 0
Trigonometrisk forenkling = -cos(x)/2 + 3*cos(3*x)/2
Numerisk g'(pi/4) = -1.41421356237

Fasit: \(g\prime(x)=-2\sin(2x)\sin x+\cos(2x)\cos x\).

Vanlig feil: Å multiplisere de deriverte i stedet for å bruke produktregelen, eller å glemme faktoren 2.
Sensorpunkt: Sensor ser etter både produktregelen og kjerneregelen.
Del 1 / Oppgave 2aUbestemt integral

Oppgave 2a

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

Hva spør oppgaven om? Vi integrerer ledd for ledd. Det siste leddet er en konstant faktor multiplisert med \(1/x\).

  1. Del opp integralet
    Bruk linearitet på de tre leddene.
  2. Integrer første ledd
    \(\int x^2dx=x^3/3\).
  3. Integrer andre ledd
    \(\int2x\,dx=x^2\).
  4. Integrer logaritmeleddet
    \(\int\frac1{3x}dx=\frac13\ln|x|\).
  5. Samle stamfunksjonen
    \[F(x)=\frac{x^3}{3}+x^2+\frac13\ln|x|\]
  6. Legg til konstant
    Den generelle stamfunksjonen er \(F(x)+C\), på intervaller som ikke krysser \(x=0\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(x^2+2x+1/(3x),x)
Resultat: \(x^3/3+x^2+\ln|x|/3\)
Tolkning: CAS gir samme stamfunksjon; \(+C\) må legges til i det endelige svaret.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True, nonzero=True)
integrand = x**2 + 2*x + 1/(3*x)
F = x**3/3 + x**2 + log(Abs(x))/3
back = diff(F, x)

print("Integrand =", integrand)
print("Stamfunksjon =", F)
print("SymPy-integral =", integrate(integrand, x))
print("Derivert tilbake =", back)
print("Kontroll =", simplify(back - integrand))
print("Definisjonskrav: x != 0")

assert simplify(back - integrand) == 0
Kjørt utskriftIntegrand = x**2 + 2*x + 1/(3*x)
Stamfunksjon = x**3/3 + x**2 + log(Abs(x))/3
SymPy-integral = x**3/3 + x**2 + log(x)/3
Derivert tilbake = x**2 + 2*x + sign(x)/(3*Abs(x))
Kontroll = 0
Definisjonskrav: x != 0

Fasit: \(\displaystyle\frac{x^3}{3}+x^2+\frac13\ln|x|+C\), for \(x\ne0\).

Vanlig feil: Å integrere \(1/(3x)\) som en potens eller å glemme absoluttverdien og integrasjonskonstanten.
Sensorpunkt: Sensor ser etter korrekt leddvis integrasjon, \(\ln|x|\) og \(+C\).
Del 1 / Oppgave 2bDelvis integrasjon

Oppgave 2b

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

Hva spør oppgaven om? Produktet av \(x\) og \(\ln x\) passer til delvis integrasjon. Logaritmen bør velges som funksjonen som deriveres.

  1. Velg u og dv
    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. Sett inn
    \[\int x\ln x\,dx=\frac{x^2}{2}\ln x-\frac12\int x\,dx\]
  5. Integrer restleddet
    \(\frac12\int xdx=x^2/4\).
  6. Skriv svaret
    \[\int x\ln x\,dx=\frac{x^2}{2}\ln x-\frac{x^2}{4}+C,\quad x>0\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(x*ln(x),x)
Resultat: \(x^2\ln x/2-x^2/4\)
Tolkning: CAS bekrefter stamfunksjonen på definisjonsområdet \(x>0\).

Digital kontroll i Python (SymPy)

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

x = symbols('x', positive=True)
integrand = x*log(x)
F = x**2*log(x)/2 - x**2/4
sympy_F = integrate(integrand, x)

print("Integrand =", integrand)
print("Stamfunksjon fra delvis integrasjon =", F)
print("Stamfunksjon fra SymPy =", sympy_F)
print("Derivert tilbake =", factor(diff(F, x)))
print("Kontroll mot integranden =", simplify(diff(F, x) - integrand))
print("Kontroll mellom formene =", simplify(F - sympy_F))

assert simplify(diff(F, x) - integrand) == 0
assert simplify(F - sympy_F) == 0
Kjørt utskriftIntegrand = x*log(x)
Stamfunksjon fra delvis integrasjon = x**2*log(x)/2 - x**2/4
Stamfunksjon fra SymPy = x**2*log(x)/2 - x**2/4
Derivert tilbake = x*log(x)
Kontroll mot integranden = 0
Kontroll mellom formene = 0

Fasit: \(\displaystyle\frac{x^2}{2}\ln x-\frac{x^2}{4}+C\), for \(x>0\).

Vanlig feil: Å velge \(u=x\), som gjør integralet vanskeligere, eller å miste faktoren \(1/2\).
Sensorpunkt: Sensor ser etter et hensiktsmessig valg i delvis integrasjon og korrekt domene.
Del 1 / Oppgave 2cSubstitusjon og bestemt integral

Oppgave 2c

Oppgave: Bestem integralet \(\displaystyle\int_0^{\pi/2}(\sin x+1)^2\cos x\,dx\).
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Uttrykket \(\cos x\,dx\) er den deriverte av \(\sin x\), så en direkte substitusjon gjør integralet til et enkelt polynomintegral.

  1. Velg substitusjon
    Sett \(u=\sin x+1\).
  2. Finn differensialet
    \(du=\cos x\,dx\).
  3. Endre grensene
    Når \(x=0\), er \(u=1\). Når \(x=\pi/2\), er \(u=2\).
  4. Skriv om integralet
    \[\int_0^{\pi/2}(\sin x+1)^2\cos x\,dx=\int_1^2u^2du\]
  5. Integrer
    \[\left[\frac{u^3}{3}\right]_1^2=\frac83-\frac13\]
  6. Forenkle
    \[\frac83-\frac13=\frac73\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral((sin(x)+1)^2*cos(x),x,0,pi/2)
Resultat: \(7/3\)
Tolkning: CAS bekrefter den eksakte verdien av det bestemte integralet.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
integrand = (sin(x) + 1)**2*cos(x)
value = integrate(integrand, (x, 0, pi/2))
expected = Rational(7, 3)

print("Integrand =", integrand)
print("Nedre u-grense =", (sin(x)+1).subs(x, 0))
print("Øvre u-grense =", (sin(x)+1).subs(x, pi/2))
print("Bestemt integral =", value)
print("Forventet verdi =", expected)
print("Desimalverdi =", N(value, 12))
print("Kontroll =", simplify(value - expected))

assert simplify(value - expected) == 0
Kjørt utskriftIntegrand = (sin(x) + 1)**2*cos(x)
Nedre u-grense = 1
Øvre u-grense = 2
Bestemt integral = 7/3
Forventet verdi = 7/3
Desimalverdi = 2.33333333333
Kontroll = 0

Fasit: \(\displaystyle\frac73\).

Vanlig feil: Å beholde de gamle grensene etter substitusjonen eller å glemme at \(\sin(\pi/2)=1\).
Sensorpunkt: Sensor ser etter substitusjon, korrekt grensebytte og eksakt svar.
Del 1 / Oppgave 3aAreal mellom graf og akse

Oppgave 3a

Oppgave: Funksjonen er \(f(x)=x^2-x\). Et flatestykke \(F\) er avgrenset av grafen til \(f\) og x-aksen. Bestem arealet av \(F\).
Original poengangivelse: Oppgave 3 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi må først finne nullpunktene og deretter integrere den positive avstanden mellom grafen og x-aksen.

  1. Finn nullpunktene
    \(x^2-x=x(x-1)=0\), så grensene er \(x=0\) og \(x=1\).
  2. Bestem fortegnet
    På intervallet \((0,1)\) er \(f(x)<0\).
  3. Skriv arealintegralet
    \[A=\int_0^1|f(x)|dx=\int_0^1(x-x^2)dx\]
  4. Finn en stamfunksjon
    \(x^2/2-x^3/3\).
  5. Sett inn grensene
    \[A=\left[\frac{x^2}{2}-\frac{x^3}{3}\right]_0^1\]
  6. Forenkle
    \[A=\frac12-\frac13=\frac16\]
Grafen ligger under x-aksen mellom 0 og 1, så arealet beregnes med minusfortegn.
Grafen ligger under x-aksen mellom 0 og 1, så arealet beregnes med minusfortegn.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(x^2-x=0,x)
Resultat: \(x=0\) og \(x=1\)
Tolkning: Nullpunktene gir integrasjonsgrensene.
2Integral(-(x^2-x),x,0,1)
Resultat: \(1/6\)
Tolkning: Minusfortegnet gjør integralet lik det geometriske arealet.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
f = x**2 - x
zeros = solve(f, x)
area = integrate(-f, (x, 0, 1))
expected = Rational(1, 6)

print("Funksjon f(x) =", f)
print("Faktorisert =", factor(f))
print("Nullpunkter =", zeros)
print("Arealintegrand på [0,1] =", -f)
print("Areal =", area)
print("Kontroll =", simplify(area - expected))

assert zeros == [0, 1]
assert simplify(area - expected) == 0
Kjørt utskriftFunksjon f(x) = x**2 - x
Faktorisert = x*(x - 1)
Nullpunkter = [0, 1]
Arealintegrand på [0,1] = -x**2 + x
Areal = 1/6
Kontroll = 0

Fasit: Arealet er \(\displaystyle\frac16\).

Vanlig feil: Å bruke integralet av \(f\) direkte og dermed få et negativt fortegnet areal.
Sensorpunkt: Sensor ser etter nullpunkter, fortegnsvurdering og korrekt arealintegral.
Del 1 / Oppgave 3bOmdreiningsvolum

Oppgave 3b

Oppgave: Flatestykket \(F\) dreies 360° om x-aksen. Bestem volumet \(V\) av omdreiningslegemet.
Original poengangivelse: Oppgave 3 (4 poeng).
Vis løsning

Hva spør oppgaven om? Når området mellom grafen og x-aksen roteres om x-aksen, bruker vi skivemetoden med radius \(|f(x)|\). Kvadreringen fjerner fortegnet.

  1. Bruk skiveformelen
    \[V=\pi\int_a^b(f(x))^2dx\]
  2. Sett inn grenser og funksjon
    \[V=\pi\int_0^1(x^2-x)^2dx\]
  3. Utvid kvadratet
    \((x^2-x)^2=x^4-2x^3+x^2\).
  4. Integrer leddvis
    \[V=\pi\left[\frac{x^5}{5}-\frac{x^4}{2}+\frac{x^3}{3}\right]_0^1\]
  5. Samle brøkene
    \(1/5-1/2+1/3=(6-15+10)/30=1/30\).
  6. Skriv volumet
    \[V=\frac{\pi}{30}\]
Det markerte området roteres om x-aksen; radiusen i hver skive er |f(x)|.
Det markerte området roteres om x-aksen; radiusen i hver skive er |f(x)|.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1pi*Integral((x^2-x)^2,x,0,1)
Resultat: \(\pi/30\)
Tolkning: CAS beregner volumet med skivemetoden og gir eksakt verdi.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
f = x**2 - x
square = expand(f**2)
volume = pi*integrate(f**2, (x, 0, 1))
expected = pi/30

print("Radiusfunksjon i andre =", square)
print("Integral uten pi =", integrate(f**2, (x, 0, 1)))
print("Volum =", volume)
print("Desimalverdi =", N(volume, 12))
print("Kontroll =", simplify(volume - expected))

assert simplify(volume - expected) == 0
Kjørt utskriftRadiusfunksjon i andre = x**4 - 2*x**3 + x**2
Integral uten pi = 1/30
Volum = pi/30
Desimalverdi = 0.104719755120
Kontroll = 0

Fasit: \(\displaystyle V=\frac{\pi}{30}\).

Vanlig feil: Å bruke arealintegralet fra del a uten å kvadrere radiusen, eller å glemme faktoren \(\pi\).
Sensorpunkt: Sensor ser etter skiveformelen, riktige grenser og korrekt eksakt volum.
Del 1 / Oppgave 4aTrigonometrisk likning

Oppgave 4a

Oppgave: Løs likningen \(2\sin(2x-\pi)=\sqrt{3}\), \(x\in[0,2\pi]\).
Original poengangivelse: Oppgave 4 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi reduserer først til en sinuslikning med standardverdien \(\sqrt{3}/2\), finner alle vinkler og avgrenser til det oppgitte intervallet.

  1. Del på 2
    \[\sin(2x-\pi)=\frac{\sqrt{3}}{2}\]
  2. Bruk standardvinkler
    \(\sin\theta=\sqrt{3}/2\) når \(\theta=\pi/3+2k\pi\) eller \(\theta=2\pi/3+2k\pi\).
  3. Sett \( heta=2x-\pi\)
    Vi løser de to familiene hver for seg.
  4. Første familie
    \(2x-\pi=\pi/3+2k\pi\Rightarrow x=2\pi/3+k\pi\).
  5. Andre familie
    \(2x-\pi=2\pi/3+2k\pi\Rightarrow x=5\pi/6+k\pi\).
  6. Avgrens intervallet
    \[x\in\left\{\frac{2\pi}{3},\frac{5\pi}{6},\frac{5\pi}{3},\frac{11\pi}{6}\right\}\]
Skjæringspunktene med y = √3 viser de fire løsningene i del a.
Skjæringspunktene med y = √3 viser de fire løsningene i del a.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(2*sin(2x-pi)=sqrt(3),x,0<=x<=2*pi)
Resultat: \(2\pi/3,\ 5\pi/6,\ 5\pi/3,\ 11\pi/6\)
Tolkning: De fire løsningene ligger i det lukkede intervallet og oppfyller original-likningen.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
solutions = [2*pi/3, 5*pi/6, 5*pi/3, 11*pi/6]
residuals = [simplify(2*sin(2*s-pi)-sqrt(3)) for s in solutions]

print("Likning: 2*sin(2*x-pi) = sqrt(3)")
print("Løsninger i [0, 2*pi] =", solutions)
print("Residualer i original-likningen =", residuals)
print("Antall løsninger =", len(solutions))
print("Alle ligger i intervallet =", all(0 <= s <= 2*pi for s in solutions))

assert residuals == [0, 0, 0, 0]
assert all(0 <= s <= 2*pi for s in solutions)
Kjørt utskriftLikning: 2*sin(2*x-pi) = sqrt(3)
Løsninger i [0, 2*pi] = [2*pi/3, 5*pi/6, 5*pi/3, 11*pi/6]
Residualer i original-likningen = [0, 0, 0, 0]
Antall løsninger = 4
Alle ligger i intervallet = True

Fasit: \(x=\frac{2\pi}{3},\ \frac{5\pi}{6},\ \frac{5\pi}{3},\ \frac{11\pi}{6}\).

Vanlig feil: Å glemme den andre sinusfamilien eller å glemme at argumentet er \(2x-\pi\).
Sensorpunkt: Sensor ser etter begge løsningsfamiliene og korrekt avgrensing til intervallet.
Del 1 / Oppgave 4bAndregradslikning i cosinus

Oppgave 4b

Oppgave: Løs likningen \(2\cos^2x+\cos x-1=0\), \(x\in[0,2\pi]\).
Original poengangivelse: Oppgave 4 (4 poeng).
Vis løsning

Hva spør oppgaven om? Likningen er en andregradslikning i \(\cos x\). Vi faktoriserer først og løser deretter to standardlikninger.

  1. Sett en hjelpevariabel
    La \(u=\cos x\). Da får vi \(2u^2+u-1=0\).
  2. Faktoriser
    \[(2u-1)(u+1)=0\]
  3. Finn cosinusverdiene
    \(u=1/2\) eller \(u=-1\).
  4. Løs \(\cos x=1/2\)
    I intervallet får vi \(x=\pi/3\) og \(x=5\pi/3\).
  5. Løs \(\cos x=-1\)
    I intervallet får vi \(x=\pi\).
  6. Samle løsningene
    \[x\in\left\{\frac\pi3,\pi,\frac{5\pi}{3}\right\}\]
Nullpunktene til 2cos²x + cos x − 1 viser løsningene i del b.
Nullpunktene til 2cos²x + cos x − 1 viser løsningene i del b.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(2*u^2+u-1=0,u)
Resultat: \(u=1/2\) eller \(u=-1\)
Tolkning: CAS løser andregradslikningen i hjelpevariabelen.
2Solve(2*cos(x)^2+cos(x)-1=0,x,0<=x<=2*pi)
Resultat: \(\pi/3,\pi,5\pi/3\)
Tolkning: Løsningene er kontrollert i det oppgitte intervallet.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, cos, pi, factor, solve, simplify, Rational

u, x = symbols('u x', real=True)
polynomial = 2*u**2 + u - 1
u_solutions = solve(polynomial, u)
x_solutions = [pi/3, pi, 5*pi/3]
residuals = [simplify(2*cos(s)**2 + cos(s) - 1) for s in x_solutions]

print("Polynom i u =", polynomial)
print("Faktorisert =", factor(polynomial))
print("Løsninger for u = cos(x) =", u_solutions)
print("Løsninger for x i [0, 2*pi] =", x_solutions)
print("Residualer i original-likningen =", residuals)

assert u_solutions == [-1, Rational(1,2)]
assert residuals == [0, 0, 0]
Kjørt utskriftPolynom i u = 2*u**2 + u - 1
Faktorisert = (u + 1)*(2*u - 1)
Løsninger for u = cos(x) = [-1, 1/2]
Løsninger for x i [0, 2*pi] = [pi/3, pi, 5*pi/3]
Residualer i original-likningen = [0, 0, 0]

Fasit: \(x=\frac\pi3,\ \pi,\ \frac{5\pi}{3}\).

Vanlig feil: Å forkaste \(\cos x=-1\), eller å bare ta én vinkel for \(\cos x=1/2\).
Sensorpunkt: Sensor ser etter faktorisering i \(\cos x\) og alle løsninger i intervallet.
Del 1 / Oppgave 5Aritmetisk rekke fra sumformel

Oppgave 5

Oppgave: En aritmetisk rekke har sum \(s_n=3n^2+4n\). Bruk dette til å bestemme \(a_3\).
Original poengangivelse: Oppgave 5 (2 poeng).
Vis løsning

Hva spør oppgaven om? Når sumformelen er kjent, finner vi et enkelt ledd ved differansen \(a_n=s_n-s_{n-1}\).

  1. Bruk sammenhengen
    \(a_3=s_3-s_2\).
  2. Beregn \(s_3\)
    \(s_3=3\cdot3^2+4\cdot3=27+12=39\).
  3. Beregn \(s_2\)
    \(s_2=3\cdot2^2+4\cdot2=12+8=20\).
  4. Trekk fra
    \[a_3=39-20\]
  5. Finn verdien
    \[a_3=19\]
  6. Rimelighetskontroll
    Generelt er \(a_n=s_n-s_{n-1}=6n+1\), og dette gir \(a_3=19\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Simplify((3*3^2+4*3)-(3*2^2+4*2))
Resultat: \(19\)
Tolkning: CAS beregner differansen mellom de to påfølgende delsummene.

Digital kontroll i Python (SymPy)

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

n = symbols('n', integer=True, positive=True)
s = 3*n**2 + 4*n
a_n = simplify(s - s.subs(n, n-1))
a3 = a_n.subs(n, 3)

print("Sumformel s_n =", s)
print("Generelt ledd a_n = s_n - s_(n-1) =", expand(a_n))
print("s_3 =", s.subs(n, 3))
print("s_2 =", s.subs(n, 2))
print("a_3 =", a3)
print("Kontroll =", simplify(a3 - 19))

assert a3 == 19
Kjørt utskriftSumformel s_n = 3*n**2 + 4*n
Generelt ledd a_n = s_n - s_(n-1) = 6*n + 1
s_3 = 39
s_2 = 20
a_3 = 19
Kontroll = 0

Fasit: \(a_3=19\).

Vanlig feil: Å sette \(n=3\) direkte i sumformelen og svare \(s_3=39\) i stedet for å finne det tredje leddet.
Sensorpunkt: Sensor ser etter sammenhengen \(a_n=s_n-s_{n-1}\).
Del 1 / Oppgave 6Uendelig geometrisk rekke

Oppgave 6

Oppgave: En uendelig geometrisk rekke konvergerer mot 6. Summen av de tre første leddene er \(38/9\). Bestem \(b_4\).
Original poengangivelse: Oppgave 6 (2 poeng).
Vis løsning

Hva spør oppgaven om? Vi bruker både sumformelen for hele rekken og summen av de tre første leddene for å bestemme kvotienten og det fjerde leddet.

  1. Skriv totalsummen
    \(S_\infty=b_1/(1-k)=6\).
  2. Skriv summen av tre ledd
    \(S_3=b_1(1-k^3)/(1-k)=6(1-k^3)\).
  3. Sett inn opplysningen
    \[6(1-k^3)=\frac{38}{9}\]
  4. Løs for \(k^3\)
    \(1-k^3=19/27\), så \(k^3=8/27\) og \(k=2/3\).
  5. Finn første ledd
    \(b_1=6(1-k)=6/3=2\).
  6. Finn fjerde ledd
    \[b_4=b_1k^3=2\cdot\frac8{27}=\frac{16}{27}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(6*(1-k^3)=38/9,k)
Resultat: \(k=2/3\)
Tolkning: Den reelle kvotienten har absoluttverdi mindre enn 1 og gir konvergens.
22*(2/3)^3
Resultat: \(16/27\)
Tolkning: Det fjerde leddet er første ledd multiplisert med kvotienten tre ganger.

Digital kontroll i Python (SymPy)

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

k = symbols('k', real=True)
equation = Eq(6*(1-k**3), Rational(38, 9))
k_solutions = solve(equation, k)
k_value = Rational(2, 3)
b1 = 6*(1-k_value)
b4 = b1*k_value**3

print("Likning for kvotienten =", equation)
print("Reelle løsninger for k =", k_solutions)
print("Valgt konvergent kvotient k =", k_value)
print("Første ledd b_1 =", b1)
print("Fjerde ledd b_4 =", b4)
print("Kontroll av totalsum =", simplify(b1/(1-k_value)))
print("Kontroll av S_3 =", simplify(b1*(1-k_value**3)/(1-k_value)))

assert b4 == Rational(16, 27)
assert simplify(b1/(1-k_value)) == 6
Kjørt utskriftLikning for kvotienten = Eq(6 - 6*k**3, 38/9)
Reelle løsninger for k = [2/3]
Valgt konvergent kvotient k = 2/3
Første ledd b_1 = 2
Fjerde ledd b_4 = 16/27
Kontroll av totalsum = 6
Kontroll av S_3 = 38/9

Fasit: \(b_4=\frac{16}{27}\).

Vanlig feil: Å tolke differansen \(6-38/9\) direkte som \(b_4\); differansen er summen av hele halen fra og med \(b_4\).
Sensorpunkt: Sensor ser etter korrekt bruk av geometrisk sumformel og kvotientkravet \(|k|<1\).
Del 1 / Oppgave 7aSeparerbar differensiallikning

Oppgave 7a

Oppgave: Løs differensiallikningen \(y\prime=2xy^2\) generelt.
Original poengangivelse: Oppgave 7 (4 poeng).
Vis løsning

Hva spør oppgaven om? Likningen er separerbar. Vi flytter alle y-faktorer til den ene siden og x-faktorer til den andre før vi integrerer.

  1. Ta med nulløsningen
    \(y(x)=0\) oppfyller likningen og må nevnes separat fordi vi senere deler på \(y^2\).
  2. Separer variablene for \(y e0\)
    \(y^{-2}dy=2x\,dx\).
  3. Integrer begge sider
    \[\int y^{-2}dy=\int2x\,dx\]
  4. Utfør integrasjonen
    \(-1/y=x^2+C_1\).
  5. Omdefiner konstanten
    \(1/y=C-x^2\).
  6. Isoler y
    \[y(x)=\frac1{C-x^2}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1SolveODE(y\prime=2*x*y^2)
Resultat: \(y=1/(C-x^2)\)
Tolkning: CAS gir den ikke-konstante løsningsfamilien; nulløsningen må legges til separat.

Digital kontroll i Python (SymPy)

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

x, C = symbols('x C', real=True)
y = Function('y')
solution_family = 1/(C - x**2)
residual = simplify(diff(solution_family, x) - 2*x*solution_family**2)
zero_residual = simplify(diff(0, x) - 2*x*0**2)
ode = Eq(diff(y(x), x), 2*x*y(x)**2)

print("Differensiallikning =", ode)
print("SymPy-generell løsning =", dsolve(ode))
print("Foreslått familie y(x) =", solution_family)
print("Residual for løsningsfamilien =", residual)
print("Residual for nulløsningen =", zero_residual)
print("Gyldig der nevneren C-x^2 ikke er 0")

assert residual == 0
assert zero_residual == 0
Kjørt utskriftDifferensiallikning = Eq(Derivative(y(x), x), 2*x*y(x)**2)
SymPy-generell løsning = Eq(y(x), -1/(C1 + x**2))
Foreslått familie y(x) = 1/(C - x**2)
Residual for løsningsfamilien = 0
Residual for nulløsningen = 0
Gyldig der nevneren C-x^2 ikke er 0

Fasit: \(y(x)=0\) eller \(\displaystyle y(x)=\frac1{C-x^2}\), på intervaller der nevneren ikke er null.

Vanlig feil: Å dele på \(y^2\) uten å nevne nulløsningen, eller å få feil fortegn ved integrasjon av \(y^{-2}\).
Sensorpunkt: Sensor ser etter separasjon, integrasjon, konstantbehandling og nulløsningen.
Del 1 / Oppgave 7bTangent til løsningskurve

Oppgave 7b

Oppgave: En integralkurve går gjennom \((2,1)\). Bestem likningen for tangenten til løsningskurven i dette punktet.
Original poengangivelse: Oppgave 7 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi kan finne tangentens stigningstall direkte fra differensiallikningen og deretter bruke ettpunktsformelen.

  1. Finn stigningstallet
    Fra \(y\prime=2xy^2\) får vi i \((2,1)\):
  2. Sett inn punktet
    \[y\prime(2)=2\cdot2\cdot1^2=4\]
  3. Bruk ettpunktsformelen
    \[y-1=4(x-2)\]
  4. Løs opp parentesen
    \(y-1=4x-8\).
  5. Isoler y
    \[y=4x-7\]
  6. Kontroller integralkurven
    Punktet gir \(C=5\), så kurven er \(y=1/(5-x^2)\), og dens deriverte i \(x=2\) er 4.
Integralkurven y = 1/(5 − x²) og tangenten y = 4x − 7 møtes i (2, 1).
Integralkurven y = 1/(5 − x²) og tangenten y = 4x − 7 møtes i (2, 1).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Substitute(2*x*y^2,{x=2,y=1})
Resultat: \(4\)
Tolkning: Differensiallikningen gir tangentens stigningstall direkte.
2Tangent((2,1),1/(5-x^2))
Resultat: \(y=4x-7\)
Tolkning: Tangenten går gjennom punktet og har stigningstall 4.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
solution = 1/(5 - x**2)
slope = diff(solution, x).subs(x, 2)
tangent = 1 + slope*(x-2)

print("Integralkurve gjennom (2,1) =", solution)
print("Kontroll y(2) =", solution.subs(x, 2))
print("Derivert y'(x) =", diff(solution, x))
print("Stigningstall y'(2) =", slope)
print("Tangent i punktform = 1 + 4*(x-2)")
print("Tangent forenklet =", simplify(tangent))
print("Kontroll av punkt =", simplify(tangent.subs(x, 2) - 1))

assert solution.subs(x, 2) == 1
assert slope == 4
assert simplify(tangent - (4*x-7)) == 0
Kjørt utskriftIntegralkurve gjennom (2,1) = 1/(5 - x**2)
Kontroll y(2) = 1
Derivert y'(x) = 2*x/(5 - x**2)**2
Stigningstall y'(2) = 4
Tangent i punktform = 1 + 4*(x-2)
Tangent forenklet = 4*x - 7
Kontroll av punkt = 0

Fasit: Tangenten er \(y=4x-7\).

Vanlig feil: Å bruke selve funksjonsverdien 1 som stigningstall i stedet for å sette punktet inn i differensiallikningen.
Sensorpunkt: Sensor ser etter stigningstall 4 og korrekt tangentlikning.
Del 1 / Oppgave 8aAndreordens lineær differensiallikning

Oppgave 8a

Oppgave: Gitt \(y\prime\prime+b y\prime+c y=0\). Bestem \(b\) og \(c\) når den generelle løsningen er \(y=e^{-x}(A\cos2x+B\sin2x)\).
Original poengangivelse: Oppgave 8 (4 poeng).
Vis løsning

Hva spør oppgaven om? Løsningsformen viser at den karakteristiske likningen har komplekse røtter med realdel \(-1\) og imaginærdel \(\pm2\).

  1. Les av røttene
    Fra \(e^{\alpha x}(A\cos\beta x+B\sin\beta x)\) får vi \(r=\alpha\pm i\beta\).
  2. Sett inn verdiene
    Her er \(r=-1\pm2i\).
  3. Bygg karakteristisk polynom
    \[(r+1-2i)(r+1+2i)=(r+1)^2+4\]
  4. Utvid
    \[(r+1)^2+4=r^2+2r+5\]
  5. Sammenlign koeffisienter
    Karakteristisk likning er \(r^2+br+c=0\).
  6. Les av
    \[b=2,\qquad c=5\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Expand((r+1)^2+4)
Resultat: \(r^2+2r+5\)
Tolkning: Koeffisientene foran r og konstantleddet gir henholdsvis b og c.

Digital kontroll i Python (SymPy)

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

r = symbols('r')
roots = [-1 + 2*I, -1 - 2*I]
polynomial = expand((r-roots[0])*(r-roots[1]))
calculated_roots = solve(r**2 + 2*r + 5, r)

print("Karakteristiske røtter =", roots)
print("Karakteristisk polynom =", polynomial)
print("Koeffisient b =", polynomial.coeff(r, 1))
print("Koeffisient c =", polynomial.coeff(r, 0))
print("Kontrollrøtter for r^2+2r+5 =", calculated_roots)
print("Polynomkontroll =", simplify(polynomial - (r**2+2*r+5)))

assert simplify(polynomial - (r**2+2*r+5)) == 0
Kjørt utskriftKarakteristiske røtter = [-1 + 2*I, -1 - 2*I]
Karakteristisk polynom = r**2 + 2*r + 5
Koeffisient b = 2
Koeffisient c = 5
Kontrollrøtter for r^2+2r+5 = [-1 - 2*I, -1 + 2*I]
Polynomkontroll = 0

Fasit: \(b=2\) og \(c=5\).

Vanlig feil: Å lese realdelen som \(+1\) selv om eksponentialfaktoren er \(e^{-x}\), eller å bruke \(c=2\).
Sensorpunkt: Sensor ser etter sammenhengen mellom komplekse røtter og den reelle løsningsformen.
Del 1 / Oppgave 8bInitialbetingelser

Oppgave 8b

Oppgave: Bestem \(A\) og \(B\) når \(y(0)=2\) og \(y\prime(0)=6\).
Original poengangivelse: Oppgave 8 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter først \(x=0\) i løsningen og deretter i den deriverte for å få to lineære likninger i A og B.

  1. Bruk \(y(0)=2\)
    \(y(0)=A\), fordi \(e^0=1\), \(\cos0=1\) og \(\sin0=0\). Dermed \(A=2\).
  2. Deriver produktet
    \[y\prime=e^{-x}\big((-A+2B)\cos2x+(-B-2A)\sin2x\big)\]
  3. Sett \(x=0\)
    \(y\prime(0)=-A+2B\).
  4. Bruk \(y\prime(0)=6\)
    \[-A+2B=6\]
  5. Sett inn \(A=2\)
    \(-2+2B=6\Rightarrow B=4\).
  6. Skriv den bestemte løsningen
    \[y=e^{-x}(2\cos2x+4\sin2x)\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({A=2,-A+2B=6},{A,B})
Resultat: \(A=2,\ B=4\)
Tolkning: CAS løser systemet som kommer fra initialbetingelsene.

Digital kontroll i Python (SymPy)

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

x, A, B = symbols('x A B', real=True)
y = exp(-x)*(A*cos(2*x) + B*sin(2*x))
y_prime = diff(y, x)
constants = solve([Eq(y.subs(x,0),2), Eq(y_prime.subs(x,0),6)], [A,B], dict=True)[0]
specific = simplify(y.subs(constants))

print("Generell løsning y(x) =", y)
print("Derivert y'(x) =", y_prime)
print("y(0) =", y.subs(x,0))
print("y'(0) =", simplify(y_prime.subs(x,0)))
print("Løsning for konstantene =", constants)
print("Bestemt løsning =", specific)
print("Kontroll y(0) =", specific.subs(x,0))
print("Kontroll y'(0) =", diff(specific,x).subs(x,0))

assert constants[A] == 2 and constants[B] == 4
Kjørt utskriftGenerell løsning y(x) = (A*cos(2*x) + B*sin(2*x))*exp(-x)
Derivert y'(x) = (-2*A*sin(2*x) + 2*B*cos(2*x))*exp(-x) - (A*cos(2*x) + B*sin(2*x))*exp(-x)
y(0) = A
y'(0) = -A + 2*B
Løsning for konstantene = {A: 2, B: 4}
Bestemt løsning = 2*(2*sin(2*x) + cos(2*x))*exp(-x)
Kontroll y(0) = 2
Kontroll y'(0) = 6

Fasit: \(A=2\) og \(B=4\).

Vanlig feil: Å derivere bare parentesen og glemme produktleddet fra \(e^{-x}\).
Sensorpunkt: Sensor ser etter korrekt derivert og to løste initialbetingelser.
Del 1 / Oppgave 9aPlan gjennom tre punkter

Oppgave 9a

Oppgave: Et plan \(\alpha\) inneholder \(A(1,1,3)\), \(B(1,2,1)\) og \(C(-1,3,2)\). Bestem en likning for planet.
Original poengangivelse: Oppgave 9 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi lager to retningsvektorer i planet, finner en normalvektor med kryssprodukt og bruker punkt-normal-formen.

  1. Finn \(\overrightarrow{AB}\)
    \(\overrightarrow{AB}=B-A=(0,1,-2)\).
  2. Finn \(\overrightarrow{AC}\)
    \(\overrightarrow{AC}=C-A=(-2,2,-1)\).
  3. Ta kryssproduktet
    \[\overrightarrow{AB}\times\overrightarrow{AC}=(3,4,2)\]
  4. Bruk punkt-normal-formen
    \[3(x-1)+4(y-1)+2(z-3)=0\]
  5. Utvid
    \(3x+4y+2z-13=0\).
  6. Skriv planlikningen
    \[\alpha:\ 3x+4y+2z=13\]
Planet skjærer alle tre koordinataksene i positive punkter.
Planet skjærer alle tre koordinataksene i positive punkter.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Cross((0,1,-2),(-2,2,-1))
Resultat: \((3,4,2)\)
Tolkning: Kryssproduktet er normalt på begge retningsvektorene.
2Plane(A,B,C)
Resultat: \(3x+4y+2z=13\)
Tolkning: Alle tre punktene oppfyller planlikningen.

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,1,3])
B = Matrix([1,2,1])
C = Matrix([-1,3,2])
AB = B-A
AC = C-A
normal = AB.cross(AC)
plane = 3*x + 4*y + 2*z - 13

print("A =", A.T)
print("B =", B.T)
print("C =", C.T)
print("AB =", AB.T)
print("AC =", AC.T)
print("Normalvektor AB x AC =", normal.T)
print("Planlikning: 3*x + 4*y + 2*z = 13")
print("Kontroll A =", plane.subs({x:1,y:1,z:3}))
print("Kontroll B =", plane.subs({x:1,y:2,z:1}))
print("Kontroll C =", plane.subs({x:-1,y:3,z:2}))

assert normal == Matrix([3,4,2])
assert all(plane.subs(dict(zip((x,y,z),P))) == 0 for P in [A,B,C])
Kjørt utskriftA = Matrix([[1, 1, 3]])
B = Matrix([[1, 2, 1]])
C = Matrix([[-1, 3, 2]])
AB = Matrix([[0, 1, -2]])
AC = Matrix([[-2, 2, -1]])
Normalvektor AB x AC = Matrix([[3, 4, 2]])
Planlikning: 3*x + 4*y + 2*z = 13
Kontroll A = 0
Kontroll B = 0
Kontroll C = 0

Fasit: \(\alpha:\ 3x+4y+2z=13\).

Vanlig feil: Å bruke punktkoordinatene direkte som normalvektor eller å ta differansevektorene i feil sammenheng.
Sensorpunkt: Sensor ser etter to retningsvektorer, et korrekt kryssprodukt og en planlikning som passer alle punktene.
Del 1 / Oppgave 9bSkjæring med koordinatakser

Oppgave 9b

Oppgave: Bestem skjæringspunktene mellom planet \(\alpha:3x+4y+2z=13\) og hver av de tre koordinataksene.
Original poengangivelse: Oppgave 9 (6 poeng).
Vis løsning

Hva spør oppgaven om? På én koordinatakse er de to andre koordinatene lik null. Vi setter derfor to variabler lik null om gangen.

  1. Skjæring med x-aksen
    Sett \(y=z=0\): \(3x=13\Rightarrow x=13/3\).
  2. Skriv x-punktet
    \(X=(13/3,0,0)\).
  3. Skjæring med y-aksen
    Sett \(x=z=0\): \(4y=13\Rightarrow y=13/4\).
  4. Skriv y-punktet
    \(Y=(0,13/4,0)\).
  5. Skjæring med z-aksen
    Sett \(x=y=0\): \(2z=13\Rightarrow z=13/2\).
  6. Samle punktene
    \[X=\left(\frac{13}{3},0,0\right),\quad Y=\left(0,\frac{13}{4},0\right),\quad Z=\left(0,0,\frac{13}{2}\right)\]
De tre markerte punktene er planens akseavskjæringer.
De tre markerte punktene er planens akseavskjæringer.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(3x=13,x)
Resultat: \(x=13/3\)
Tolkning: Dette er x-aksens skjæringskoordinat.
2Solve(4y=13,y)
Resultat: \(y=13/4\)
Tolkning: Dette er y-aksens skjæringskoordinat.
3Solve(2z=13,z)
Resultat: \(z=13/2\)
Tolkning: Dette er z-aksens skjæringskoordinat.

Digital kontroll i Python (SymPy)

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

x, y, z = symbols('x y z', real=True)
X = (solve(Eq(3*x,13),x)[0], 0, 0)
Y = (0, solve(Eq(4*y,13),y)[0], 0)
Z = (0, 0, solve(Eq(2*z,13),z)[0])

print("Skjæring med x-aksen =", X)
print("Skjæring med y-aksen =", Y)
print("Skjæring med z-aksen =", Z)
print("Kontroll X i planet =", 3*X[0]+4*X[1]+2*X[2])
print("Kontroll Y i planet =", 3*Y[0]+4*Y[1]+2*Y[2])
print("Kontroll Z i planet =", 3*Z[0]+4*Z[1]+2*Z[2])

assert X == (Rational(13,3),0,0)
assert Y == (0,Rational(13,4),0)
assert Z == (0,0,Rational(13,2))
Kjørt utskriftSkjæring med x-aksen = (13/3, 0, 0)
Skjæring med y-aksen = (0, 13/4, 0)
Skjæring med z-aksen = (0, 0, 13/2)
Kontroll X i planet = 13
Kontroll Y i planet = 13
Kontroll Z i planet = 13

Fasit: \(\left(\frac{13}{3},0,0\right)\), \(\left(0,\frac{13}{4},0\right)\) og \(\left(0,0,\frac{13}{2}\right)\).

Vanlig feil: Å sette bare én koordinat lik null; på en koordinatakse må begge de andre koordinatene være null.
Sensorpunkt: Sensor ser etter tre korrekte innsettinger og eksakte koordinater.
Del 1 / Oppgave 9cVinkel mellom linje og plan

Oppgave 9c

Oppgave: Avgjør hvilken koordinatakse som danner minst vinkel med planet \(\alpha\).
Original poengangivelse: Oppgave 9 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vinkelen mellom en akse og planet bestemmes av aksens retningsvektor og planens normalvektor. Den minste komponenten i normalvektoren gir den minste sinusverdien.

  1. Bruk normalvektoren
    En normalvektor er \(\mathbf n=(3,4,2)\), med lengde \(\sqrt{29}\).
  2. Retningsvektorer for aksene
    \(\mathbf e_x=(1,0,0)\), \(\mathbf e_y=(0,1,0)\), \(\mathbf e_z=(0,0,1)\).
  3. Bruk linje-plan-vinkelen
    For vinkel \(\theta\) mellom linje og plan gjelder \(\sin\theta=|\mathbf e\cdot\mathbf n|/(|\mathbf e||\mathbf n|)\).
  4. Sammenlign x-aksen
    \(\sin\theta_x=3/\sqrt{29}\).
  5. Sammenlign y- og z-aksen
    \(\sin\theta_y=4/\sqrt{29}\), mens \(\sin\theta_z=2/\sqrt{29}\).
  6. Konkluder
    Siden \(2/\sqrt{29}\) er minst, danner z-aksen minst vinkel med planet. Vinkelen er omtrent \(21.8^\circ\).
Z-aksen har den minste projeksjonen på normalvektoren og dermed den minste vinkelen med planet.
Z-aksen har den minste projeksjonen på normalvektoren og dermed den minste vinkelen med planet.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1asin(abs(Dot((0,0,1),(3,4,2)))/(Length((0,0,1))*Length((3,4,2))))
Resultat: \(\arcsin(2/\sqrt{29})\approx21.8^\circ\)
Tolkning: Z-aksens retningsvektor gir den minste linje-plan-vinkelen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, sqrt, asin, pi, N

n = Matrix([3,4,2])
axes = {
    "x-aksen": Matrix([1,0,0]),
    "y-aksen": Matrix([0,1,0]),
    "z-aksen": Matrix([0,0,1]),
}
angles = {}
for name, e in axes.items():
    sine = abs(e.dot(n))/(e.norm()*n.norm())
    angle = asin(sine)
    angles[name] = angle
    print(name, ": sin(theta) =", sine, ", theta =", N(angle*180/pi, 12), "grader")

smallest = min(angles, key=lambda name: float(angles[name]))
print("Minste vinkel dannes av =", smallest)
print("Minste vinkel eksakt =", angles[smallest])
print("Minste vinkel numerisk =", N(angles[smallest]*180/pi, 12), "grader")

assert smallest == "z-aksen"
Kjørt utskriftx-aksen : sin(theta) = 3*sqrt(29)/29 , theta = 33.8545148126 grader
y-aksen : sin(theta) = 4*sqrt(29)/29 , theta = 47.9688862258 grader
z-aksen : sin(theta) = 2*sqrt(29)/29 , theta = 21.8014094864 grader
Minste vinkel dannes av = z-aksen
Minste vinkel eksakt = asin(2*sqrt(29)/29)
Minste vinkel numerisk = 21.8014094864 grader

Fasit: Z-aksen danner minst vinkel med planet; vinkelen er \(\arcsin(2/\sqrt{29})\approx21.8^\circ\).

Vanlig feil: Å velge aksen som svarer til den største normalkomponenten; det gir størst, ikke minst, linje-plan-vinkel.
Sensorpunkt: Sensor ser etter riktig vinkeldefinisjon og en tydelig sammenligning av alle tre aksene.

Del 2 - med hjelpemidler

Del 2 / Oppgave 1aGeometrisk sparemodell

Oppgave 1a

Oppgave: Rannveig setter inn 1000 kroner hver måned på en konto med fast månedlig rentefot 0,25 %. Hvor mye er det på kontoen like etter innskudd nummer 40?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Like etter innskudd nummer 40 har det første innskuddet fått rente i 39 måneder, mens det siste ikke har fått rente ennå. Beløpene danner en geometrisk sum.

  1. Finn vekstfaktoren
    \(q=1+0.0025=1.0025\).
  2. Skriv de 40 bidragene
    \(1000q^{39}+1000q^{38}+\cdots+1000\).
  3. Bruk geometrisk sum
    \[S_{40}=1000\frac{q^{40}-1}{q-1}\]
  4. Sett inn q
    \[S_{40}=1000\frac{1.0025^{40}-1}{0.0025}\]
  5. Beregn
    \(S_{40}\approx42013.204\).
  6. Avrund til kroner
    Det er omtrent \(42\,013\) kroner på kontoen.
Saldoen etter 40 innskudd er omtrent 42 013 kr.
Saldoen etter 40 innskudd er omtrent 42 013 kr.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Sum(1000*1.0025^k,k,0,39)
Resultat: \(42013.204\)
Tolkning: Summen inkluderer 40 innskudd med rentetider fra 0 til 39 måneder.

Digital kontroll i Python (SymPy)

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

monthly_rate = Rational(25, 10000)   # 0.25 prosent
q = 1 + monthly_rate
n = 40
balance = 1000*(q**n - 1)/(q - 1)
direct_sum = sum(1000*q**k for k in range(n))

print("Månedlig rentefot =", monthly_rate)
print("Vekstfaktor q =", q)
print("Antall innskudd =", n)
print("Saldo fra sumformelen =", N(balance, 15), "kr")
print("Saldo fra direkte summering =", N(direct_sum, 15), "kr")
print("Avrundet til nærmeste krone =", round(float(balance)), "kr")
print("Kontroll mellom metodene =", simplify(balance-direct_sum))

assert simplify(balance-direct_sum) == 0
Kjørt utskriftMånedlig rentefot = 1/400
Vekstfaktor q = 401/400
Antall innskudd = 40
Saldo fra sumformelen = 42013.2040516283 kr
Saldo fra direkte summering = 42013.2040516283 kr
Avrundet til nærmeste krone = 42013 kr
Kontroll mellom metodene = 0

Fasit: Omtrent \(42\,013\) kroner.

Vanlig feil: Å la også det 40. innskuddet få én måneds rente, eller å bruke årlig rentefot.
Sensorpunkt: Sensor ser etter korrekt geometrisk sum og tydelig avrunding.
Del 2 / Oppgave 1bTerskel i geometrisk følge

Oppgave 1b

Oppgave: Hvor lang tid gikk det fra første innskudd til det var mer enn 50 000 kroner på kontoen?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi finner det minste innskuddsnummeret n som gir saldo over 50 000 og oversetter deretter innskuddsnummeret til antall måneder siden første innskudd.

  1. Bruk saldouttrykket
    \(S_n=1000(q^n-1)/(q-1)\), der \(q=1.0025\).
  2. Sett opp ulikheten
    \[1000\frac{1.0025^n-1}{0.0025}>50000\]
  3. Løs numerisk
    Det minste heltallet som oppfyller ulikheten er \(n=48\).
  4. Kontroller innskudd 47
    \(S_{47}\approx49\,806.69<50\,000\).
  5. Kontroller innskudd 48
    \(S_{48}\approx50\,931.21>50\,000\).
  6. Tolk tiden
    Innskudd nummer 48 settes inn 47 måneder etter det første. Det gikk derfor 47 måneder.
Grafen krysser 50 000 kr ved innskudd nummer 48, 47 måneder etter første innskudd.
Grafen krysser 50 000 kr ved innskudd nummer 48, 47 måneder etter første innskudd.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve(1000*(1.0025^n-1)/0.0025=50000,n)
Resultat: \(n\approx47.17\)
Tolkning: Terskelen passeres ved neste heltall, altså innskudd nummer 48.

Digital kontroll i Python (SymPy)

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

q = Rational(10025, 10000)
def balance(n):
    return 1000*(q**n - 1)/(q - 1)

first_above = next(n for n in range(1, 200) if balance(n) > 50000)
previous = balance(first_above-1)
current = balance(first_above)
months_from_first = first_above - 1

print("Første innskuddsnummer med saldo over 50 000 =", first_above)
print("Saldo etter innskudd 47 =", N(previous, 15), "kr")
print("Saldo etter innskudd 48 =", N(current, 15), "kr")
print("Antall måneder fra første innskudd =", months_from_first)
print("Kontroll: saldo 47 < 50 000 =", previous < 50000)
print("Kontroll: saldo 48 > 50 000 =", current > 50000)

assert first_above == 48
assert months_from_first == 47
Kjørt utskriftFørste innskuddsnummer med saldo over 50 000 = 48
Saldo etter innskudd 47 = 49806.6916867567 kr
Saldo etter innskudd 48 = 50931.2084159736 kr
Antall måneder fra første innskudd = 47
Kontroll: saldo 47 < 50 000 = True
Kontroll: saldo 48 > 50 000 = True

Fasit: Det gikk \(47\) måneder; beløpet passerte 50 000 kroner like etter innskudd nummer 48.

Vanlig feil: Å svare 48 måneder uten å merke at første innskudd skjer ved starttidspunktet.
Sensorpunkt: Sensor ser etter både terskelkontroll for n=47 og n=48 og korrekt tidsfortolkning.
Del 2 / Oppgave 1cNumerisk rentebestemmelse

Oppgave 1c

Oppgave: Ivar har 47 900 kroner like etter innskudd nummer 40. Hvilken fast månedlig rentefot ville gitt samme sum på en sparekonto?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter den ukjente månedsrenten r inn i annuitetsformelen og løser den ikke-lineære likningen numerisk.

  1. Definer vekstfaktoren
    La \(q=1+r\).
  2. Skriv saldolikningen
    \[1000\frac{(1+r)^{40}-1}{r}=47900\]
  3. Velg numerisk metode
    Likningen har ikke en enkel algebraisk løsning, så vi bruker CAS eller numerisk rotfinner.
  4. Løs for r
    \(r\approx0.0090086973\).
  5. Gjør om til prosent
    \(100r\approx0.9008697\%\).
  6. Kontroller saldoen
    Innsetting av denne renten gir \(47\,900\) kroner etter 40 innskudd.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve(1000*((1+r)^40-1)/r=47900,r,0.009)
Resultat: \(r\approx0.0090086973\)
Tolkning: Dette tilsvarer omtrent 0,901 % månedsrente.

Digital kontroll i Python (SymPy)

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

r = symbols('r', real=True)
equation = 1000*((1+r)**40 - 1)/r - 47900
root = nsolve(equation, 0.009)
check_balance = 1000*((1+root)**40 - 1)/root

print("Likningens venstreside minus 47 900 =", equation)
print("Numerisk løsning r =", N(root, 16))
print("Månedlig rentefot i prosent =", N(100*root, 12), "%")
print("Kontrollsaldo =", N(check_balance, 15), "kr")
print("Kontrollresidual =", N(equation.subs(r, root), 8))
print("Avrundet månedsrente =", round(float(100*root), 3), "%")

assert abs(float(check_balance)-47900) < 1e-7
Kjørt utskriftLikningens venstreside minus 47 900 = -47900 + (1000*(r + 1)**40 - 1000)/r
Numerisk løsning r = 0.009008697285727889
Månedlig rentefot i prosent = 0.900869728573 %
Kontrollsaldo = 47900.0000000004 kr
Kontrollresidual = 4.0745363e-10
Avrundet månedsrente = 0.901 %

Fasit: Omtrent \(0.901\%\) per måned.

Vanlig feil: Å oppgi vekstfaktoren 1,009 som rentefot, eller å bruke 40 måneders rente på alle innskuddene.
Sensorpunkt: Sensor ser etter korrekt annuitetslikning, numerisk løsning og prosenttolkning.
Del 2 / Oppgave 2aPeriodisk funksjon og graf

Oppgave 2a

Oppgave: Funksjonen er \(f(x)=\cos(2x)-2\cos x+2\). Tegn grafen og bestem perioden.
Original poengangivelse: Oppgave 2 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi analyserer periodene til leddene og kontrollerer grafisk at den samlede funksjonen gjentar seg etter \(2\pi\), men ikke etter \(\pi\).

  1. Finn leddperiodene
    \(\cos(2x)\) har periode \(\pi\), mens \(\cos x\) har periode \(2\pi\).
  2. Finn felles periode
    \(2\pi\) er en felles periode for begge trigonometriske ledd.
  3. Kontroller at \(\pi\) ikke virker
    \(f(0)=1\), mens \(f(\pi)=5\), så \(\pi\) er ikke en periode.
  4. Konkluder om minste periode
    Den minste positive perioden er derfor \(2\pi\).
  5. Finn nyttige grafpunkter
    \(f(0)=1\), \(f(\pi)=5\), og minimum \(1/2\) oppstår når \(\cos x=1/2\).
  6. Tegn grafen
    Grafen gjentar seg på hvert intervall med lengde \(2\pi\).
Den markerte delen fra 0 til 2π viser én full periode.
Den markerte delen fra 0 til 2π viser én full periode.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1f(x)=cos(2x)-2cos(x)+2
Resultat: Graf med minste periode \(2\pi\)
Tolkning: Grafen viser at funksjonsverdiene ved x og x+2π er like.
2Simplify(f(x+2pi)-f(x))
Resultat: \(0\)
Tolkning: Symbolsk kontroll bekrefter perioden 2π.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
f = cos(2*x) - 2*cos(x) + 2
period_check = simplify(f.subs(x, x+2*pi)-f)
pi_check = simplify(f.subs(x, x+pi)-f)
critical = solve(diff(f,x), x)

print("Funksjon f(x) =", f)
print("f(0) =", f.subs(x,0))
print("f(pi) =", f.subs(x,pi))
print("Kontroll f(x+2*pi)-f(x) =", period_check)
print("Kontroll f(x+pi)-f(x) =", pi_check)
print("Minimumskandidater i en periode inkluderer pi/3 og 5*pi/3")
print("f(pi/3) =", simplify(f.subs(x,pi/3)))
print("f(5*pi/3) =", simplify(f.subs(x,5*pi/3)))

assert period_check == 0
assert pi_check != 0
Kjørt utskriftFunksjon f(x) = -2*cos(x) + cos(2*x) + 2
f(0) = 1
f(pi) = 5
Kontroll f(x+2*pi)-f(x) = 0
Kontroll f(x+pi)-f(x) = 4*cos(x)
Minimumskandidater i en periode inkluderer pi/3 og 5*pi/3
f(pi/3) = 1/2
f(5*pi/3) = 1/2

Fasit: Minste periode er \(2\pi\).

Vanlig feil: Å velge \(\pi\) fordi det første leddet har periode \(\pi\), uten å kontrollere leddet \(-2\cos x\).
Sensorpunkt: Sensor ser etter dokumentert graf og en begrunnet minste periode.
Del 2 / Oppgave 2bDobbeltvinkelformel

Oppgave 2b

Oppgave: Skriv \(f(x)\) på formen \(a\cos^2x+b\cos x+c\), og bestem \(a\), \(b\) og \(c\).
Original poengangivelse: Oppgave 2 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi bruker dobbeltvinkelformelen \(\cos(2x)=2\cos^2x-1\) og samler ledd.

  1. Skriv dobbeltvinkelformelen
    \[\cos(2x)=2\cos^2x-1\]
  2. Sett inn i f
    \[f(x)=2\cos^2x-1-2\cos x+2\]
  3. Samle konstantene
    \(-1+2=1\).
  4. Skriv ønsket form
    \[f(x)=2\cos^2x-2\cos x+1\]
  5. Sammenlign koeffisienter
    \(a=2\), \(b=-2\), \(c=1\).
  6. Ekstra kontroll
    Uttrykket kan også skrives \(2(\cos x-1/2)^2+1/2\), som forklarer minimumsverdien.
Den kvadratkompletterte formen forklarer minimumspunktene i grafen.
Den kvadratkompletterte formen forklarer minimumspunktene i grafen.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1TrigExpand(cos(2x)-2cos(x)+2)
Resultat: \(2\cos^2x-2\cos x+1\)
Tolkning: CAS bruker dobbeltvinkelformelen og samler leddene.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
f = cos(2*x) - 2*cos(x) + 2
rewritten = 2*cos(x)**2 - 2*cos(x) + 1
completed_square = 2*(cos(x)-1/2)**2 + 1/2

print("Opprinnelig funksjon =", f)
print("Trigonometrisk utvidelse =", expand_trig(f))
print("Ønsket form =", rewritten)
print("Kvadratkomplettert form =", expand(completed_square))
print("Kontroll opprinnelig - ønsket =", simplify(f-rewritten))
print("Koeffisienter: a = 2, b = -2, c = 1")

assert simplify(f-rewritten) == 0
assert simplify(rewritten-completed_square) == 0
Kjørt utskriftOpprinnelig funksjon = -2*cos(x) + cos(2*x) + 2
Trigonometrisk utvidelse = 2*cos(x)**2 - 2*cos(x) + 1
Ønsket form = 2*cos(x)**2 - 2*cos(x) + 1
Kvadratkomplettert form = 2*cos(x)**2 - 2.0*cos(x) + 1.0
Kontroll opprinnelig - ønsket = 0
Koeffisienter: a = 2, b = -2, c = 1

Fasit: \(a=2\), \(b=-2\) og \(c=1\).

Vanlig feil: Å bruke \(\cos(2x)=2\cos x-1\) uten kvadratet.
Sensorpunkt: Sensor ser etter korrekt dobbeltvinkelformel og tydelig koeffisientsammenligning.
Del 2 / Oppgave 3aAkseavskjæringer med parameter

Oppgave 3a

Oppgave: Planet er \(\alpha:x+y+t z=4\), \(t\ne0\). Bestem skjæringspunktene A, B og C med x-, y- og z-aksen uttrykt ved t.
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter to koordinater lik null for hver akse og løser den gjenværende likningen.

  1. Skjæring med x-aksen
    Sett \(y=z=0\): \(x=4\), så \(A=(4,0,0)\).
  2. Skjæring med y-aksen
    Sett \(x=z=0\): \(y=4\), så \(B=(0,4,0)\).
  3. Skjæring med z-aksen
    Sett \(x=y=0\): \(tz=4\).
  4. Bruk \(t e0\)
    \(z=4/t\).
  5. Skriv C
    \(C=(0,0,4/t)\).
  6. Samle punktene
    \[A=(4,0,0),\quad B=(0,4,0),\quad C=\left(0,0,\frac4t\right)\]
A, B og C er de tre akseavskjæringene som sammen med origo danner pyramiden.
A, B og C er de tre akseavskjæringene som sammen med origo danner pyramiden.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(x=4,x)
Resultat: \(A=(4,0,0)\)
Tolkning: På x-aksen er y og z lik null.
2Solve(y=4,y)
Resultat: \(B=(0,4,0)\)
Tolkning: På y-aksen er x og z lik null.
3Solve(t*z=4,z)
Resultat: \(C=(0,0,4/t)\)
Tolkning: Forutsetningen t≠0 gjør z-avskjæringen definert.

Digital kontroll i Python (SymPy)

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

x, y, z, t = symbols('x y z t', real=True, nonzero=True)
A = (solve(Eq(x,4),x)[0], 0, 0)
B = (0, solve(Eq(y,4),y)[0], 0)
C = (0, 0, solve(Eq(t*z,4),z)[0])

print("A =", A)
print("B =", B)
print("C =", C)
print("Kontroll A i planet =", simplify(A[0]+A[1]+t*A[2]))
print("Kontroll B i planet =", simplify(B[0]+B[1]+t*B[2]))
print("Kontroll C i planet =", simplify(C[0]+C[1]+t*C[2]))
print("Forutsetning: t != 0")

assert simplify(A[0]+A[1]+t*A[2]-4) == 0
assert simplify(B[0]+B[1]+t*B[2]-4) == 0
assert simplify(C[0]+C[1]+t*C[2]-4) == 0
Kjørt utskriftA = (4, 0, 0)
B = (0, 4, 0)
C = (0, 0, 4/t)
Kontroll A i planet = 4
Kontroll B i planet = 4
Kontroll C i planet = 4
Forutsetning: t != 0

Fasit: \(A=(4,0,0)\), \(B=(0,4,0)\), \(C=(0,0,4/t)\).

Vanlig feil: Å skrive z-avskjæringen som \(4t\) i stedet for \(4/t\).
Sensorpunkt: Sensor ser etter korrekt aksemetode og bruk av forutsetningen \(t\ne0\).
Del 2 / Oppgave 3bVolum av pyramide

Oppgave 3b

Oppgave: En pyramide er avgrenset av planet \(\alpha\) og koordinatplanene. Bestem t slik at volumet er 10.
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Pyramiden er et tetraeder med tre gjensidig vinkelrette kantlengder 4, 4 og \(|4/t|\) fra origo.

  1. Bruk tetraedervolumet
    \[V=\frac16\left|\det(\overrightarrow{OA},\overrightarrow{OB},\overrightarrow{OC})\right|\]
  2. Sett inn kantvektorene
    Determinanten er \(4\cdot4\cdot(4/t)=64/t\).
  3. Ta absoluttverdi
    \[V=\frac{32}{3|t|}\]
  4. Sett volumet lik 10
    \[\frac{32}{3|t|}=10\]
  5. Løs for absoluttverdien
    \(|t|=16/15\).
  6. Skriv begge parametere
    \[t=\frac{16}{15}\quad\text{eller}\quad t=-\frac{16}{15}\] Dersom pyramiden skal ligge i første oktant, velges \(t=16/15\).
For t = 16/15 ligger tetraederet i første oktant og har volum 10.
For t = 16/15 ligger tetraederet i første oktant og har volum 10.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(32/(3*abs(t))=10,t)
Resultat: \(t=\pm16/15\)
Tolkning: Begge fortegn gir et tetraeder med samme volum; positiv t gir z-avskjæring i positiv retning.

Digital kontroll i Python (SymPy)

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

t = symbols('t', real=True, nonzero=True)
OA = Matrix([4,0,0])
OB = Matrix([0,4,0])
OC = Matrix([0,0,4/t])
determinant = Matrix.hstack(OA,OB,OC).det()
volume = Abs(determinant)/6
solutions = [Rational(16,15), Rational(-16,15)]

print("Determinant =", determinant)
print("Volumfunksjon V(t) =", volume)
print("Kandidater for t =", solutions)
for value in solutions:
    print("V(", value, ") =", simplify(volume.subs(t,value)))
print("Positiv t gir pyramiden i første oktant")

assert all(simplify(volume.subs(t,v)-10) == 0 for v in solutions)
Kjørt utskriftDeterminant = 64/t
Volumfunksjon V(t) = 32/(3*Abs(t))
Kandidater for t = [16/15, -16/15]
V( 16/15 ) = 10
V( -16/15 ) = 10
Positiv t gir pyramiden i første oktant

Fasit: \(t=\pm16/15\). For en pyramide i første oktant er \(t=16/15\).

Vanlig feil: Å utelate absoluttverdien i volumet og dermed forkaste den negative parameteren uten begrunnelse.
Sensorpunkt: Sensor ser etter determinant- eller pyramideformel, absoluttverdi og en tydelig geometrisk tolkning.
Del 2 / Oppgave 3cTangentplan til kuleflate

Oppgave 3c

Oppgave: Kuleflaten K har sentrum \(S(-1,2,1)\) og radius 2. Bruk CAS til å bestemme t slik at planet \(x+y+tz=4\) tangerer K.
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Et plan tangerer en kule når avstanden fra sentrum til planet er lik radiusen.

  1. Skriv avstandsformelen
    For planet \(x+y+tz-4=0\) er avstanden fra S
  2. Sett inn sentrum
    \[d=\frac{|-1+2+t\cdot1-4|}{\sqrt{1^2+1^2+t^2}}=\frac{|t-3|}{\sqrt{t^2+2}}\]
  3. Sett avstand lik radius
    \[\frac{|t-3|}{\sqrt{t^2+2}}=2\]
  4. Kvadrer
    \((t-3)^2=4(t^2+2)\).
  5. Samle til andregradslikning
    \(3t^2+6t-1=0\).
  6. Løs med CAS
    \[t=-1\pm\frac{2\sqrt{3}}{3}\]
Planet er tangent når den korteste avstanden fra sentrum S til planet er lik 2.
Planet er tangent når den korteste avstanden fra sentrum S til planet er lik 2.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve((t-3)^2=4*(t^2+2),t)
Resultat: \(t=-1\pm2\sqrt{3}/3\)
Tolkning: Begge parameterverdiene gir avstand 2 fra sentrum til planet og dermed tangering.

Digital kontroll i Python (SymPy)

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

t = symbols('t', real=True)
equation = (t-3)**2 - 4*(t**2+2)
solutions = solve(equation, t)

print("Kvadrert tangentlikning =", equation, "= 0")
print("Forenklet polynom =", simplify(equation))
print("Løsninger for t =", solutions)
for value in solutions:
    distance_squared = simplify((value-3)**2/(value**2+2))
    print("t =", value, ", t numerisk =", N(value,12), ", avstand^2 =", distance_squared)
print("Begge avstander er 2 siden avstand^2 = 4")

assert all(simplify((v-3)**2/(v**2+2)-4) == 0 for v in solutions)
assert all(v != 0 for v in solutions)
Kjørt utskriftKvadrert tangentlikning = -4*t**2 + (t - 3)**2 - 8 = 0
Forenklet polynom = -3*t**2 - 6*t + 1
Løsninger for t = [-1 + 2*sqrt(3)/3, -2*sqrt(3)/3 - 1]
t = -1 + 2*sqrt(3)/3 , t numerisk = 0.154700538379 , avstand^2 = 4
t = -2*sqrt(3)/3 - 1 , t numerisk = -2.15470053838 , avstand^2 = 4
Begge avstander er 2 siden avstand^2 = 4

Fasit: \(\displaystyle t=-1\pm\frac{2\sqrt{3}}{3}\).

Vanlig feil: Å sette den usignerte telleren \(t-3\) lik 2 og dermed miste en løsning, eller å glemme normalvektorens lengde.
Sensorpunkt: Sensor ser etter avstandsformelen, radiusbetingelsen, CAS-løsning og kontroll av begge røttene.
Del 2 / Oppgave 4aModellering med differensiallikning

Oppgave 4a

Oppgave: Begrunn at \(V\prime=-0.70-0.01V\), \(V(0)=60\), kan brukes for bensinmengden etter x mil.
Original poengangivelse: Oppgave 4 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi oversetter de to uavhengige tapene per mil til en samlet endringsrate for bensinmengden.

  1. Motorens forbruk
    Motoren bruker konstant 0,70 liter per mil, som bidrar med \(-0.70\) til \(V\prime\).
  2. Lekkasjen
    Lekkasjen per mil er proporsjonal med mengden på tanken og har konstant 0,01, altså \(0.01V\) liter per mil.
  3. Fortegnet til lekkasjen
    Lekkasjen reduserer tankinnholdet, så bidraget er \(-0.01V\).
  4. Legg sammen tapene
    \[V\prime=-0.70-0.01V\]
  5. Bruk startverdien
    Tanken er full ved start, så \(V(0)=60\).
  6. Tolk enhetene
    Begge leddene på høyre side har enhet liter per mil, som passer med \(V\prime\).
Kurven faller både på grunn av motorens konstante forbruk og den mengdeavhengige lekkasjen.
Kurven faller både på grunn av motorens konstante forbruk og den mengdeavhengige lekkasjen.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1V\prime=-0.70-0.01V, V(0)=60
Resultat: Endringsrate = motorforbruk + lekkasjetap
Tolkning: Modellen kombinerer et konstant og et mengdeproporsjonalt tap.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True, nonnegative=True)
V = Function('V')
engine_loss = -Rational(70,100)
leak_loss = -Rational(1,100)*V(x)
ode = Eq(diff(V(x),x), engine_loss + leak_loss)

print("Motorens bidrag per mil =", engine_loss, "liter per mil")
print("Lekkasjens bidrag per mil =", leak_loss)
print("Samlet differensiallikning =", ode)
print("Startbetingelse: V(0) = 60")
print("Ved start er V'(0) =", engine_loss - Rational(1,100)*60, "liter per mil")
print("Ved start tapes altså 1.30 liter per mil")

assert engine_loss - Rational(1,100)*60 == Rational(-13,10)
Kjørt utskriftMotorens bidrag per mil = -7/10 liter per mil
Lekkasjens bidrag per mil = -V(x)/100
Samlet differensiallikning = Eq(Derivative(V(x), x), -V(x)/100 - 7/10)
Startbetingelse: V(0) = 60
Ved start er V'(0) = -13/10 liter per mil
Ved start tapes altså 1.30 liter per mil

Fasit: Modellen er riktig fordi \(V\prime\) er summen av det konstante motorforbruket \(-0.70\) og det proporsjonale lekkasjetapet \(-0.01V\), med \(V(0)=60\).

Vanlig feil: Å gi lekkasjeleddet positivt fortegn, eller å blande liter per mil med liter.
Sensorpunkt: Sensor ser etter en fysisk forklaring av begge leddene, fortegn og startverdi.
Del 2 / Oppgave 4bLineær differensiallikning

Oppgave 4b

Oppgave: Løs differensiallikningen \(V\prime=-0.70-0.01V\), \(V(0)=60\).
Original poengangivelse: Oppgave 4 (8 poeng).
Vis løsning

Hva spør oppgaven om? Likningen er lineær og kan løses ved homogen løsning pluss likevektsløsning eller med integrerende faktor.

  1. Skriv standardform
    \[V\prime+0.01V=-0.70\]
  2. Finn likevektsverdien
    Sett \(V\prime=0\): \(0.01V=-0.70\Rightarrow V=-70\).
  3. Finn homogen løsning
    \(V_h=Ce^{-0.01x}\).
  4. Skriv generell løsning
    \[V=Ce^{-0.01x}-70\]
  5. Bruk startverdien
    \(60=C-70\Rightarrow C=130\).
  6. Skriv den bestemte løsningen
    \[V(x)=130e^{-0.01x}-70\]
Den løste modellen starter i 60 liter og avtar mot null innen det fysiske gyldighetsområdet.
Den løste modellen starter i 60 liter og avtar mot null innen det fysiske gyldighetsområdet.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1SolveODE(V\prime=-0.70-0.01V,V(0)=60)
Resultat: \(V(x)=130e^{-0.01x}-70\)
Tolkning: CAS-løsningen oppfyller både differensiallikningen og startbetingelsen.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
V = Function('V')
ode = Eq(diff(V(x),x), -Rational(70,100)-Rational(1,100)*V(x))
solution = dsolve(ode, ics={V(0):60})
formula = 130*exp(-x/100)-70
residual = simplify(diff(formula,x)+Rational(70,100)+Rational(1,100)*formula)

print("Differensiallikning =", ode)
print("Løsning fra SymPy =", solution)
print("Forenklet formel =", formula)
print("Kontroll V(0) =", formula.subs(x,0))
print("ODE-residual =", residual)
print("Grense når x går mot uendelig = -70 (matematisk likevekt)")

assert simplify(solution.rhs-formula) == 0
assert formula.subs(x,0) == 60
assert residual == 0
Kjørt utskriftDifferensiallikning = Eq(Derivative(V(x), x), -V(x)/100 - 7/10)
Løsning fra SymPy = Eq(V(x), -70 + 130*exp(-x/100))
Forenklet formel = -70 + 130*exp(-x/100)
Kontroll V(0) = 60
ODE-residual = 0
Grense når x går mot uendelig = -70 (matematisk likevekt)

Fasit: \(V(x)=130e^{-0.01x}-70\).

Vanlig feil: Å få \(+70\) som konstantledd eller å bruke \(e^{+0.01x}\), som ville gitt vekst.
Sensorpunkt: Sensor ser etter korrekt lineær løsning og bruk av startbetingelsen.
Del 2 / Oppgave 4cEvaluering av modell

Oppgave 4c

Oppgave: Hvor mye bensin er det på tanken etter at Sverre har kjørt 40 mil?
Original poengangivelse: Oppgave 4 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter \(x=40\) inn i den bestemte løsningen og avrunder hensiktsmessig.

  1. Bruk løsningen
    \(V(x)=130e^{-0.01x}-70\).
  2. Sett inn 40
    \[V(40)=130e^{-0.4}-70\]
  3. Beregn eksponentialleddet
    \(e^{-0.4}\approx0.670320\).
  4. Multipliser
    \(130e^{-0.4}\approx87.1416\).
  5. Trekk fra 70
    \(V(40)\approx17.1416\).
  6. Oppgi svar med enhet
    Det er omtrent 17,1 liter igjen.
Punktet ved x = 40 viser omtrent 17,14 liter.
Punktet ved x = 40 viser omtrent 17,14 liter.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Numeric(130*exp(-0.01*40)-70)
Resultat: \(17.1416\)
Tolkning: CAS evaluerer den løste bensinmodellen etter 40 mil.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import exp, N

V40 = 130*exp(-0.4)-70

print("V(40) = 130*exp(-0.4)-70")
print("Eksakt SymPy-uttrykk =", V40)
print("Numerisk verdi =", N(V40, 15), "liter")
print("Avrundet til én desimal =", round(float(V40),1), "liter")
print("Bensin brukt eller lekket =", N(60-V40,15), "liter")
print("Kontroll: V(40) er positiv =", V40 > 0)

assert abs(float(V40)-17.1416059846331) < 1e-12
Kjørt utskriftV(40) = 130*exp(-0.4)-70
Eksakt SymPy-uttrykk = 17.1416059846331
Numerisk verdi = 17.1416059846331 liter
Avrundet til én desimal = 17.1 liter
Bensin brukt eller lekket = 42.8583940153669 liter
Kontroll: V(40) er positiv = True

Fasit: Omtrent \(17.1\) liter.

Vanlig feil: Å beregne \(130e^{-40}-70\) i stedet for å bruke eksponenten \(-0.01\cdot40=-0.4\).
Sensorpunkt: Sensor ser etter riktig innsetting, numerisk beregning og enhet.
Del 2 / Oppgave 4dNullpunkt og lekkasjetap

Oppgave 4d

Oppgave: Hvor langt kan han maksimalt kjøre før tanken er tom? Hvor mye bensin har da forsvunnet på grunn av lekkasjen?
Original poengangivelse: Oppgave 4 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi finner nullpunktet til V. Motoren bruker 0,70 liter per mil, så resten av de 60 literne må ha lekket ut.

  1. Sett tankinnholdet lik null
    \[130e^{-0.01x}-70=0\]
  2. Isoler eksponentialleddet
    \[e^{-0.01x}=\frac7{13}\]
  3. Ta ln
    \(-0.01x=\ln(7/13)\).
  4. Løs for x
    \[x=100\ln(13/7)\approx61.904\text{ mil}\]
  5. Beregn motorforbruket
    \(0.70x\approx43.3327\) liter.
  6. Finn lekkasjen
    \[60-0.70x\approx16.6673\text{ liter}\]
Modellen treffer V = 0 ved omtrent 61,9 mil.
Modellen treffer V = 0 ved omtrent 61,9 mil.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(130*exp(-0.01x)-70=0,x)
Resultat: \(x=100\ln(13/7)\approx61.904\)
Tolkning: Dette er modellens første positive nullpunkt.
260-0.70*100*ln(13/7)
Resultat: \(16.6673\)
Tolkning: Total startmengde minus motorforbruk gir lekkasjetapet.

Digital kontroll i Python (SymPy)

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

x = symbols('x', real=True)
formula = 130*exp(-x/100)-70
x_empty = solve(formula, x)[0]
engine_used = Rational(70,100)*x_empty
leaked = 60-engine_used

print("Løsning av V(x)=0 =", x_empty)
print("Maksimal kjørelengde =", N(x_empty,15), "mil")
print("Motorens forbruk fram til tom tank =", N(engine_used,15), "liter")
print("Bensin lekket ut =", N(leaked,15), "liter")
print("Kontroll motor + lekkasje =", N(engine_used+leaked,15), "liter")
print("Kontroll V(x_empty) =", simplify(formula.subs(x,x_empty)))

assert simplify(formula.subs(x,x_empty)) == 0
assert simplify(engine_used+leaked-60) == 0
Kjørt utskriftLøsning av V(x)=0 = log(2479335110965972533511072884734865136238774467874941149812189099406158699837975560158285662939982180192171594001/3234476509624757991344647769100216810857203198904625400933895331391691459636928060001)
Maksimal kjørelengde = 61.9039208406223 mil
Motorens forbruk fram til tom tank = 43.3327445884356 liter
Bensin lekket ut = 16.6672554115644 liter
Kontroll motor + lekkasje = 60.0000000000000 liter
Kontroll V(x_empty) = 0

Fasit: Maksimal kjørelengde er omtrent \(61.9\) mil, og omtrent \(16.7\) liter har lekket ut.

Vanlig feil: Å si at lekkasjen er \(60-0.70\cdot40\), eller å tolke all tapt bensin som motorforbruk.
Sensorpunkt: Sensor ser etter nullpunktet, motorens samlede forbruk og en korrekt differanseberegning.
Del 2 / Oppgave 4eStykkevis modell med påfylling

Oppgave 4e

Oppgave: Sverre fyller 30 liter, kjører 20 mil, fyller opp igjen til 30 liter og kjører 20 mil til. Hvor mye bensin bruker han totalt?
Original poengangivelse: Oppgave 4 (8 poeng).
Vis løsning

Hva spør oppgaven om? Hver 20-mils etappe starter med 30 liter og følger samme differensiallikning. Derfor er bensintapet likt på de to etappene.

  1. Finn løsningen med startverdi 30
    Generell form er \(V=Ce^{-0.01x}-70\). Fra \(V(0)=30\) får vi \(C=100\).
  2. Skriv etappefunksjonen
    \[V_{30}(x)=100e^{-0.01x}-70\]
  3. Beregn etter 20 mil
    \[V_{30}(20)=100e^{-0.2}-70\approx11.8731\]
  4. Finn forbruk per etappe
    \(30-11.8731\approx18.1269\) liter.
  5. Dobbel for to like etapper
    \[2\cdot18.1269\approx36.2538\]
  6. Oppgi totalen
    Han bruker omtrent 36,3 liter. Av dette går 28 liter til motoren og omtrent 8,25 liter til lekkasje.
Etter 20 mil fylles tanken fra omtrent 11,87 liter opp til 30 liter før etappe to.
Etter 20 mil fylles tanken fra omtrent 11,87 liter opp til 30 liter før etappe to.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
12*(30-(100*exp(-0.01*20)-70))
Resultat: \(36.2538\)
Tolkning: Begge etappene har samme startmengde og varighet, så tapet dobles.

Digital kontroll i Python (SymPy)

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

remaining_after_20 = 100*exp(-Rational(1,5))-70
used_per_leg = 30-remaining_after_20
total_used = 2*used_per_leg
engine_used = Rational(70,100)*40
leaked = total_used-engine_used
refill_amount = 30-remaining_after_20

print("Bensin etter første 20-mils etappe =", N(remaining_after_20,15), "liter")
print("Påfylling opp til 30 liter =", N(refill_amount,15), "liter")
print("Bensin brukt per etappe =", N(used_per_leg,15), "liter")
print("Totalt bensin brukt på 40 mil =", N(total_used,15), "liter")
print("Motorforbruk på 40 mil =", N(engine_used,15), "liter")
print("Lekkasjetap på de to etappene =", N(leaked,15), "liter")
print("Kontroll motor + lekkasje =", N(engine_used+leaked,15), "liter")

assert abs(float(total_used)-36.2538493844036) < 1e-12
assert simplify(engine_used+leaked-total_used) == 0
Kjørt utskriftBensin etter første 20-mils etappe = 11.8730753077982 liter
Påfylling opp til 30 liter = 18.1269246922018 liter
Bensin brukt per etappe = 18.1269246922018 liter
Totalt bensin brukt på 40 mil = 36.2538493844036 liter
Motorforbruk på 40 mil = 28.0000000000000 liter
Lekkasjetap på de to etappene = 8.25384938440363 liter
Kontroll motor + lekkasje = 36.2538493844036 liter

Fasit: Omtrent \(36.3\) liter totalt.

Vanlig feil: Å fortsette den første 60-litersmodellen etter påfyllingen, eller å glemme at andre etappe starter på nytt med 30 liter.
Sensorpunkt: Sensor ser etter ny startverdi, to like etapper og korrekt totalforbruk.