R2 eksamenVår 2022

Matematikk R2 eksamen – vår 2022

ifingo
Norsk (Bokmål)

ifingo · Matematikk R2

Matematikk R2 - eksamen vår 2022 (K06)

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 / Oppgave 1aProduktregel

Oppgave 1a

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

Hva spør oppgaven om? Vi skal derivere et produkt av den lineære faktoren 3x og sinusfunksjonen.

  1. Del funksjonen i to faktorer
    Sett \(u(x)=3x\) og \(v(x)=\sin x\).
  2. Deriver faktorene
    \(u\prime(x)=3\) og \(v\prime(x)=\cos x\).
  3. Bruk produktregelen
    \[(uv)\prime=u\prime v+uv\prime\]
  4. Sett inn
    \[f\prime(x)=3\sin x+3x\cos x\]
  5. Faktoriser om ønskelig
    \[f\prime(x)=3(\sin x+x\cos x)\]
  6. Kontroller strukturen
    Begge produktleddene må være med; det er ikke nok å derivere faktorene og multiplisere.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Derivative(3*x*sin(x),x)
Resultat: \(3\sin x+3x\cos x\)
Tolkning: CAS bekrefter begge leddene fra produktregelen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, diff, simplify
x = symbols('x', real=True)
f = 3*x*sin(x)
derivative = diff(f, x)
expected = 3*sin(x) + 3*x*cos(x)
print("f(x) =", f)
print("f'(x) =", derivative)
print("Forventet form =", expected)
print("Symbolsk kontroll =", simplify(derivative - expected))
print("Kontroll ved x=1 =", derivative.subs(x, 1).evalf(12))
assert simplify(derivative - expected) == 0
Kjørt utskriftf(x) = 3*x*sin(x)
f'(x) = 3*x*cos(x) + 3*sin(x)
Forventet form = 3*x*cos(x) + 3*sin(x)
Symbolsk kontroll = 0
Kontroll ved x=1 = 4.14531987203

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

Vanlig feil: Å skrive \(3\cos x\) og glemme produktregelen.
Sensorpunkt: Sensor ser etter to produktledd og korrekt derivert av sinus.
Del 1 / Oppgave 1bTrigonometrisk forenkling og derivasjon

Oppgave 1b

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

Hva spør oppgaven om? Vi kan bruke kvotientregelen, men en trigonometrisk forenkling gir den ryddigste løsningen. Vi må samtidig huske definisjonsområdet.

  1. Oppgi definisjonsområdet
    Originaluttrykket krever \(\cos x\ne0\), altså \(x\ne \frac\pi2+k\pi\).
  2. Bruk dobbeltvinkelformelen
    \(\sin(2x)=2\sin x\cos x\).
  3. Forkort på definisjonsområdet
    \[g(x)=\frac{2\sin x\cos x}{\cos x}=2\sin x\]
  4. Deriver
    \[g\prime(x)=2\cos x\]
  5. Behold domenebegrensningen
    Den forenklede formelen kan ikke brukes til å utvide den opprinnelige funksjonens domene.
  6. Kontroller med kvotientregelen
    Direkte derivasjon gir et uttrykk som trigonometrisk forenkles til samme svar.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1TrigSimplify(sin(2x)/cos(x))
Resultat: \(2\sin x\)
2Derivative(sin(2x)/cos(x),x)
Resultat: \(2\cos x\) på definisjonsområdet
Tolkning: CAS bekrefter forenklingen og den deriverte, mens domenet må vurderes matematisk.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, diff, trigsimp, simplify, pi
x = symbols('x', real=True)
g = sin(2*x)/cos(x)
simplified = trigsimp(g)
raw_derivative = diff(g, x)
expected = 2*cos(x)
print("g(x) =", g)
print("Trigonometrisk forenklet =", simplified)
print("Direkte derivert =", raw_derivative)
print("Forenklet derivert =", trigsimp(raw_derivative))
print("Kontroll mot 2*cos(x) =", simplify(trigsimp(raw_derivative - expected)))
print("Utelukket eksempel x=pi/2: cos(x) =", cos(pi/2))
assert simplify(trigsimp(raw_derivative - expected)) == 0
Kjørt utskriftg(x) = sin(2*x)/cos(x)
Trigonometrisk forenklet = 2*sin(x)
Direkte derivert = sin(x)*sin(2*x)/cos(x)**2 + 2*cos(2*x)/cos(x)
Forenklet derivert = 2*cos(x)
Kontroll mot 2*cos(x) = 0
Utelukket eksempel x=pi/2: cos(x) = 0

Fasit: \(g\prime(x)=2\cos x\), for \(x\ne\frac\pi2+k\pi\).

Vanlig feil: Å forkorte med cos x uten å nevne at cos x kan være 0.
Sensorpunkt: Sensor ser etter korrekt derivasjon og bevaring av opprinnelig definisjonsområde.
Del 1 / Oppgave 2aUbestemt integral

Oppgave 2a

Oppgave: Bestem integralet \(\displaystyle\int(e^x-\sin x)\,dx\).
Original poengangivelse: Oppgave 2 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi skal finne en antiderivert ledd for ledd og ta med integrasjonskonstanten.

  1. Del opp integralet
    \[\int e^x dx-\int\sin x\,dx\]
  2. Integrer eksponentialleddet
    \(\int e^x dx=e^x\).
  3. Integrer sinusleddet
    \(\int\sin x\,dx=-\cos x\).
  4. Ta hensyn til minustegnet
    \(-\int\sin x\,dx=+\cos x\).
  5. Sett sammen
    \[e^x+\cos x+C\]
  6. Deriver tilbake
    \((e^x+\cos x)\prime=e^x-\sin x\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(exp(x)-sin(x),x)
Resultat: \(e^x+\cos x\)
Tolkning: CAS gir én stamfunksjon; vi legger til konstanten C.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, exp, sin, cos, integrate, diff, simplify
x = symbols('x', real=True)
integrand = exp(x) - sin(x)
F = integrate(integrand, x)
print("Integrand =", integrand)
print("Stamfunksjon =", F)
print("Derivert tilbake =", diff(F, x))
print("Kontroll =", simplify(diff(F, x) - integrand))
assert simplify(diff(F, x) - integrand) == 0
Kjørt utskriftIntegrand = exp(x) - sin(x)
Stamfunksjon = exp(x) + cos(x)
Derivert tilbake = exp(x) - sin(x)
Kontroll = 0

Fasit: \(e^x+\cos x+C\).

Vanlig feil: Å skrive \(e^x-\cos x+C\); minustegnet foran sinus endrer fortegn.
Sensorpunkt: Sensor ser etter korrekt stamfunksjon og +C.
Del 1 / Oppgave 2bBestemt integral

Oppgave 2b

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

Hva spør oppgaven om? Vi kan bruke substitusjon eller kjenne igjen at den deriverte av sin²x er 2 sin x cos x.

  1. Velg substitusjon
    Sett \(u=\sin x\).
  2. Finn differensialet
    \(du=\cos x\,dx\).
  3. Bytt grenser
    Når \(x=0\), er \(u=0\); når \(x=\pi/4\), er \(u=\sqrt2/2\).
  4. Integrer
    \[\int_0^{\sqrt2/2}u\,du=\left[\frac{u^2}{2}\right]_0^{\sqrt2/2}\]
  5. Beregn
    \[\frac12\left(\frac{\sqrt2}{2}\right)^2=\frac14\]
  6. Kontroller fortegn
    Integranden er ikke-negativ på intervallet, så positivt svar er rimelig.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(sin(x)*cos(x),x,0,pi/4)
Resultat: \(1/4\)
Tolkning: CAS bekrefter den eksakte integralverdien.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, pi, integrate, Rational, simplify
x = symbols('x', real=True)
integrand = sin(x)*cos(x)
value = integrate(integrand, (x, 0, pi/4))
F = integrate(integrand, x)
print("Integrand =", integrand)
print("Stamfunksjon =", F)
print("Bestemt integral =", value)
print("Desimalverdi =", value.evalf(12))
print("Kontroll mot 1/4 =", simplify(value - Rational(1,4)))
assert value == Rational(1,4)
Kjørt utskriftIntegrand = sin(x)*cos(x)
Stamfunksjon = sin(x)**2/2
Bestemt integral = 1/4
Desimalverdi = 0.250000000000
Kontroll mot 1/4 = 0

Fasit: \(\displaystyle\frac14\).

Vanlig feil: Å glemme å kvadrere den øvre u-grensen eller miste faktoren 1/2.
Sensorpunkt: Sensor ser etter korrekt grensebytte eller korrekt bruk av stamfunksjon.
Del 1 / Oppgave 3Trigonometrisk likning

Oppgave 3

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

Hva spør oppgaven om? Vi skal løse en cosinuslikning og finne alle løsninger som ligger i det oppgitte intervallet.

  1. Isoler cosinus
    \[\cos(3x)=-\frac{\sqrt3}{2}\]
  2. Finn grunnvinklene
    Cosinus er \(-\sqrt3/2\) ved \(3x=5\pi/6\) og \(3x=7\pi/6\) modulo \(2\pi\).
  3. Ta med periodisiteten
    \[3x=\frac{5\pi}{6}+2k\pi\quad\text{eller}\quad3x=\frac{7\pi}{6}+2k\pi\]
  4. Avgrens vinkelen
    Fordi \(x\in[0,\pi]\), ligger \(3x\in[0,3\pi]\).
  5. List gyldige 3x-verdier
    \(5\pi/6,\ 7\pi/6,\ 17\pi/6\).
  6. Del på 3
    \[x=\frac{5\pi}{18},\ \frac{7\pi}{18},\ \frac{17\pi}{18}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(2*cos(3x)=-sqrt(3),0<=x<=pi)
Resultat: \(x=5\pi/18,\ 7\pi/18,\ 17\pi/18\)
Tolkning: CAS-løsningen må filtreres til det oppgitte intervallet.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, cos, sqrt, pi, Eq, solveset, Interval, FiniteSet, simplify
x = symbols('x', real=True)
solution_set = solveset(Eq(2*cos(3*x), -sqrt(3)), x, domain=Interval(0, pi))
expected = FiniteSet(5*pi/18, 7*pi/18, 17*pi/18)
print("Likning: 2*cos(3*x) = -sqrt(3)")
print("Intervall =", Interval(0, pi))
print("Løsningsmengde =", solution_set)
for value in sorted(solution_set, key=lambda z: float(z)):
    print("Kontroll x =", value, " gir venstreside =", simplify(2*cos(3*value)))
assert solution_set == expected
Kjørt utskriftLikning: 2*cos(3*x) = -sqrt(3)
Intervall = Interval(0, pi)
Løsningsmengde = {5*pi/18, 7*pi/18, 17*pi/18}
Kontroll x = 5*pi/18  gir venstreside = -sqrt(3)
Kontroll x = 7*pi/18  gir venstreside = -sqrt(3)
Kontroll x = 17*pi/18  gir venstreside = -sqrt(3)

Fasit: \(x\in\left\{\frac{5\pi}{18},\frac{7\pi}{18},\frac{17\pi}{18}\right\}\).

Vanlig feil: Å stoppe etter de to første løsningene og glemme at 3x går helt til 3π.
Sensorpunkt: Sensor ser etter alle tre løsninger og korrekt intervallkontroll.
Del 1 / Oppgave 4Lineær differensiallikning

Oppgave 4

Oppgave: Løs differensiallikningen \(y\prime+2y=4\), \(y(0)=1\).
Original poengangivelse: Oppgave 4 (2 poeng).
Vis løsning

Hva spør oppgaven om? Vi skal løse en lineær førsteordens differensiallikning og bruke initialbetingelsen.

  1. Finn likevektsløsningen
    En konstant løsning oppfyller \(2y=4\), altså \(y=2\).
  2. Løs den homogene likningen
    \(y_h\prime+2y_h=0\) gir \(y_h=Ce^{-2x}\).
  3. Skriv generell løsning
    \[y=2+Ce^{-2x}\]
  4. Bruk initialbetingelsen
    \[1=2+C\]
  5. Finn konstanten
    \(C=-1\).
  6. Skriv og kontroller løsningen
    \[y(x)=2-e^{-2x}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1SolveODE(y'+2y=4,y(0)=1)
Resultat: \(y=2-e^{-2x}\)
Tolkning: CAS bekrefter både differensiallikningen og initialverdien.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Function, Eq, diff, dsolve, exp, simplify
x = symbols('x', real=True)
y = Function('y')
ode = Eq(diff(y(x), x) + 2*y(x), 4)
solution = dsolve(ode, ics={y(0): 1})
expected = 2 - exp(-2*x)
residual = simplify(diff(expected, x) + 2*expected - 4)
print("Differensiallikning =", ode)
print("Løsning fra SymPy =", solution)
print("Foreslått y(x) =", expected)
print("ODE-residual =", residual)
print("Initialverdi y(0) =", expected.subs(x, 0))
assert residual == 0
assert expected.subs(x, 0) == 1
Kjørt utskriftDifferensiallikning = Eq(2*y(x) + Derivative(y(x), x), 4)
Løsning fra SymPy = Eq(y(x), 2 - exp(-2*x))
Foreslått y(x) = 2 - exp(-2*x)
ODE-residual = 0
Initialverdi y(0) = 1

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

Vanlig feil: Å glemme den partikulære konstantløsningen y=2.
Sensorpunkt: Sensor ser etter generell løsning, initialbetingelse og sluttkontroll.
Del 1 / Oppgave 5aAreal og logaritme

Oppgave 5a

Oppgave: Funksjonen er \(f(x)=1/x\), \(x\ge1\). Bestem \(k>1\) slik at arealet mellom grafen, x-aksen, \(x=1\) og \(x=k\) blir 2.
Original poengangivelse: Oppgave 5 (4 poeng).
Vis løsning

Hva spør oppgaven om? Arealet er et bestemt integral. Vi løser deretter en eksponentiallikning.

  1. Sett opp arealet
    \[A=\int_1^k\frac1x\,dx\]
  2. Integrer
    \[A=[\ln x]_1^k=\ln k-\ln1\]
  3. Bruk ln 1=0
    \(A=\ln k\).
  4. Sett arealet lik 2
    \[\ln k=2\]
  5. Eksponentier
    \[k=e^2\]
  6. Kontroller betingelsen
    \(e^2>1\), og \(\int_1^{e^2}1/x\,dx=2\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(Integral(1/x,x,1,k)=2,k)
Resultat: \(k=e^2\)
Tolkning: CAS løser areallikningen eksakt.
Visualisering for Oppgave 5a
Arealet under grafen er ln(k), og blir 2 når k=e².

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, integrate, log, exp, Eq, solve, simplify
x = symbols('x', positive=True)
k = symbols('k', positive=True)
area = integrate(1/x, (x, 1, k))
solutions = solve(Eq(area, 2), k)
print("Areal som funksjon av k =", area)
print("Likning =", Eq(area, 2))
print("Løsninger =", solutions)
print("Kontroll ved k=e**2 =", simplify(area.subs(k, exp(2))))
print("Desimalverdi av k =", exp(2).evalf(12))
assert solutions == [exp(2)]
Kjørt utskriftAreal som funksjon av k = log(k)
Likning = Eq(log(k), 2)
Løsninger = [exp(2)]
Kontroll ved k=e**2 = 2
Desimalverdi av k = 7.38905609893

Fasit: \(k=e^2\approx7{,}389\).

Vanlig feil: Å bruke 1/x² i arealintegralet; kvadrering hører til volumoppgaven.
Sensorpunkt: Sensor ser etter korrekt integral og eksponentiering av ln k=2.
Del 1 / Oppgave 5bOmdreiningsvolum

Oppgave 5b

Oppgave: Bestem volumet når området dreies 360° om x-aksen og \(k=4\).
Original poengangivelse: Oppgave 5 (4 poeng).
Vis løsning

Hva spør oppgaven om? Ved skivemetoden er radiusen f(x)=1/x, og tverrsnittsarealet er πf(x)².

  1. Sett opp skivemetoden
    \[V=\pi\int_1^4(f(x))^2\,dx\]
  2. Sett inn funksjonen
    \[V=\pi\int_1^4\frac1{x^2}\,dx\]
  3. Finn en stamfunksjon
    \(\int x^{-2}dx=-x^{-1}\).
  4. Sett inn grensene
    \[V=\pi\left[-\frac1x\right]_1^4\]
  5. Beregn
    \[V=\pi\left(-\frac14+1\right)=\frac{3\pi}{4}\]
  6. Kontroller enheten
    Volumet må oppgis i kubikkenheter.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1pi*Integral((1/x)^2,x,1,4)
Resultat: \(3\pi/4\)
Tolkning: CAS bekrefter skiveintegralet.
Visualisering for Oppgave 5b
Tverrsnittet har radius 1/x; skivemetoden bruker kvadratet av radiusen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, pi, integrate, Rational, simplify
x = symbols('x', positive=True)
radius = 1/x
volume = pi*integrate(radius**2, (x, 1, 4))
expected = 3*pi/4
print("Radius r(x) =", radius)
print("Tverrsnittsareal =", pi*radius**2)
print("Volum =", volume)
print("Desimalverdi =", volume.evalf(12))
print("Kontroll =", simplify(volume - expected))
assert simplify(volume - expected) == 0
Kjørt utskriftRadius r(x) = 1/x
Tverrsnittsareal = pi/x**2
Volum = 3*pi/4
Desimalverdi = 2.35619449019
Kontroll = 0

Fasit: \(V=\frac{3\pi}{4}\) kubikkenheter.

Vanlig feil: Å integrere 1/x i stedet for (1/x)² i volumformelen.
Sensorpunkt: Sensor ser etter π, kvadrert radius og korrekte grenser.
Del 1 / Oppgave 6aPlanlikning

Oppgave 6a

Oppgave: Planet \(\alpha\) inneholder \(A(2,3,-7)\), \(B(-2,1,-3)\) og \(C(3,5,-5)\). Begrunn at \(2x-2y+z+9=0\) er en likning for planet.
Original poengangivelse: Oppgave 6 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi må vise at alle tre punktene ligger i planet, og at de bestemmer et plan.

  1. Les av normalvektoren
    Likningen har normalvektor \(\vec n=(2,-2,1)\).
  2. Kontroller A
    \(2\cdot2-2\cdot3-7+9=0\).
  3. Kontroller B
    \(2(-2)-2\cdot1-3+9=0\).
  4. Kontroller C
    \(2\cdot3-2\cdot5-5+9=0\).
  5. Vis at punktene ikke er kollineære
    \(\overrightarrow{AB}=(-4,-2,4)\) og \(\overrightarrow{AC}=(1,2,2)\) er ikke parallelle.
  6. Konkluder
    Tre ikke-kollineære punkter i likningen bestemmer nettopp planet α.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Substitute(2x-2y+z+9,{x=2,y=3,z=-7})
Resultat: 0
2Cross(B-A,C-A)
Resultat: \((-12,12,-6)\ne\vec0\)
Tolkning: Punktkontrollene og kryssproduktet bekrefter planlikningen.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix
A = Matrix([2, 3, -7])
B = Matrix([-2, 1, -3])
C = Matrix([3, 5, -5])
n = Matrix([2, -2, 1])
def plane_value(P):
    x, y, z = P
    return 2*x - 2*y + z + 9
AB = B - A
AC = C - A
cross = AB.cross(AC)
print("Planverdi i A =", plane_value(A))
print("Planverdi i B =", plane_value(B))
print("Planverdi i C =", plane_value(C))
print("AB =", AB.T)
print("AC =", AC.T)
print("AB x AC =", cross.T)
print("Kryssprodukt som multiplum av n =", cross/(-6))
assert plane_value(A) == plane_value(B) == plane_value(C) == 0
assert cross != Matrix([0,0,0])
Kjørt utskriftPlanverdi i A = 0
Planverdi i B = 0
Planverdi i C = 0
AB = Matrix([[-4, -2, 4]])
AC = Matrix([[1, 2, 2]])
AB x AC = Matrix([[-12, 12, -6]])
Kryssprodukt som multiplum av n = Matrix([[2], [-2], [1]])

Fasit: Alle tre punktene ligger i planet, og de er ikke kollineære; derfor er likningen riktig.

Vanlig feil: Å kontrollere bare ett punkt.
Sensorpunkt: Sensor ser etter tre punktinnsettinger eller en normalvektorutledning som entydig bestemmer planet.
Del 1 / Oppgave 6bLinje parallell med plan

Oppgave 6b

Oppgave: Linjen \(\ell\) går gjennom \(P(3,1,-2)\) og \(Q(6,3,-4)\). Vis at linjen er parallell med planet \(\alpha\).
Original poengangivelse: Oppgave 6 (6 poeng).
Vis løsning

Hva spør oppgaven om? En linje er parallell med et plan når linjens retningsvektor står vinkelrett på planets normalvektor.

  1. Finn retningsvektoren
    \[\vec v=\overrightarrow{PQ}=(3,2,-2)\]
  2. Bruk normalvektoren
    \(\vec n=(2,-2,1)\).
  3. Beregn skalarproduktet
    \[\vec v\cdot\vec n=3\cdot2+2(-2)+(-2)\cdot1=0\]
  4. Tolk resultatet
    \(\vec v\perp\vec n\), så linjeretningen er parallell med planet.
  5. Kontroller at linjen ikke ligger i planet
    For P er \(2\cdot3-2\cdot1-2+9=11\ne0\).
  6. Konkluder
    Linjen er strengt parallell med planet og har konstant positiv avstand til det.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Dot((3,2,-2),(2,-2,1))
Resultat: 0
Tolkning: Null skalarprodukt bekrefter parallelliteten.
Visualisering for Oppgave 6b
Retningsvektoren til linjen står vinkelrett på planets normalvektor.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix
P = Matrix([3, 1, -2])
Q = Matrix([6, 3, -4])
v = Q - P
n = Matrix([2, -2, 1])
dot_product = v.dot(n)
plane_value_P = 2*P[0] - 2*P[1] + P[2] + 9
print("Retningsvektor PQ =", v.T)
print("Normalvektor n =", n.T)
print("Skalarprodukt v dot n =", dot_product)
print("Planverdi i P =", plane_value_P)
print("Konklusjon: retningen er parallell med planet, og P ligger ikke i planet")
assert dot_product == 0
assert plane_value_P != 0
Kjørt utskriftRetningsvektor PQ = Matrix([[3, 2, -2]])
Normalvektor n = Matrix([[2, -2, 1]])
Skalarprodukt v dot n = 0
Planverdi i P = 11
Konklusjon: retningen er parallell med planet, og P ligger ikke i planet

Fasit: \(\ell\parallel\alpha\), fordi \((3,2,-2)\cdot(2,-2,1)=0\).

Vanlig feil: Å bruke punktet P som en vektor og ta feil skalarprodukt.
Sensorpunkt: Sensor ser etter korrekt retningsvektor og normalvektor.
Del 1 / Oppgave 6cAvstand fra linje til plan

Oppgave 6c

Oppgave: Bestem avstanden fra linjen \(\ell\) til planet \(\alpha\).
Original poengangivelse: Oppgave 6 (6 poeng).
Vis løsning

Hva spør oppgaven om? Når linjen er parallell med planet, er avstanden den samme fra ethvert punkt på linjen til planet.

  1. Velg et punkt på linjen
    Bruk \(P(3,1,-2)\).
  2. Skriv avstandsformelen
    For \(ax+by+cz+d=0\): \(d=|ax_0+by_0+cz_0+d|/\sqrt{a^2+b^2+c^2}\).
  3. Sett inn telleren
    \[|2\cdot3-2\cdot1-2+9|=11\]
  4. Beregn normalen
    \[\sqrt{2^2+(-2)^2+1^2}=3\]
  5. Divider
    \[d=\frac{11}{3}\]
  6. Kontroller med Q
    Punktet Q gir samme tellerverdi 11, som forventet for en parallell linje.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Distance(P,2x-2y+z+9=0)
Resultat: \(11/3\)
Tolkning: CAS bruker standardformelen for punkt-plan-avstand.
Visualisering for Oppgave 6c
Retningsvektoren til linjen står vinkelrett på planets normalvektor.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import Matrix, sqrt, Rational, simplify
P = Matrix([3, 1, -2])
Q = Matrix([6, 3, -4])
n = Matrix([2, -2, 1])
def numerator(X):
    return abs(2*X[0] - 2*X[1] + X[2] + 9)
distance_P = simplify(numerator(P)/sqrt(n.dot(n)))
distance_Q = simplify(numerator(Q)/sqrt(n.dot(n)))
print("Teller for P =", numerator(P))
print("Lengde av normalvektor =", sqrt(n.dot(n)))
print("Avstand fra P =", distance_P)
print("Avstand fra Q =", distance_Q)
print("Desimalverdi =", distance_P.evalf(12))
assert distance_P == Rational(11,3)
assert distance_Q == distance_P
Kjørt utskriftTeller for P = 11
Lengde av normalvektor = 3
Avstand fra P = 11/3
Avstand fra Q = 11/3
Desimalverdi = 3.66666666667

Fasit: Avstanden er \(\frac{11}{3}\) lengdeenheter.

Vanlig feil: Å glemme absoluttverdien eller kvadratroten i nevneren.
Sensorpunkt: Sensor ser etter punkt-plan-formelen og bruk av at linjen er parallell.
Del 1 / Oppgave 7aTrigonometriske nullpunkter

Oppgave 7a

Oppgave: Funksjonen er \(f(x)=2\cos^2x+\sin(2x)\), \(x\in(-\pi,\pi)\). Bestem nullpunktene.
Original poengangivelse: Oppgave 7 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi faktoriserer funksjonen ved å bruke sin(2x)=2 sin x cos x.

  1. Bruk dobbeltvinkelformelen
    \[f(x)=2\cos^2x+2\sin x\cos x\]
  2. Faktoriser
    \[f(x)=2\cos x(\cos x+\sin x)\]
  3. Løs første faktor
    \(\cos x=0\) gir \(x=-\pi/2,\pi/2\).
  4. Løs andre faktor
    \(\cos x+\sin x=0\) gir \(\tan x=-1\).
  5. Filtrer til intervallet
    Fra \(x=-\pi/4+k\pi\) får vi \(-\pi/4\) og \(3\pi/4\).
  6. Oppgi alle nullpunktene
    \[-\frac\pi2,\ -\frac\pi4,\ \frac\pi2,\ \frac{3\pi}{4}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Factor(2*cos(x)^2+sin(2x))
Resultat: \(2\cos x(\cos x+\sin x)\)
2Solve(f(x)=0,-pi<x<pi)
Resultat: \(-\pi/2,-\pi/4,\pi/2,3\pi/4\)
Tolkning: CAS bekrefter både faktorisering og intervallfiltrering.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, cos, sin, pi, Eq, solveset, Interval, FiniteSet, trigsimp, factor
x = symbols('x', real=True)
f = 2*cos(x)**2 + sin(2*x)
factored = 2*cos(x)*(cos(x) + sin(x))
solutions = solveset(Eq(f, 0), x, domain=Interval.open(-pi, pi))
expected = FiniteSet(-pi/2, -pi/4, pi/2, 3*pi/4)
print("f(x) =", f)
print("Faktorisert form =", factored)
print("Kontroll av faktorisering =", trigsimp(f - factored))
print("Nullpunkter i (-pi, pi) =", solutions)
for root in sorted(solutions, key=lambda z: float(z)):
    print("f(", root, ") =", trigsimp(f.subs(x, root)))
assert trigsimp(f - factored) == 0
assert solutions == expected
Kjørt utskriftf(x) = sin(2*x) + 2*cos(x)**2
Faktorisert form = 2*(sin(x) + cos(x))*cos(x)
Kontroll av faktorisering = 0
Nullpunkter i (-pi, pi) = {-pi/2, -pi/4, pi/2, 3*pi/4}
f( -pi/2 ) = 0
f( -pi/4 ) = 0
f( pi/2 ) = 0
f( 3*pi/4 ) = 0

Fasit: Nullpunktene er \(x=-\pi/2,-\pi/4,\pi/2,3\pi/4\).

Vanlig feil: Å dele på cos x og dermed miste løsningene cos x=0.
Sensorpunkt: Sensor ser etter faktorisering og alle fire nullpunkter.
Del 1 / Oppgave 7bAmplitudeform

Oppgave 7b

Oppgave: Vis at \(f(x)=\sqrt2\sin\left(2x+\frac\pi4\right)+1\).
Original poengangivelse: Oppgave 7 (8 poeng).
Vis løsning

Hva spør oppgaven om? Vi omskriver cos²x og bruker addisjonsformelen for sinus.

  1. Bruk halvvinkelformelen
    \(2\cos^2x=1+\cos(2x)\).
  2. Sett inn
    \[f(x)=1+\cos(2x)+\sin(2x)\]
  3. Utvid målformen
    \[\sqrt2\sin(2x+\pi/4)=\sqrt2(\sin2x\cos\pi/4+\cos2x\sin\pi/4)\]
  4. Bruk sin og cos av π/4
    Begge er \(\sqrt2/2\).
  5. Forenkle
    \[\sqrt2\sin(2x+\pi/4)=\sin2x+\cos2x\]
  6. Konkluder
    \[f(x)=\sqrt2\sin(2x+\pi/4)+1\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1TrigExpand(sqrt(2)*sin(2x+pi/4)+1)
Resultat: \(1+\sin(2x)+\cos(2x)\)
Tolkning: CAS bekrefter identiteten symbolsk.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, sqrt, pi, trigsimp, expand_trig, simplify
x = symbols('x', real=True)
f = 2*cos(x)**2 + sin(2*x)
target = sqrt(2)*sin(2*x + pi/4) + 1
print("Opprinnelig f(x) =", f)
print("Målform =", target)
print("Trigonometrisk utvidet målform =", expand_trig(target))
print("Symbolsk differanse =", trigsimp(f - target))
print("Numerisk kontroll ved x=0.7 =", (f-target).subs(x, 0.7).evalf(15))
assert trigsimp(f - target) == 0
Kjørt utskriftOpprinnelig f(x) = sin(2*x) + 2*cos(x)**2
Målform = sqrt(2)*sin(2*x + pi/4) + 1
Trigonometrisk utvidet målform = sqrt(2)*(sqrt(2)*(2*cos(x)**2 - 1)/2 + sqrt(2)*sin(x)*cos(x)) + 1
Symbolsk differanse = 0
Numerisk kontroll ved x=0.7 = 1.26739133472587e-16

Fasit: Identiteten er vist: \(f(x)=\sqrt2\sin(2x+\pi/4)+1\).

Vanlig feil: Å få amplituden 2 i stedet for √2.
Sensorpunkt: Sensor ser etter korrekt halvvinkelformel og addisjonsformel.
Del 1 / Oppgave 7cTopp- og bunnpunkter

Oppgave 7c

Oppgave: Bestem toppunktene og bunnpunktene på grafen til \(f\) i \((-\pi,\pi)\).
Original poengangivelse: Oppgave 7 (8 poeng).
Vis løsning

Hva spør oppgaven om? Amplitudeformen gir ekstremverdiene direkte; vi løser deretter for x-koordinatene.

  1. Les av amplitude og likevektslinje
    Amplituden er \(\sqrt2\), og likevektslinjen er \(y=1\).
  2. Finn maksimal verdi
    \(f_{\max}=1+\sqrt2\) når sinusleddet er 1.
  3. Løs for maksimum
    \(2x+\pi/4=\pi/2+2k\pi\), altså \(x=\pi/8+k\pi\).
  4. Filtrer maksimumspunktene
    \(x=-7\pi/8\) og \(x=\pi/8\).
  5. Finn minimum
    \(f_{\min}=1-\sqrt2\), med \(x=5\pi/8+k\pi\).
  6. Filtrer minimumspunktene
    \(x=-3\pi/8\) og \(x=5\pi/8\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Extremum(sqrt(2)*sin(2x+pi/4)+1,-pi<x<pi)
Resultat: Topp: \((-7\pi/8,1+\sqrt2),(\pi/8,1+\sqrt2)\); bunn: \((-3\pi/8,1-\sqrt2),(5\pi/8,1-\sqrt2)\)
Tolkning: CAS kan kontrollere ekstrempunktene ved å løse \(f\prime(x)=0\) og klassifisere dem.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, sqrt, pi, diff, simplify
x = symbols('x', real=True)
f = sqrt(2)*sin(2*x + pi/4) + 1
max_x = [-7*pi/8, pi/8]
min_x = [-3*pi/8, 5*pi/8]
print("f'(x) =", diff(f, x))
print("Toppunkter:")
for value in max_x:
    print((value, simplify(f.subs(x, value))), " f'' =", simplify(diff(f,x,2).subs(x,value)))
print("Bunnpunkter:")
for value in min_x:
    print((value, simplify(f.subs(x, value))), " f'' =", simplify(diff(f,x,2).subs(x,value)))
assert all(simplify(f.subs(x,v)-(1+sqrt(2))) == 0 for v in max_x)
assert all(simplify(f.subs(x,v)-(1-sqrt(2))) == 0 for v in min_x)
Kjørt utskriftf'(x) = 2*sqrt(2)*cos(2*x + pi/4)
Toppunkter:
(-7*pi/8, 1 + sqrt(2))  f'' = -4*sqrt(2)
(pi/8, 1 + sqrt(2))  f'' = -4*sqrt(2)
Bunnpunkter:
(-3*pi/8, 1 - sqrt(2))  f'' = 4*sqrt(2)
(5*pi/8, 1 - sqrt(2))  f'' = 4*sqrt(2)

Fasit: Toppunkter: \((-7\pi/8,1+\sqrt2)\), \((\pi/8,1+\sqrt2)\). Bunnpunkter: \((-3\pi/8,1-\sqrt2)\), \((5\pi/8,1-\sqrt2)\).

Vanlig feil: Å oppgi bare ekstremverdiene og ikke koordinatene.
Sensorpunkt: Sensor ser etter alle fire ekstrempunkter innenfor intervallet.
Del 1 / Oppgave 7dGrafskisse

Oppgave 7d

Oppgave: Lag en skisse av grafen til \(f\) på \((-\pi,\pi)\).
Original poengangivelse: Oppgave 7 (8 poeng).
Vis løsning

Hva spør oppgaven om? En korrekt skisse skal vise periode, midtlinje, amplitude, nullpunkter og ekstrempunkter.

  1. Finn perioden
    Argumentet er 2x, så perioden er \(T=\pi\).
  2. Tegn midtlinjen
    Likevektslinjen er \(y=1\).
  3. Marker ekstremverdiene
    Grafen svinger mellom \(1-\sqrt2\) og \(1+\sqrt2\).
  4. Marker nullpunktene
    \(-\pi/2,-\pi/4,\pi/2,3\pi/4\).
  5. Marker topp- og bunnpunkter
    Bruk koordinatene fra del c.
  6. Trekk en jevn sinuskurve
    Kurven gjentar seg med periode π og endepunktene er ikke med i domenet.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1f(x)=sqrt(2)*sin(2x+pi/4)+1
Resultat: Graf med periode π, amplitude √2 og midtlinje y=1
Tolkning: Graftegneren bekrefter alle beregnede kjennetegn.
Visualisering for Oppgave 7d
Kontrollskisse med nullpunkter, toppunkter og bunnpunkter markert.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, sqrt, pi, diff, solveset, Eq, Interval
x = symbols('x', real=True)
f = sqrt(2)*sin(2*x + pi/4) + 1
roots = solveset(Eq(f,0), x, domain=Interval.open(-pi,pi))
critical = solveset(Eq(diff(f,x),0), x, domain=Interval.open(-pi,pi))
print("Periode =", pi)
print("Midtlinje y = 1")
print("Verdiområde = [", 1-sqrt(2), ",", 1+sqrt(2), "]")
print("Nullpunkter =", roots)
print("Stasjonære x-verdier =", critical)
for v in sorted(critical, key=lambda z: float(z)):
    print("Punkt =", (v, f.subs(x,v).simplify()))
assert len(roots) == 4
assert len(critical) == 4
Kjørt utskriftPeriode = pi
Midtlinje y = 1
Verdiområde = [ 1 - sqrt(2) , 1 + sqrt(2) ]
Nullpunkter = {-pi/2, -pi/4, pi/2, 3*pi/4}
Stasjonære x-verdier = {-7*pi/8, -3*pi/8, pi/8, 5*pi/8}
Punkt = (-7*pi/8, 1 + sqrt(2))
Punkt = (-3*pi/8, 1 - sqrt(2))
Punkt = (pi/8, 1 + sqrt(2))
Punkt = (5*pi/8, 1 - sqrt(2))

Fasit: Grafen er vist i figuren med alle sentrale punkter markert.

Vanlig feil: Å tegne perioden 2π; faktoren 2 foran x halverer perioden til π.
Sensorpunkt: Sensor ser etter en konsistent skisse med riktige nullpunkter og ekstrempunkter.
Del 1 / Oppgave 8aAritmetisk rekke

Oppgave 8a

Oppgave: I en rekke er \(a_2=8\) og \(a_4=2\). Bestem summen av de seks første leddene dersom rekken er aritmetisk.
Original poengangivelse: Oppgave 8 (4 poeng).
Vis løsning

Hva spør oppgaven om? Vi bruker at avstanden fra a2 til a4 er to differanser.

  1. Skriv leddformlene
    \(a_2=a_1+d=8\), \(a_4=a_1+3d=2\).
  2. Trekk likningene fra hverandre
    \(2d=2-8=-6\).
  3. Finn differansen
    \(d=-3\).
  4. Finn første ledd
    \(a_1=8-d=11\).
  5. Finn sjette ledd
    \(a_6=11+5(-3)=-4\).
  6. Bruk sumformelen
    \[S_6=\frac62(11-4)=21\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({a+d=8,a+3d=2},{a,d})
Resultat: \(a_1=11,d=-3\)
2Sum(11-3(k-1),k,1,6)
Resultat: 21
Tolkning: CAS bekrefter både parameterne og summen.
Visualisering for Oppgave 8a
De første seks leddene i den aritmetiske og de to geometriske rekkene.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, summation
n = symbols('n', integer=True, positive=True)
a1, d = symbols('a1 d', real=True)
solution = solve([Eq(a1+d,8), Eq(a1+3*d,2)], [a1,d], dict=True)[0]
terms = [solution[a1] + (k-1)*solution[d] for k in range(1,7)]
S6 = sum(terms)
print("Løsning for a1 og d =", solution)
print("De seks første leddene =", terms)
print("a2 =", terms[1], " a4 =", terms[3])
print("S6 =", S6)
assert terms[1] == 8 and terms[3] == 2
assert S6 == 21
Kjørt utskriftLøsning for a1 og d = {a1: 11, d: -3}
De seks første leddene = [11, 8, 5, 2, -1, -4]
a2 = 8  a4 = 2
S6 = 21

Fasit: \(S_6=21\).

Vanlig feil: Å bruke fire differanser mellom a2 og a4; det er to trinn.
Sensorpunkt: Sensor ser etter d=-3, a1=11 og korrekt sumformel.
Del 1 / Oppgave 8bGeometriske rekker

Oppgave 8b

Oppgave: Bestem summen av de seks første leddene i hver av de to geometriske rekkene som har \(a_2=8\) og \(a_4=2\).
Original poengangivelse: Oppgave 8 (4 poeng).
Vis løsning

Hva spør oppgaven om? For en geometrisk rekke gir forholdet a4/a2 kvadratet av kvotienten.

  1. Bruk leddformlene
    \(a_2=a_1q=8\), \(a_4=a_1q^3=2\).
  2. Divider likningene
    \[q^2=\frac{a_4}{a_2}=\frac14\]
  3. Finn begge kvotientene
    \(q=1/2\) eller \(q=-1/2\).
  4. Finn første ledd ved q=1/2
    \(a_1=8/q=16\).
  5. Finn første ledd ved q=-1/2
    \(a_1=-16\).
  6. Beregn summene
    \[S_6=\frac{63}{2}\quad\text{og}\quad S_6=-\frac{21}{2}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({a*q=8,a*q^3=2},{a,q})
Resultat: \((16,1/2),(-16,-1/2)\)
2Sum(a*q^(k-1),k,1,6)
Resultat: \(63/2\) og \(-21/2\)
Tolkning: CAS finner begge reelle kvotienter og de tilhørende summene.
Visualisering for Oppgave 8b
De første seks leddene i den aritmetiske og de to geometriske rekkene.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, summation, Rational, simplify
q, a1, k = symbols('q a1 k', real=True)
solutions = solve([Eq(a1*q,8), Eq(a1*q**3,2)], [a1,q], dict=True)
print("Parameterløsninger =", solutions)
results = []
for sol in solutions:
    terms = [simplify(sol[a1]*sol[q]**j) for j in range(6)]
    S6 = simplify(sum(terms))
    results.append(S6)
    print("q =", sol[q], " a1 =", sol[a1])
    print("Ledd =", terms)
    print("S6 =", S6)
print("Sorterte summer =", sorted(results, key=lambda z: float(z)))
assert set(results) == {Rational(63,2), Rational(-21,2)}
Kjørt utskriftParameterløsninger = [{a1: -16, q: -1/2}, {a1: 16, q: 1/2}]
q = -1/2  a1 = -16
Ledd = [-16, 8, -4, 2, -1, 1/2]
S6 = -21/2
q = 1/2  a1 = 16
Ledd = [16, 8, 4, 2, 1, 1/2]
S6 = 63/2
Sorterte summer = [-21/2, 63/2]

Fasit: Summene er \(63/2\) for \(q=1/2\) og \(-21/2\) for \(q=-1/2\).

Vanlig feil: Å ta bare den positive kvadratroten av q²=1/4.
Sensorpunkt: Sensor ser etter begge geometriske rekker og begge summer.
Del 1 / Oppgave 9Matematisk induksjon

Oppgave 9

Oppgave: Bruk induksjon til å vise at \(1^2-2^2+3^2-4^2+\cdots+(-1)^{n+1}n^2=(-1)^{n-1}\frac{n(n+1)}2\) for alle \(n\in\mathbb N\).
Original poengangivelse: Oppgave 9 (2 poeng).
Vis løsning

Hva spør oppgaven om? Vi skal kontrollere basissteget og vise at sannhet for n medfører sannhet for n+1.

  1. Basis n=1
    Venstresiden er 1, og høyresiden er \((-1)^0\cdot1\cdot2/2=1\).
  2. Induksjonshypotese
    Anta \(S_n=(-1)^{n-1}n(n+1)/2\).
  3. Legg til neste ledd
    \[S_{n+1}=S_n+(-1)^{n+2}(n+1)^2\]
  4. Sett inn hypotesen
    \[S_{n+1}=(-1)^{n-1}\frac{n(n+1)}2+(-1)^n(n+1)^2\]
  5. Faktoriser
    \[S_{n+1}=(-1)^n(n+1)\left(-\frac n2+n+1\right)\]
  6. Forenkle til målformen
    \[S_{n+1}=(-1)^n\frac{(n+1)(n+2)}2\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1FullSimplify((-1)^(n-1)*n*(n+1)/2+(-1)^(n+2)*(n+1)^2)
Resultat: \((-1)^n(n+1)(n+2)/2\)
Tolkning: CAS bekrefter algebraen i induksjonssteget; selve induksjonsargumentet må skrives.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, summation, simplify
n, k = symbols('n k', integer=True, positive=True)
formula_n = (-1)**(n-1)*n*(n+1)/2
next_from_hypothesis = formula_n + (-1)**(n+2)*(n+1)**2
formula_next = (-1)**n*(n+1)*(n+2)/2
print("Basis venstreside n=1 =", sum([(-1)**(j+1)*j**2 for j in range(1,2)]))
print("Basis høyreside n=1 =", formula_n.subs(n,1))
print("Induksjonssteg før forenkling =", next_from_hypothesis)
print("Målform for n+1 =", formula_next)
print("Differanse =", simplify(next_from_hypothesis - formula_next))
for N in range(1,8):
    lhs = sum((-1)**(j+1)*j**2 for j in range(1,N+1))
    rhs = formula_n.subs(n,N)
    print(f"n={N}: venstre={lhs}, høyre={rhs}")
assert simplify(next_from_hypothesis - formula_next) == 0
Kjørt utskriftBasis venstreside n=1 = 1
Basis høyreside n=1 = 1
Induksjonssteg før forenkling = (-1)**(n - 1)*n*(n + 1)/2 + (-1)**(n + 2)*(n + 1)**2
Målform for n+1 = (-1)**n*(n + 1)*(n + 2)/2
Differanse = 0
n=1: venstre=1, høyre=1
n=2: venstre=-3, høyre=-3
n=3: venstre=6, høyre=6
n=4: venstre=-10, høyre=-10
n=5: venstre=15, høyre=15
n=6: venstre=-21, høyre=-21
n=7: venstre=28, høyre=28

Fasit: Identiteten gjelder for alle \(n\in\mathbb N\) ved induksjon.

Vanlig feil: Å kontrollere noen få n-verdier uten å gjennomføre induksjonssteget.
Sensorpunkt: Sensor ser etter basis, hypotese og korrekt overgang n→n+1.

Del 2 - med hjelpemidler

Del 2 / Oppgave 1aSinusmodell og maksimum

Oppgave 1a

Oppgave: \(f(x)=1{,}3\sin(0{,}52x-2{,}0)+2{,}4\), \(x\in[0,24]\), modellerer energiforbruk per time. Når er forbruket størst?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Maksimum oppstår når sinusleddet er 1. Vi må finne alle slike tidspunkt i døgnet.

  1. Sett sinus lik 1
    \[\sin(0{,}52x-2)=1\]
  2. Skriv generell vinkel
    \[0{,}52x-2=\frac\pi2+2k\pi\]
  3. Isoler x
    \[x=\frac{\pi/2+2+2k\pi}{0{,}52}\]
  4. Filtrer til døgnet
    For \(k=0\) og \(k=1\) får vi de to gyldige tidspunktene.
  5. Beregn tidene
    \(x\approx6{,}867\) og \(x\approx18{,}950\).
  6. Konverter til klokkeslett
    Dette er omtrent kl. 06:52 og kl. 18:57.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve({Derivative(f(x),x)=0,0<=x<=24},x)
Resultat: Maksimum ved \(x\approx6{,}867\) og \(18{,}950\)
Tolkning: Graf og andrederivert bekrefter at begge punktene er maksimum.
Visualisering for Oppgave 1a
Modellen har to maksimumspunkter i løpet av døgnet.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, pi, sin, cos, solve, Eq, N
x = symbols('x', real=True)
max_times = []
for k in range(-3,4):
    value = (pi/2 + 2 + 2*pi*k)/0.52
    if 0 <= float(value) <= 24:
        max_times.append(value)
print("Maksimalverdi f_max =", 1.3 + 2.4)
for value in max_times:
    hours = float(value)
    h = int(hours)
    minutes = (hours-h)*60
    print("x =", N(value,12), f" -> omtrent {h:02d}:{minutes:05.2f}")
    print("f(x) =", N(1.3*sin(0.52*value-2)+2.4,12))
assert len(max_times) == 2
Kjørt utskriftMaksimalverdi f_max = 3.7
x = 6.86691601307  -> omtrent 06:52.01
f(x) = 3.70000000000
x = 18.9499646807  -> omtrent 18:57.00
f(x) = 3.70000000000

Fasit: Maksimalt forbruk oppstår omtrent kl. 06:52 og kl. 18:57.

Vanlig feil: Å finne bare ett maksimum selv om intervallet dekker nesten to perioder.
Sensorpunkt: Sensor ser etter begge tidspunkt og forståelig omregning til klokkeslett.
Del 2 / Oppgave 1bAkkumulert forbruk

Oppgave 1b

Oppgave: Hvor stort er energiforbruket i løpet av ett døgn ifølge modellen?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Funksjonen angir forbruk per time, så totalforbruket er integralet fra 0 til 24.

  1. Sett opp integralet
    \[E=\int_0^{24}\bigl(1{,}3\sin(0{,}52x-2)+2{,}4\bigr)dx\]
  2. Integrer sinusleddet
    \(\int1{,}3\sin(0{,}52x-2)dx=-2{,}5\cos(0{,}52x-2)\).
  3. Integrer konstantleddet
    \(\int2{,}4dx=2{,}4x\).
  4. Sett inn grensene
    \[E=[-2{,}5\cos(0{,}52x-2)+2{,}4x]_0^{24}\]
  5. Beregn numerisk
    \[E\approx57{,}792\]
  6. Oppgi enhet og avrunding
    Totalforbruket er omtrent \(57{,}8\text{ kWh}\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Integral(1.3*sin(0.52x-2)+2.4,x,0,24)
Resultat: \(57{,}7922\ldots\)
Tolkning: CAS beregner det bestemte integralet numerisk.
Visualisering for Oppgave 1b
Modellen har to maksimumspunkter i løpet av døgnet.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, integrate, N
x = symbols('x', real=True)
f = 1.3*sin(0.52*x - 2.0) + 2.4
F = integrate(f, x)
energy = integrate(f, (x,0,24))
print("f(x) =", f)
print("Stamfunksjon =", F)
print("Eksakt SymPy-uttrykk for integralet =", energy)
print("Energiforbruk per døgn =", N(energy,15), "kWh")
print("Avrundet til én desimal =", round(float(energy),1), "kWh")
assert abs(float(energy)-57.79221932382167) < 1e-10
Kjørt utskriftf(x) = 1.3*sin(0.52*x - 2.0) + 2.4
Stamfunksjon = 2.4*x - 2.5*cos(0.52*x - 2.0)
Eksakt SymPy-uttrykk for integralet = 57.7922193238217
Energiforbruk per døgn = 57.7922193238217 kWh
Avrundet til én desimal = 57.8 kWh

Fasit: Omtrent \(57{,}8\text{ kWh}\).

Vanlig feil: Å lese av maksimalverdien og multiplisere med 24; forbruket varierer gjennom døgnet.
Sensorpunkt: Sensor ser etter integralet med riktig enhet.
Del 2 / Oppgave 1cNumerisk integral-likning

Oppgave 1c

Oppgave: Maria hadde brukt 17 kWh før strømbruddet. Omtrent når fant strømbruddet sted?
Original poengangivelse: Oppgave 1 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi finner tidspunktet t der integralet fra midnatt til t er 17 kWh.

  1. Definer akkumulert forbruk
    \[E(t)=\int_0^t f(x)dx\]
  2. Finn uttrykket
    \[E(t)=-2{,}5\cos(0{,}52t-2)+2{,}4t+2{,}5\cos2\]
  3. Sett opp likningen
    \[E(t)=17\]
  4. Løs numerisk
    \(t\approx7{,}28967\).
  5. Konverter minutter
    \(0{,}28967\cdot60\approx17{,}38\) minutter.
  6. Tolk
    Strømbruddet fant sted omtrent kl. 07:17.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve(Integral(f(x),x,0,t)=17,t)
Resultat: \(t\approx7{,}28967\)
Tolkning: Den akkumulerte funksjonen er strengt voksende fordi f(x)>0, så løsningen er entydig.
Visualisering for Oppgave 1c
Strømbruddet skjer når det akkumulerte forbruket når 17 kWh.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, sin, cos, integrate, Eq, nsolve, N
x, t = symbols('x t', real=True)
f = 1.3*sin(0.52*x - 2.0) + 2.4
cumulative = integrate(f, (x,0,t))
solution = nsolve(Eq(cumulative,17), 7)
hours = int(float(solution))
minutes = (float(solution)-hours)*60
print("Akkumulert funksjon E(t) =", cumulative)
print("Likning =", Eq(cumulative,17))
print("Numerisk løsning t =", N(solution,15))
print(f"Klokkeslett omtrent {hours:02d}:{minutes:05.2f}")
print("Kontroll E(t) =", N(cumulative.subs(t,solution),15))
assert abs(float(cumulative.subs(t,solution))-17) < 1e-10
Kjørt utskriftAkkumulert funksjon E(t) = 2.4*t - 2.5*cos(0.52*t - 2.0) - 1.04036709136786
Likning = Eq(2.4*t - 2.5*cos(0.52*t - 2.0) - 1.04036709136786, 17)
Numerisk løsning t = 7.28966856616891
Klokkeslett omtrent 07:17.38
Kontroll E(t) = 17.0000000000000

Fasit: Strømbruddet skjedde omtrent kl. 07:17.

Vanlig feil: Å løse f(t)=17; 17 kWh er akkumulert energi, ikke forbruk per time.
Sensorpunkt: Sensor ser etter integral-likning og klokkesletttolkning.
Del 2 / Oppgave 2aSkjæringspunkt mellom linjer

Oppgave 2a

Oppgave: \(A(0,7,5)\), \(B(1,7,2)\), \(C(-2,2,0)\), \(D(1,1,h)\). Linjen \(\ell\) går gjennom A og B, og m går gjennom C og D. Bestem eksakt h slik at linjene skjærer hverandre.
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi parametriserer begge linjene og krever likhet koordinat for koordinat.

  1. Parametriser linjen l
    \[\ell:(x,y,z)=(0,7,5)+t(1,0,-3)\]
  2. Parametriser linjen m
    \[m:(x,y,z)=(-2,2,0)+s(3,-1,h)\]
  3. Bruk y-koordinaten
    \(7=2-s\Rightarrow s=-5\).
  4. Bruk x-koordinaten
    \(t=-2+3(-5)=-17\).
  5. Bruk z-koordinaten
    \(5-3(-17)=h(-5)\).
  6. Løs for h
    \[56=-5h\Rightarrow h=-\frac{56}{5}\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve({t=-2+3s,7=2-s,5-3t=hs},{t,s,h})
Resultat: \(t=-17,s=-5,h=-56/5\)
Tolkning: CAS løser det lineære systemet eksakt.
Visualisering for Oppgave 2a
Illustrasjon av de to linjene for én av h-verdiene som gir avstand 4.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Eq, solve, Rational, Matrix
t, s, h = symbols('t s h', real=True)
equations = [Eq(t, -2+3*s), Eq(7,2-s), Eq(5-3*t,h*s)]
solution = solve(equations, [t,s,h], dict=True)[0]
print("Likningssystem =", equations)
print("Løsning =", solution)
h_value = solution[h]
point_l = Matrix([solution[t], 7, 5-3*solution[t]])
point_m = Matrix([-2+3*solution[s], 2-solution[s], h_value*solution[s]])
print("Skjæringspunkt fra l =", point_l.T)
print("Skjæringspunkt fra m =", point_m.T)
assert h_value == Rational(-56,5)
assert point_l == point_m
Kjørt utskriftLikningssystem = [Eq(t, 3*s - 2), Eq(7, 2 - s), Eq(5 - 3*t, h*s)]
Løsning = {h: -56/5, s: -5, t: -17}
Skjæringspunkt fra l = Matrix([[-17, 7, 56]])
Skjæringspunkt fra m = Matrix([[-17, 7, 56]])

Fasit: \(h=-\frac{56}{5}\).

Vanlig feil: Å kreve bare én koordinat lik; alle tre koordinatlikningene må oppfylles samtidig.
Sensorpunkt: Sensor ser etter parameterframstilling og eksakt h-verdi.
Del 2 / Oppgave 2bLinje og plan

Oppgave 2b

Oppgave: Planet \(\alpha\) er \(3x+(h+9)y+z=68+7h\). Vis at \(\ell\) ligger i planet, og at m er parallell med planet.
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi bruker planets normalvektor og kontrollerer både punkt og retning.

  1. Finn normalvektoren
    \(\vec n=(3,h+9,1)\).
  2. Kontroller A i planet
    \(3\cdot0+(h+9)7+5=68+7h\).
  3. Kontroller B i planet
    \(3+(h+9)7+2=68+7h\).
  4. Konkluder for l
    To ulike punkter A og B i planet betyr at hele linjen l ligger i planet.
  5. Finn retningen til m
    \(\vec v_m=D-C=(3,-1,h)\).
  6. Beregn skalarprodukt
    \[\vec v_m\cdot\vec n=9-(h+9)+h=0\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Substitute(plane,A)
Resultat: 0
2Substitute(plane,B)
Resultat: 0
3Dot((3,-1,h),(3,h+9,1))
Resultat: 0
Tolkning: CAS bekrefter punktinnsettingene og ortogonaliteten til normalvektoren.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Matrix, simplify
h = symbols('h', real=True)
A = Matrix([0,7,5]); B = Matrix([1,7,2]); C = Matrix([-2,2,0]); D = Matrix([1,1,h])
n = Matrix([3,h+9,1])
def residual(P):
    return simplify(3*P[0] + (h+9)*P[1] + P[2] - (68+7*h))
v_l = B-A
v_m = D-C
print("Planresidual i A =", residual(A))
print("Planresidual i B =", residual(B))
print("Retningsvektor l =", v_l.T)
print("Retningsvektor m =", v_m.T)
print("v_l dot n =", simplify(v_l.dot(n)))
print("v_m dot n =", simplify(v_m.dot(n)))
assert residual(A) == residual(B) == 0
assert simplify(v_l.dot(n)) == 0
assert simplify(v_m.dot(n)) == 0
Kjørt utskriftPlanresidual i A = 0
Planresidual i B = 0
Retningsvektor l = Matrix([[1, 0, -3]])
Retningsvektor m = Matrix([[3, -1, h]])
v_l dot n = 0
v_m dot n = 0

Fasit: Linjen \(\ell\) ligger i \(\alpha\), og \(m\parallel\alpha\).

Vanlig feil: Å vise bare at retningen til l er parallell med planet; da kan l fortsatt ligge utenfor planet.
Sensorpunkt: Sensor ser etter punktkontroll for l og skalarprodukt for m.
Del 2 / Oppgave 2cAvstand mellom skjeve linjer

Oppgave 2c

Oppgave: Bestem h slik at avstanden mellom linjene \(\ell\) og m blir 4.
Original poengangivelse: Oppgave 2 (6 poeng).
Vis løsning

Hva spør oppgaven om? For to ikke-parallelle linjer i rommet bruker vi trippelproduktformelen for avstanden.

  1. Finn retningsvektorene
    \(\vec u=(1,0,-3)\), \(\vec v=(3,-1,h)\).
  2. Finn forbindelsesvektoren
    \(\overrightarrow{AC}=(-2,-5,-5)\).
  3. Beregn kryssproduktet
    \[\vec u\times\vec v=(-3,-h-9,-1)\]
  4. Sett opp avstanden
    \[d=\frac{|\overrightarrow{AC}\cdot(\vec u\times\vec v)|}{|\vec u\times\vec v|}=\frac{|5h+56|}{\sqrt{(h+9)^2+10}}\]
  5. Sett d=4 og kvadrer
    \[(5h+56)^2=16((h+9)^2+10)\]
  6. Løs andregradslikningen
    \[h=\frac{-136\pm4\sqrt{211}}9\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(abs(5h+56)/sqrt((h+9)^2+10)=4,h)
Resultat: \(h=(-136\pm4\sqrt{211})/9\)
Tolkning: CAS løser den kvadrerte likningen; begge kandidater kontrolleres i den opprinnelige avstandsformelen.
Visualisering for Oppgave 2c
Illustrasjon av de to linjene for én av h-verdiene som gir avstand 4.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Matrix, sqrt, Eq, solve, simplify, Abs, N
h = symbols('h', real=True)
u = Matrix([1,0,-3])
v = Matrix([3,-1,h])
AC = Matrix([-2,-5,-5])
cross = u.cross(v)
distance = simplify(Abs(AC.dot(cross))/sqrt(cross.dot(cross)))
equation_squared = Eq((5*h+56)**2, 16*((h+9)**2+10))
solutions = solve(equation_squared, h)
print("u x v =", cross.T)
print("Avstandsformel d(h) =", distance)
print("Kvadrert likning =", equation_squared)
print("Eksakte h-verdier =", solutions)
for sol in solutions:
    print("h =", sol, "≈", N(sol,12), " gir d =", N(distance.subs(h,sol),12))
assert len(solutions) == 2
assert all(simplify(distance.subs(h,sol)-4)==0 for sol in solutions)
Kjørt utskriftu x v = Matrix([[-3, -h - 9, -1]])
Avstandsformel d(h) = Abs(5*h + 56)/sqrt((h + 9)**2 + 10)
Kvadrert likning = Eq((5*h + 56)**2, 16*(h + 9)**2 + 160)
Eksakte h-verdier = [-136/9 - 4*sqrt(211)/9, -136/9 + 4*sqrt(211)/9]
h = -136/9 - 4*sqrt(211)/9 ≈ -21.5670395761  gir d = 4.00000000000
h = -136/9 + 4*sqrt(211)/9 ≈ -8.65518264607  gir d = 4.00000000000

Fasit: \(h=\dfrac{-136-4\sqrt{211}}9\) eller \(h=\dfrac{-136+4\sqrt{211}}9\).

Vanlig feil: Å bruke punkt-plan-avstand uten å begrunne hvorfor planet er relevant; her trengs avstand mellom skjeve linjer.
Sensorpunkt: Sensor ser etter korrekt trippelproduktformel og kontroll av begge røtter.
Del 2 / Oppgave 3aModellering med differensiallikning

Oppgave 3a

Oppgave: Forklar at medisinmengden må tilfredsstille \(M\prime(t)=-kM(t)+5\), \(M(0)=0\).
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Endringsfarten er nettoen av tilførsel og nedbrytning.

  1. Tolk tilførselen
    Pasienten får tilført 5 mg per time, som gir bidraget +5 til \(M\prime(t)\).
  2. Tolk nedbrytningen
    Nedbrytningsfarten er proporsjonal med M, altså \(kM(t)\) med \(k>0\).
  3. Ta med fortegnet
    Nedbrytning reduserer mengden, så bidraget er \(-kM(t)\).
  4. Sett sammen nettofarten
    \[M\prime(t)=5-kM(t)\]
  5. Bruk startinformasjonen
    Ved behandlingsstart er det ikke virkestoff i blodet.
  6. Skriv initialbetingelsen
    \[M(0)=0\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1M'(t)=input-output
Resultat: \(M\prime(t)=5-kM(t)\)
Tolkning: CAS brukes ikke til å erstatte modellbegrunnelsen, men kan kontrollere dimensjonene og senere løsning.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols
M, k = symbols('M k', positive=True)
input_rate = 5
breakdown_rate = k*M
net_rate = input_rate - breakdown_rate
print("Tilførsel per time =", input_rate, "mg/time")
print("Nedbrytning per time =", breakdown_rate)
print("Netto endringsfart M'(t) =", net_rate)
print("Ved M=0 er M' =", net_rate.subs(M,0))
print("Ved likevekt M=5/k er M' =", net_rate.subs(M,5/k).simplify())
assert net_rate.subs(M,5/k).simplify() == 0
Kjørt utskriftTilførsel per time = 5 mg/time
Nedbrytning per time = M*k
Netto endringsfart M'(t) = -M*k + 5
Ved M=0 er M' = 5
Ved likevekt M=5/k er M' = 0

Fasit: Nettoen av tilførsel og proporsjonal nedbrytning gir \(M\prime=-kM+5\), og \(M(0)=0\).

Vanlig feil: Å skrive +kM for nedbrytningen; den skal redusere mengden.
Sensorpunkt: Sensor ser etter fysisk fortolkning av begge ledd og initialbetingelsen.
Del 2 / Oppgave 3bParameterbestemmelse i ODE

Oppgave 3b

Oppgave: Etter 24 timer er \(M(24)=80\) mg. Bestem et uttrykk for \(M(t)\).
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi løser ODE-en med konstant tilførsel og bestemmer k numerisk fra målingen etter 24 timer.

  1. Løs den lineære likningen
    Med \(M(0)=0\) får vi \[M(t)=\frac5k(1-e^{-kt}).\]
  2. Bruk målingen
    \[\frac5k(1-e^{-24k})=80\]
  3. Løs numerisk
    \(k\approx0{,}0364257\text{ per time}\).
  4. Sett inn parameteren
    \[M(t)\approx137{,}266(1-e^{-0{,}0364257t})\]
  5. Kontroller startverdien
    \(M(0)=0\).
  6. Kontroller 24 timer
    \(M(24)=80\) mg.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1NSolve(5/k*(1-exp(-24k))=80,k)
Resultat: \(k\approx0{,}0364257277\)
2M(t)=5/k*(1-exp(-kt))
Resultat: \(M(t)\approx137{,}266(1-e^{-0{,}0364257t})\)
Tolkning: CAS løser den transcendente parameterlikningen numerisk og kontrollerer modellen.
Visualisering for Oppgave 3b
Modellen treffer 80 mg etter 24 timer og 150 mg etter 48 timer.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, exp, Eq, nsolve, N, diff
k, t = symbols('k t', positive=True, real=True)
k_value = nsolve(Eq(5/k*(1-exp(-24*k)),80), 0.04)
M = 5/k_value*(1-exp(-k_value*t))
residual = (diff(M,t) - (-k_value*M+5)).simplify()
print("Parameterlikning =", Eq(5/k*(1-exp(-24*k)),80))
print("k =", N(k_value,15), "per time")
print("5/k =", N(5/k_value,15))
print("M(t) =", M)
print("M(0) =", N(M.subs(t,0),15))
print("M(24) =", N(M.subs(t,24),15))
print("ODE-residual =", residual)
assert abs(float(M.subs(t,24))-80) < 1e-10
assert residual == 0
Kjørt utskriftParameterlikning = Eq(5*(1 - exp(-24*k))/k, 80)
k = 0.0364257277416132 per time
5/k = 137.265617188698
M(t) = 137.265617188698 - 137.265617188698*exp(-0.0364257277416132*t)
M(0) = 0
M(24) = 80.0000000000000
ODE-residual = 0

Fasit: \(M(t)\approx137{,}266(1-e^{-0{,}0364257t})\) mg.

Vanlig feil: Å anta at k kan isoleres med vanlig logaritme uten at k også står utenfor eksponentialleddet.
Sensorpunkt: Sensor ser etter korrekt løsningsform, numerisk parameter og kontroll av M(24).
Del 2 / Oppgave 3cDoseendring i ODE

Oppgave 3c

Oppgave: Etter 24 timer økes tilførselen. Hvor mye virkestoff per time må tilføres for at mengden skal være 150 mg ett døgn senere?
Original poengangivelse: Oppgave 3 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi beholder samme nedbrytningskonstant k, bruker M(24)=80 som ny startverdi og lar den nye tilførselen være r.

  1. Flytt tidsorigo
    La \(\tau=t-24\). Da er \(M(0)=80\) i den nye fasen.
  2. Skriv ny likning
    \[M\prime=-kM+r\]
  3. Løs med startverdi
    \[M(\tau)=\frac rk+\left(80-\frac rk\right)e^{-k\tau}\]
  4. Bruk sluttkravet
    \[150=\frac rk+\left(80-\frac rk\right)e^{-24k}\]
  5. Isoler r
    \[r=k\frac{150-80e^{-24k}}{1-e^{-24k}}\]
  6. Beregn
    \(r\approx7{,}289\text{ mg/time}\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Solve(150=r/k+(80-r/k)*exp(-24k),r)
Resultat: \(r\approx7{,}28906\)
Tolkning: CAS isolerer den nye tilførselshastigheten og kontrollerer sluttverdien.
Visualisering for Oppgave 3c
Modellen treffer 80 mg etter 24 timer og 150 mg etter 48 timer.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, exp, Eq, nsolve, solve, N
k, r, tau = symbols('k r tau', positive=True, real=True)
k_value = nsolve(Eq(5/k*(1-exp(-24*k)),80),0.04)
r_expr = solve(Eq(150, r/k_value + (80-r/k_value)*exp(-24*k_value)), r)[0]
M2 = r_expr/k_value + (80-r_expr/k_value)*exp(-k_value*tau)
print("Nedbrytningskonstant k =", N(k_value,15))
print("Likning for ny dose =", Eq(150, r/k_value + (80-r/k_value)*exp(-24*k_value)))
print("Ny tilførsel r =", N(r_expr,15), "mg/time")
print("M2(0) =", N(M2.subs(tau,0),15), "mg")
print("M2(24) =", N(M2.subs(tau,24),15), "mg")
assert abs(float(M2.subs(tau,0))-80) < 1e-10
assert abs(float(M2.subs(tau,24))-150) < 1e-9
Kjørt utskriftNedbrytningskonstant k = 0.0364257277416132
Likning for ny dose = Eq(150, 16.0*r + 33.3750684907351)
Ny tilførsel r = 7.28905821932906 mg/time
M2(0) = 80.0000000000000 mg
M2(24) = 150.000000000000 mg

Fasit: Pasienten må få omtrent \(7{,}29\text{ mg/time}\).

Vanlig feil: Å starte den andre fasen med M=0 i stedet for 80 mg.
Sensorpunkt: Sensor ser etter ny startverdi, samme k og korrekt doseberegning.
Del 2 / Oppgave 4aDelbrøkoppspalting

Oppgave 4a

Oppgave: Vis at \(\dfrac1{k(k+2)}=\dfrac12\left(\dfrac1k-\dfrac1{k+2}\right)\).
Original poengangivelse: Oppgave 4 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi setter høyresiden på felles nevner og viser at den blir venstresiden.

  1. Start med høyresiden
    \[\frac12\left(\frac1k-\frac1{k+2}\right)\]
  2. Finn felles nevner
    Felles nevner er \(k(k+2)\).
  3. Skriv telleren
    \[\frac12\frac{k+2-k}{k(k+2)}\]
  4. Forenkle differansen
    \(k+2-k=2\).
  5. Forkort faktoren
    \[\frac12\frac2{k(k+2)}=\frac1{k(k+2)}\]
  6. Konkluder
    Identiteten gjelder for k≠0 og k≠−2; i rekken er k positivt heltall.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Simplify(1/(k*(k+2))-1/2*(1/k-1/(k+2)))
Resultat: 0
Tolkning: CAS bekrefter den algebraiske identiteten.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Rational, simplify, together
k = symbols('k', nonzero=True)
left = 1/(k*(k+2))
right = Rational(1,2)*(1/k - 1/(k+2))
print("Venstreside =", left)
print("Høyreside =", right)
print("Høyreside på felles nevner =", together(right))
print("Differanse =", simplify(left-right))
for value in [1,2,5,10]:
    print(f"k={value}: venstre={left.subs(k,value)}, høyre={right.subs(k,value)}")
assert simplify(left-right) == 0
Kjørt utskriftVenstreside = 1/(k*(k + 2))
Høyreside = -1/(2*(k + 2)) + 1/(2*k)
Høyreside på felles nevner = 1/(k*(k + 2))
Differanse = 0
k=1: venstre=1/3, høyre=1/3
k=2: venstre=1/8, høyre=1/8
k=5: venstre=1/35, høyre=1/35
k=10: venstre=1/120, høyre=1/120

Fasit: Identiteten er vist ved fellesnevner.

Vanlig feil: Å glemme faktoren 1/2 når tellerforskjellen blir 2.
Sensorpunkt: Sensor ser etter full algebraisk omskriving.
Del 2 / Oppgave 4bTeleskoperende sum

Oppgave 4b

Oppgave: Bruk del a til å begrunne at \(s_5=\frac12\left(1+\frac12-\frac16-\frac17\right)\).
Original poengangivelse: Oppgave 4 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi skriver hvert av de fem leddene som en differanse og stryker ledd som opptrer med motsatt fortegn.

  1. Bruk oppspaltingen
    \[s_5=\frac12\sum_{k=1}^5\left(\frac1k-\frac1{k+2}\right)\]
  2. Skriv ut de positive leddene
    \(1+1/2+1/3+1/4+1/5\).
  3. Skriv ut de negative leddene
    \(-1/3-1/4-1/5-1/6-1/7\).
  4. Stryk felles ledd
    Ledd med nevner 3, 4 og 5 forsvinner.
  5. Skriv restleddene
    \[s_5=\frac12\left(1+\frac12-\frac16-\frac17\right)\]
  6. Beregn om ønskelig
    \(s_5=25/42\).

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Sum(1/(k*(k+2)),k,1,5)
Resultat: \(25/42\)
Tolkning: CAS bekrefter både teleskopformen og den eksakte verdien.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, summation, Rational, simplify
k = symbols('k', integer=True, positive=True)
s5_direct = summation(1/(k*(k+2)), (k,1,5))
s5_telescope = Rational(1,2)*(1+Rational(1,2)-Rational(1,6)-Rational(1,7))
expanded = [Rational(1,2)*(Rational(1,j)-Rational(1,j+2)) for j in range(1,6)]
print("Oppspaltede ledd =", expanded)
print("Direkte sum s5 =", s5_direct)
print("Teleskoputtrykk =", s5_telescope)
print("Differanse =", simplify(s5_direct-s5_telescope))
assert s5_direct == Rational(25,42)
assert simplify(s5_direct-s5_telescope) == 0
Kjørt utskriftOppspaltede ledd = [1/3, 1/8, 1/15, 1/24, 1/35]
Direkte sum s5 = 25/42
Teleskoputtrykk = 25/42
Differanse = 0

Fasit: \(s_5=\frac12(1+1/2-1/6-1/7)=25/42\).

Vanlig feil: Å stryke også 1 eller 1/2; disse har ingen negative motledd.
Sensorpunkt: Sensor ser etter eksplisitt teleskopering.
Del 2 / Oppgave 4cGenerell teleskopformel

Oppgave 4c

Oppgave: Begrunn at \(s_n=\frac12\left(1+\frac12-\frac1{n+1}-\frac1{n+2}\right)\).
Original poengangivelse: Oppgave 4 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi generaliserer strykningen fra fem ledd til n ledd.

  1. Start med oppspaltingen
    \[s_n=\frac12\sum_{k=1}^n\left(\frac1k-\frac1{k+2}\right)\]
  2. Skriv den første summen
    \(1+1/2+1/3+\cdots+1/n\).
  3. Skriv den forskjøvede summen
    \(1/3+1/4+\cdots+1/(n+2)\).
  4. Stryk overlappet
    Alle ledd fra 1/3 til 1/n opptrer med begge fortegn.
  5. Finn restleddene
    Positive restledd er 1 og 1/2; negative er 1/(n+1) og 1/(n+2).
  6. Skriv formelen
    \[s_n=\frac12\left(1+\frac12-\frac1{n+1}-\frac1{n+2}\right)\]

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1FullSimplify(Sum(1/(k*(k+2)),k,1,n))
Resultat: \(\frac12(1+1/2-1/(n+1)-1/(n+2))\)
Tolkning: CAS bekrefter formelen for positivt heltall n.

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, summation, Rational, simplify, factor
k, n = symbols('k n', integer=True, positive=True)
sn = summation(1/(k*(k+2)), (k,1,n))
formula = Rational(1,2)*(1+Rational(1,2)-1/(n+1)-1/(n+2))
print("Sum fra SymPy =", sn)
print("Foreslått formel =", formula)
print("Forenklet differanse =", simplify(sn-formula))
for N in [1,2,5,10]:
    print(f"n={N}: direkte={sn.subs(n,N)}, formel={formula.subs(n,N)}")
assert simplify(sn-formula) == 0
Kjørt utskriftSum fra SymPy = 3/4 - 1/(2*(n + 2)) - 1/(2*(n + 1))
Foreslått formel = 3/4 - 1/(2*(n + 2)) - 1/(2*(n + 1))
Forenklet differanse = 0
n=1: direkte=1/3, formel=1/3
n=2: direkte=11/24, formel=11/24
n=5: direkte=25/42, formel=25/42
n=10: direkte=175/264, formel=175/264

Fasit: \(s_n=\frac12\left(1+\frac12-\frac1{n+1}-\frac1{n+2}\right)\).

Vanlig feil: Å la de siste negative leddene være 1/n og 1/(n+1); indeksforskyvningen er to.
Sensorpunkt: Sensor ser etter tydelig indeksforskyvning og restledd.
Del 2 / Oppgave 4dSammenligning og konvergens

Oppgave 4d

Oppgave: Forklar at \(s_n>\sum_{k=1}^n\frac1{(k+1)^2}\), og bruk dette til å begrunne at \(\frac1{2^2}+\frac1{3^2}+\cdots\) konvergerer.
Original poengangivelse: Oppgave 4 (6 poeng).
Vis løsning

Hva spør oppgaven om? Vi sammenligner ledd for ledd og bruker at en voksende følge av partialsummer som er begrenset ovenfra, konvergerer.

  1. Sammenlign nevnerne
    \[k(k+2)=k^2+2k=(k+1)^2-1<(k+1)^2\]
  2. Snu ulikheten
    Alle nevnere er positive, så \[\frac1{k(k+2)}>\frac1{(k+1)^2}.\]
  3. Summer ulikheten
    \[s_n>\sum_{k=1}^n\frac1{(k+1)^2}\]
  4. Finn grensen til s_n
    Fra del c får vi \(\lim s_n=\frac12(1+1/2)=3/4\).
  5. Bruk begrensning
    Partialsumene til \(\sum_{j=2}^\infty1/j^2\) er positive, voksende og mindre enn 3/4.
  6. Konkluder
    En voksende og ovenfra begrenset tallfølge konvergerer; dermed konvergerer rekken.

Digital kontroll i GeoGebra/CAS

GeoGebra / CAS
1Limit(1/2*(1+1/2-1/(n+1)-1/(n+2)),n,infinity)
Resultat: \(3/4\)
Tolkning: CAS bekrefter øvre grense; konvergensargumentet bygger på monotoni og begrensning.
Visualisering for Oppgave 4d
Den gitte rekken dominerer partsummene til summen av 1/(k+1)².

Digital kontroll i Python (SymPy)

Python 3.12 / SymPy - faktisk kjørt
from sympy import symbols, Rational, limit, oo, simplify, summation
k, n = symbols('k n', integer=True, positive=True)
term_difference = simplify(1/(k*(k+2)) - 1/(k+1)**2)
sn = Rational(1,2)*(1+Rational(1,2)-1/(n+1)-1/(n+2))
pn = summation(1/(k+1)**2, (k,1,n))
print("Leddvis differanse =", term_difference)
print("Denne er positiv for k>=1 fordi telleren og nevneren er positive")
print("s_n =", sn)
print("Grense for s_n =", limit(sn,n,oo))
for N in [1,2,5,10,50]:
    sv = sn.subs(n,N)
    pv = pn.subs(n,N)
    print(f"n={N}: s_n={sv.evalf(10)}, p_n={pv.evalf(10)}, forskjell={(sv-pv).evalf(10)}")
assert limit(sn,n,oo) == Rational(3,4)
assert all(float((sn-pn).subs(n,N)) > 0 for N in [1,2,5,10,50])
Kjørt utskriftLeddvis differanse = 1/(k*(k**3 + 4*k**2 + 5*k + 2))
Denne er positiv for k>=1 fordi telleren og nevneren er positive
s_n = 3/4 - 1/(2*(n + 2)) - 1/(2*(n + 1))
Grense for s_n = 3/4
n=1: s_n=0.3333333333, p_n=0.2500000000, forskjell=0.08333333333
n=2: s_n=0.4583333333, p_n=0.3611111111, forskjell=0.09722222222
n=5: s_n=0.5952380952, p_n=0.4913888889, forskjell=0.1038492063
n=10: s_n=0.6628787879, p_n=0.5580321940, forskjell=0.1048465939
n=50: s_n=0.7305806938, p_n=0.6255172011, forskjell=0.1050634927

Fasit: Rekken \(\sum_{j=2}^{\infty}1/j^2\) konvergerer fordi partialsummene er voksende og begrenset ovenfra av 3/4.

Vanlig feil: Å hevde at en rekke konvergerer bare fordi leddene går mot 0; det er nødvendig, men ikke tilstrekkelig.
Sensorpunkt: Sensor ser etter leddvis ulikhet, øvre grense og monotont begrenset argument.