R1 eksamenVår 2023LK20

Matematikk R1 eksamen – vår 2023

ifingo
Norsk (Bokmål)

ifingo · Matematikk R1

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

Løsningsforslag til eksamenssettet fra Utdanningsdirektoratet.

Del 1 - uten hjelpemidler

Del 1 - Oppgave 1Derivasjon

Oppgave 1

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

Hva spør oppgaven om? Vi skal derivere hvert ledd og ta hensyn til at logaritmen krever \(x>0\).

Steg 1 - Deriver eksponentialleddet

\((e^x)^{\prime}=e^x\).

Steg 2 - Deriver logaritmen

\((\ln x)^{\prime}=1/x\) for \(x>0\).

Steg 3 - Bruk sumregelen

Derivasjon er lineær, så de to deriverte kan summeres.

Steg 4 - Skriv svaret

\[f^{\prime}(x)=e^x+\frac1x,\qquad x>0.\]

GeoGebra/CAS-kontroll

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

Tolkning: CAS deriverer begge leddene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", positive=True)
f = sp.exp(x) + sp.log(x)
f_prime = sp.diff(f, x)
print("f(x) =", f)
print("f'(x) =", f_prime)
print("Domain condition: x > 0")
print("Check at x=1:", sp.simplify(f_prime.subs(x, 1)))
Utskrift fra Python:
f(x) = exp(x) + log(x)
f'(x) = exp(x) + 1/x
Domain condition: x > 0
Check at x=1: 1 + E

Fasit: \(f^{\prime}(x)=e^x+\dfrac1x\), for \(x>0\).

Vanlig feil: Å skrive \((\ln x)^{\prime}=\ln x\).
Sensorpunkt: Begge derivasjonsreglene og domenet bør framgå.
Del 1 - Oppgave 2Grenseverdi

Oppgave 2

Oppgave: Bestem \[\lim_{x\to2}\frac{x^3-8}{x^2-4}.\]
Vis løsning

Hva spør oppgaven om? Vi skal fjerne den ubestemte formen \(0/0\) ved faktorisering.

Steg 1 - Faktoriser telleren

\[x^3-8=(x-2)(x^2+2x+4).\]

Steg 2 - Faktoriser nevneren

\[x^2-4=(x-2)(x+2).\]

Steg 3 - Forkort

For \(x\ne2\) blir brøken \((x^2+2x+4)/(x+2)\).

Steg 4 - Sett inn grensepunktet

\[\frac{2^2+2\cdot2+4}{2+2}=\frac{12}{4}=3.\]

GeoGebra/CAS-kontroll

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

Tolkning: CAS tar grensen etter algebraisk forenkling.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x")
expression = (x**3 - 8)/(x**2 - 4)
factored_numerator = sp.factor(x**3 - 8)
factored_denominator = sp.factor(x**2 - 4)
simplified = sp.cancel(expression)
limit_value = sp.limit(expression, x, 2)
print("Numerator factored =", factored_numerator)
print("Denominator factored =", factored_denominator)
print("Simplified expression =", simplified)
print("Limit as x -> 2 =", limit_value)
Utskrift fra Python:
Numerator factored = (x - 2)*(x**2 + 2*x + 4)
Denominator factored = (x - 2)*(x + 2)
Simplified expression = (x**2 + 2*x + 4)/(x + 2)
Limit as x -> 2 = 3

Fasit: Grenseverdien er \(3\).

Vanlig feil: Å sette inn \(x=2\) før faktoren \(x-2\) er forkortet.
Sensorpunkt: Faktorisering, forkorting og innsetting må vises.
Del 1 - Oppgave 3aVektorregning og vinkel

Oppgave 3a

Oppgave: Gitt \(A(1,3)\), \(B(4,0)\) og \(C(9,4)\). Avgjør om \(\angle CBA\) er mindre enn, lik eller større enn \(90^{\circ}\).
Vis løsning

Hva spør oppgaven om? Vi skal bruke fortegnet til skalarproduktet mellom vektorene fra B.

Steg 1 - Finn vektorene

\[\overrightarrow{BC}=(5,4),\qquad \overrightarrow{BA}=(-3,3).\]

Steg 2 - Skalarprodukt

\[\overrightarrow{BC}\cdot\overrightarrow{BA}=5(-3)+4\cdot3=-3.\]

Steg 3 - Tolk fortegnet

Et negativt skalarprodukt betyr at cosinus til vinkelen er negativ.

Steg 4 - Konklusjon

Dermed er vinkelen stump, altså større enn \(90^{\circ}\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Dot(Vector[B,C],Vector[B,A])
\(-3\)

Tolkning: Negativt skalarprodukt gir stump vinkel.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A = sp.Matrix([1, 3])
B = sp.Matrix([4, 0])
C = sp.Matrix([9, 4])
BC = C - B
BA = A - B
dot_product = BC.dot(BA)
cos_value = sp.simplify(dot_product/(sp.sqrt(BC.dot(BC))*sp.sqrt(BA.dot(BA))))
angle = sp.acos(cos_value)*180/sp.pi
print("BC =", tuple(BC))
print("BA =", tuple(BA))
print("BC dot BA =", dot_product)
print("cos(angle) =", cos_value)
print("angle in degrees =", sp.N(angle, 12))
print("Angle greater than 90 degrees:", bool(sp.N(angle) > 90))
Utskrift fra Python:
BC = (5, 4)
BA = (-3, 3)
BC dot BA = -3
cos(angle) = -sqrt(82)/82
angle in degrees = 96.3401917459
Angle greater than 90 degrees: True

Fasit: \(\angle CBA>90^{\circ}\).

Vanlig feil: Å bruke \(\overrightarrow{AB}\) i stedet for \(\overrightarrow{BA}\) uten å korrigere fortegnet.
Sensorpunkt: Vektorene må ha samme startpunkt B.
Del 1 - Oppgave 3bLinjeparameter og ortogonalitet

Oppgave 3b

Oppgave: Punktet \(P\) ligger på linjen gjennom B og C. Bestem P slik at \(\overrightarrow{AB}\perp\overrightarrow{AP}\).
Vis løsning

Hva spør oppgaven om? Vi parameterframstiller linjen og setter skalarproduktet lik null.

Steg 1 - Linjen gjennom B og C

\[P=B+t(C-B)=(4+5t,4t).\]

Steg 2 - Vektorene

\[\overrightarrow{AB}=(3,-3),\quad \overrightarrow{AP}=(3+5t,4t-3).\]

Steg 3 - Ortogonalitetskravet

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

Steg 4 - Løs likningen

Uttrykket blir \(18+3t=0\), så \(t=-6\).

Steg 5 - Finn P

\[P=(4+5(-6),4(-6))=(-26,-24).\]

Steg 6 - Kontroll

\((3,-3)\cdot(-27,-27)=0\).

Linjen gjennom B og C og den vinkelrette forbindelsen AP.
Linjen gjennom B og C og den vinkelrette forbindelsen AP.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[Dot((3,-3),(3+5t,4t-3))=0,t]
\(t=-6\), \(P=(-26,-24)\)

Tolkning: CAS løser ortogonalitetslikningen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
A = sp.Matrix([1, 3])
B = sp.Matrix([4, 0])
C = sp.Matrix([9, 4])
P = B + t*(C-B)
AB = B-A
AP = P-A
condition = sp.expand(AB.dot(AP))
solution = sp.solve(sp.Eq(condition, 0), t)[0]
P_value = P.subs(t, solution)
print("P(t) =", tuple(P))
print("AB =", tuple(AB))
print("AP(t) =", tuple(AP))
print("Dot product equation =", condition)
print("t =", solution)
print("P =", tuple(P_value))
print("Orthogonality check =", AB.dot(P_value-A))
Utskrift fra Python:
P(t) = (5*t + 4, 4*t)
AB = (3, -3)
AP(t) = (5*t + 3, 4*t - 3)
Dot product equation = 3*t + 18
t = -6
P = (-26, -24)
Orthogonality check = 0

Fasit: \(P=(-26,-24)\).

Vanlig feil: Å bruke \(P=B+t(C-B)\) og deretter glemme at \(\overrightarrow{AP}=P-A\).
Sensorpunkt: Parameter, skalarprodukt og koordinatkontroll skal vises.
Del 1 - Oppgave 4aAlgoritmeforståelse

Oppgave 4a

Oppgave: Forklar strategien i programmet som søker etter maksimalverdien til \(A(t)=t(t^2-9)^4\) på \([0,3]\).
Vis løsning

Hva spør oppgaven om? Vi skal forklare hva løkken undersøker, hvordan t endres, og når programmet stopper.

Steg 1 - Arealfunksjonen

Programmet definerer arealet \(A(t)=t(t^2-9)^4\).

Steg 2 - Startverdi og steglengde

Søket starter ved \(t=0\) og bruker steglengden \(d=0{,}01\).

Steg 3 - Sammenlikning

Løkken undersøker om \(A(t+d)>A(t)\).

Steg 4 - Flytt mot høyre

Så lenge arealet øker, erstattes t med \(t+d\).

Steg 5 - Stoppkriterium

Når neste punkt ikke gir større areal, stopper løkken.

Steg 6 - Nøyaktighet

Svaret er en numerisk tilnærming med oppløsning omtrent 0,01, ikke et eksakt bevis.

Programmet slik det står i originaleksamen.
Programmet slik det står i originaleksamen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
IterationList[If[A(t)<A(t+0.01),t+0.01,t],0,110]
stopp nær \(t=1\)

Tolkning: Algoritmen er et trinnvis søk etter første lokale maksimum.

Python-kontroll med SymPy

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

t = 0.0
d = 0.01
iterations = 0
while A(t) < A(t+d):
    t = t + d
    iterations += 1
print("Iterations =", iterations)
print("Final t =", round(t, 12))
print("A(t) =", A(t))
print("A(t+d) =", A(t+d))
print("Next value is larger:", A(t) < A(t+d))
print("The search stops near t = 1")
Utskrift fra Python:
Iterations = 100
Final t = 1.0
A(t) = 4095.999999999999
A(t+d) = 4095.5399809454325
Next value is larger: False
The search stops near t = 1

Fasit: Programmet går mot høyre i steg på 0,01 og stopper når arealet ikke lenger øker.

Vanlig feil: Å hevde at løkken automatisk beviser et globalt maksimum i alle funksjoner.
Sensorpunkt: Strategi, steglengde, stoppkriterium og begrensning bør forklares.
Del 1 - Oppgave 4bOptimering uten hjelpemidler

Oppgave 4b

Oppgave: Løs oppgaven: Bestem t som gir størst areal for rektangelet når \(A(t)=t(t^2-9)^4\), \(0\le t\le3\).
Vis løsning

Hva spør oppgaven om? Vi skal derivere arealfunksjonen og sammenlikne kritiske punkter og endepunkter.

Steg 1 - Skriv arealet

Fordi fjerde potens er positiv, kan vi skrive \(A(t)=t(9-t^2)^4\).

Steg 2 - Deriver

\[A^{\prime}(t)=(9-t^2)^4-8t^2(9-t^2)^3.\]

Steg 3 - Faktoriser

\[A^{\prime}(t)=9(9-t^2)^3(1-t^2).\]

Steg 4 - Kritiske punkter

I intervallet får vi \(t=1\) og \(t=3\). Endepunktet \(t=0\) må også kontrolleres.

Steg 5 - Sammenlikn

\[A(0)=0,\quad A(1)=8^4=4096,\quad A(3)=0.\]

Steg 6 - Konklusjon

Det største arealet oppnås ved \(t=1\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Extremum[t*(t^2-9)^4,0<=t<=3]
maksimum ved \(t=1\), areal \(4096\)

Tolkning: CAS bekrefter det globale maksimumet på intervallet.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
A = t*(t**2-9)**4
A_prime = sp.factor(sp.diff(A, t))
critical = sp.solve(sp.Eq(A_prime, 0), t)
candidates = [sp.Integer(0), sp.Integer(1), sp.Integer(3)]
values = [(value, sp.simplify(A.subs(t, value))) for value in candidates]
print("A(t) =", A)
print("A'(t) =", A_prime)
print("Critical points =", critical)
print("Candidates and areas =", values)
maximum = max(values, key=lambda pair: pair[1])
print("Maximum candidate =", maximum)
Utskrift fra Python:
A(t) = t*(t**2 - 9)**4
A'(t) = 9*(t - 3)**3*(t - 1)*(t + 1)*(t + 3)**3
Critical points = [-3, -1, 1, 3]
Candidates and areas = [(0, 0), (1, 4096), (3, 0)]
Maximum candidate = (1, 4096)

Fasit: \(t=1\), og det største arealet er \(4096\).

Vanlig feil: Å bare bruke programmets avrundede svar uten derivert og endepunktskontroll.
Sensorpunkt: Derivasjon, faktorisering og global sammenlikning kreves.

Del 2 - med hjelpemidler

Del 2 - Oppgave 1aGjennomsnittlig prosentvis vekst

Oppgave 1a

Oppgave: Timelønnen økte fra 272,55 kr i 2008 til 340,10 kr i 2022. Finn gjennomsnittlig årlig prosentvis vekst.
Vis løsning

Hva spør oppgaven om? Vi skal finne den konstante årlige vekstfaktoren over 14 år.

Steg 1 - Antall vekstperioder

Fra 2008 til 2022 er det \(14\) år.

Steg 2 - Likning

\[272{,}55\cdot a^{14}=340{,}10.\]

Steg 3 - Løs for vekstfaktoren

\[a=(\frac{340{,}10}{272{,}55})^{1/14}\approx1{,}015941.\]

Steg 4 - Gjør om til prosent

\[(a-1)\cdot100\%\approx1{,}594\%.\]

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
(340.10/272.55)^(1/14)-1
\(0.0159413\)

Tolkning: Vekstraten er omtrent 1,59 prosent per år.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math
start_wage = 272.55
end_wage = 340.10
years = 14
growth_factor = (end_wage/start_wage)**(1/years)
growth_rate = growth_factor - 1
print("Start wage =", start_wage)
print("End wage =", end_wage)
print("Number of years =", years)
print("Annual growth factor =", round(growth_factor, 12))
print("Annual growth rate =", round(growth_rate, 12))
print("Annual percentage =", round(100*growth_rate, 6))
print("Check =", round(start_wage*growth_factor**years, 10))
Utskrift fra Python:
Start wage = 272.55
End wage = 340.1
Number of years = 14
Annual growth factor = 1.015941271115
Annual growth rate = 0.015941271115
Annual percentage = 1.594127
Check = 340.1

Fasit: Omtrent \(1{,}59\%\) per år.

Vanlig feil: Å dele total prosentøkning på 14 uten å bruke rentesrente.
Sensorpunkt: Antall perioder og eksponentiell vekstlikning må være riktige.
Del 2 - Oppgave 1bEksponentialregresjon

Oppgave 1b

Oppgave: Bruk alle tabelltallene til å lage en eksponentialfunksjon g for timelønnen x år etter 2008.
Vis løsning

Hva spør oppgaven om? Vi skal gjennomføre eksponentialregresjon og forklare variabelen.

Steg 1 - Kod årstallene

Bruk \(x=0,2,5,7,11,14\).

Steg 2 - Modellform

Vi velger \(g(x)=A\cdot b^x\).

Steg 3 - Regresjon

Lineær regresjon på \(\ln y\) gir omtrent \(A=277{,}833\) og \(b=1{,}015457\).

Steg 4 - Modell

\[g(x)=277{,}833\cdot1{,}015457^x.\]

Steg 5 - Kontroll

Modellen gir \(g(14)\approx344{,}38\), i nærheten av observasjonen 340,10.

Steg 6 - Tolkning

Modellen glatter ut variasjonene og er ikke tvunget gjennom første datapunkt.

Observerte timelønninger og eksponentialmodellen.
Observerte timelønninger og eksponentialmodellen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
FitGrowth[{(0,272.55),(2,285.50),(5,307.30),(7,314.00),(11,327.60),(14,340.10)}]
\(g(x)\approx277.833\cdot1.015457^x\)

Tolkning: Eksponentialregresjonen bruker alle datapunktene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import numpy as np
x = np.array([0, 2, 5, 7, 11, 14], dtype=float)
y = np.array([272.55, 285.50, 307.30, 314.00, 327.60, 340.10], dtype=float)
slope, intercept = np.polyfit(x, np.log(y), 1)
A = np.exp(intercept)
b = np.exp(slope)
predicted = A*b**x
rmse = np.sqrt(np.mean((predicted-y)**2))
print("A =", round(A, 12))
print("b =", round(b, 12))
print("Model: g(x) = A*b**x")
print("g(0) =", round(A, 6))
print("g(14) =", round(A*b**14, 6))
print("RMSE =", round(rmse, 6))
Utskrift fra Python:
A = 277.83265814877
b = 1.015456718024
Model: g(x) = A*b**x
g(0) = 277.832658
g(14) = 344.384133
RMSE = 4.553125

Fasit: En mulig modell er \(g(x)=277{,}833\cdot1{,}015457^x\).

Vanlig feil: Å bruke x som kalenderår uten å endre modellen eller forklare det.
Sensorpunkt: Regresjonsmetode, parametere og betydningen av x skal dokumenteres.
Del 2 - Oppgave 1cGeometriske summer og samlet lønn

Oppgave 1c

Oppgave: Bestem samlet lønn for Amalie og Per i årene 2008–2022 når begge arbeider 1700 timer per år.
Vis løsning

Hva spør oppgaven om? Vi skal summere 15 årslønninger, inkludert både 2008 og 2022.

Steg 1 - Antall år

Årene 2008 til og med 2022 gir \(15\) år.

Steg 2 - Amalie

Timelønnen i år k er \(272{,}55\cdot1{,}023^k\), for \(k=0,\ldots,14\).

Steg 3 - Summer Amalie

\[L_A=1700\sum_{k=0}^{14}272{,}55\cdot1{,}023^k\approx8\,188\,601\text{ kr}.\]

Steg 4 - Per

Vi bruker regresjonsmodellen \(g(k)=277{,}833\cdot1{,}015457^k\).

Steg 5 - Summer Per

\[L_P=1700\sum_{k=0}^{14}g(k)\approx7\,905\,086\text{ kr}.\]

Steg 6 - Vurdering

Pers svar avhenger litt av avrundingen og den valgte regresjonsmodellen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Sum[1700*272.55*1.023^k,k,0,14]
\(8.189\) mill. kr

Tolkning: Den geometriske summen gir Amalies samlede lønn.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
A = 277.83265814877024
b = 1.0154567180236385
hours = 1700
amalie_wages = [272.55*1.023**k for k in range(15)]
per_wages = [A*b**k for k in range(15)]
amalie_total = hours*sum(amalie_wages)
per_total = hours*sum(per_wages)
print("Number of years =", len(amalie_wages))
print("Amalie first hourly wage =", round(amalie_wages[0], 6))
print("Amalie last hourly wage =", round(amalie_wages[-1], 6))
print("Amalie total salary =", round(amalie_total, 2))
print("Per first model wage =", round(per_wages[0], 6))
print("Per last model wage =", round(per_wages[-1], 6))
print("Per total salary =", round(per_total, 2))
print("Difference =", round(amalie_total-per_total, 2))
Utskrift fra Python:
Number of years = 15
Amalie first hourly wage = 272.55
Amalie last hourly wage = 374.718434
Amalie total salary = 8188601.24
Per first model wage = 277.832658
Per last model wage = 344.384133
Per total salary = 7905086.29
Difference = 283514.95

Fasit: Amalie: ca. \(8\,188\,601\) kr. Per: ca. \(7\,905\,086\) kr med modellen fra b.

Vanlig feil: Å summere bare 14 lønninger fordi tidsrommet er 14 år langt.
Sensorpunkt: Inkluder begge endepunktsårene og oppgi modellavhengighet.
Del 2 - Oppgave 1dKrav til framtidig lønnsvekst

Oppgave 1d

Oppgave: Per skal i 2025 ha samme timelønn som Amalie. Finn nødvendig årlig prosentvis økning for Per fra 2022.
Vis løsning

Hva spør oppgaven om? Vi skal beregne Amalies lønn i 2025 og løse en treårig vekstlikning for Per.

Steg 1 - Amalies timelønn i 2025

Fra 2008 til 2025 er det 17 vekstperioder: \[272{,}55\cdot1{,}023^{17}\approx401{,}173.\]

Steg 2 - Pers startpunkt

Per har 340,10 kr per time i 2022.

Steg 3 - Tre vekstperioder

La r være årlig vekstrate. Da \[340{,}10(1+r)^3=401{,}173.\]

Steg 4 - Løs

\[r=(\frac{401{,}173}{340{,}10})^{1/3}-1\approx0{,}056595.\]

Steg 5 - Prosent

Per trenger omtrent \(5{,}66\%\) lønnsvekst hvert år.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
(272.55*1.023^17/340.10)^(1/3)-1
\(0.056595\)

Tolkning: Treårig vekstrate er omtrent 5,66 prosent.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
start_per = 340.10
amalie_2025 = 272.55*1.023**17
years = 3
required_factor = (amalie_2025/start_per)**(1/years)
required_rate = required_factor-1
print("Amalie hourly wage in 2025 =", round(amalie_2025, 12))
print("Per hourly wage in 2022 =", start_per)
print("Required annual factor =", round(required_factor, 12))
print("Required annual rate =", round(required_rate, 12))
print("Required percentage =", round(100*required_rate, 6))
print("Check in 2025 =", round(start_per*required_factor**3, 12))
Utskrift fra Python:
Amalie hourly wage in 2025 = 401.173243220885
Per hourly wage in 2022 = 340.1
Required annual factor = 1.056594735586
Required annual rate = 0.056594735586
Required percentage = 5.659474
Check in 2025 = 401.173243220885

Fasit: Omtrent \(5{,}66\%\) per år.

Vanlig feil: Å bruke 17 år også for Pers vekst fra 2022 til 2025.
Sensorpunkt: Riktig startår, tre vekstperioder og kontroll kreves.
Del 2 - Oppgave 2aParallellogram og vektorer

Oppgave 2a

Oppgave: Gitt \(A(3,2)\), \(\vec u=(4,3)\), \(\vec v=(2t,5t)\), \(\overrightarrow{AB}=\vec u\) og \(\overrightarrow{AD}=\vec v\). Finn B, C og D.
Vis løsning

Hva spør oppgaven om? Vi skal legge sidevektorene til startpunktet A.

Steg 1 - Punkt B

\[B=A+\vec u=(7,5).\]

Steg 2 - Punkt D

\[D=A+\vec v=(3+2t,2+5t).\]

Steg 3 - Punkt C

\[C=A+\vec u+\vec v=(7+2t,5+5t).\]

Steg 4 - Kontroll

\(C-B=\vec v\) og \(C-D=\vec u\), som et parallellogram krever.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
A=(3,2); B=A+(4,3); D=A+(2t,5t); C=B+(2t,5t)
B=(7,5), D=(3+2t,2+5t), C=(7+2t,5+5t)

Tolkning: Vektoraddisjon gir hjørnene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
A = sp.Matrix([3,2])
u = sp.Matrix([4,3])
v = sp.Matrix([2*t,5*t])
B = A+u
D = A+v
C = A+u+v
print("A =", tuple(A))
print("u =", tuple(u))
print("v =", tuple(v))
print("B =", tuple(B))
print("D =", tuple(D))
print("C =", tuple(C))
print("C-B =", tuple(sp.simplify(C-B)))
print("C-D =", tuple(sp.simplify(C-D)))
Utskrift fra Python:
A = (3, 2)
u = (4, 3)
v = (2*t, 5*t)
B = (7, 5)
D = (2*t + 3, 5*t + 2)
C = (2*t + 7, 5*t + 5)
C-B = (2*t, 5*t)
C-D = (4, 3)

Fasit: \(B=(7,5)\), \(D=(3+2t,2+5t)\), \(C=(7+2t,5+5t)\).

Vanlig feil: Å sette C lik A+v og dermed forveksle C og D.
Sensorpunkt: Vis vektoraddisjon og parallellogramkontroll.
Del 2 - Oppgave 2bDiagonalens midtpunkt

Oppgave 2b

Oppgave: Bestem t slik at diagonalenes skjæringspunkt er \(P(8,11)\).
Vis løsning

Hva spør oppgaven om? Vi bruker at diagonalene i et parallellogram halverer hverandre.

Steg 1 - Midtpunktet av AC

\[M=\frac{A+C}{2}=(5+t,\frac{7+5t}{2}).\]

Steg 2 - Bruk x-koordinaten

\(5+t=8\), så \(t=3\).

Steg 3 - Kontroller y-koordinaten

\[(7+5\cdot3)/2=22/2=11.\]

Steg 4 - Konklusjon

Begge koordinatene stemmer, så \(t=3\).

Parallellogrammet og diagonalene når t=3.
Parallellogrammet og diagonalene når t=3.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[((3+(7+2t))/2=8,(2+(5+5t))/2=11),t]
\(t=3\)

Tolkning: Begge midtpunktslikningene gir samme verdi.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
t = sp.symbols("t", real=True)
A = sp.Matrix([3,2])
C = sp.Matrix([7+2*t,5+5*t])
midpoint = sp.simplify((A+C)/2)
solutions = sp.solve([sp.Eq(midpoint[0],8),sp.Eq(midpoint[1],11)],[t], dict=True)
print("Midpoint =", tuple(midpoint))
print("Solutions =", solutions)
value = sp.Integer(3)
print("Midpoint at t=3 =", tuple(midpoint.subs(t,value)))
B = sp.Matrix([7,5]); D = sp.Matrix([3+2*t,2+5*t])
print("Midpoint of BD at t=3 =", tuple(((B+D)/2).subs(t,value)))
Utskrift fra Python:
Midpoint = (t + 5, 5*t/2 + 7/2)
Solutions = [{t: 3}]
Midpoint at t=3 = (8, 11)
Midpoint of BD at t=3 = (8, 11)

Fasit: \(t=3\).

Vanlig feil: Å bruke skjæringspunktet som C i stedet for midtpunktet.
Sensorpunkt: Midtpunktegenskapen og kontroll av begge koordinater må vises.
Del 2 - Oppgave 3aPåstand om logaritmer

Oppgave 3a

Oppgave: Avgjør om påstanden er sann: Hvis \(x>0\), så er \((\ln x)^4=4\ln x\).
Vis løsning

Hva spør oppgaven om? Vi skal enten bevise identiteten eller finne et moteksempel.

Steg 1 - Velg en enkel verdi

Sett \(x=e\), som er positiv.

Steg 2 - Venstre side

\((\ln e)^4=1^4=1\).

Steg 3 - Høyre side

\(4\ln e=4\).

Steg 4 - Konklusjon

Sidene er ulike, så påstanden er usann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Substitute[(ln(x))^4-4ln(x),x,e]
\(-3\)

Tolkning: Ett moteksempel avkrefter en universell påstand.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.E
left = sp.log(x)**4
right = 4*sp.log(x)
print("x = e")
print("(ln x)^4 =", left)
print("4 ln x =", right)
print("Difference =", sp.simplify(left-right))
print("Statement true for all x>0:", left == right)
Utskrift fra Python:
x = e
(ln x)^4 = 1
4 ln x = 4
Difference = -3
Statement true for all x>0: False

Fasit: Usann; \(x=e\) gir 1 på venstre side og 4 på høyre.

Vanlig feil: Å forveksle potensregelen \(\ln(x^4)=4\ln x\) med \((\ln x)^4\).
Sensorpunkt: Et tydelig moteksempel og riktig logaritmeregel holder.
Del 2 - Oppgave 3bEkstremalpunkt for fjerdegrad

Oppgave 3b

Oppgave: Avgjør om alle fjerdegradsfunksjoner må ha minst ett ekstremalpunkt.
Vis løsning

Hva spør oppgaven om? Vi skal bruke endeadferden og kontinuiteten til en reell fjerdegradsfunksjon.

Steg 1 - Generell form

En fjerdegradsfunksjon har ledende ledd \(ax^4\), der \(a\ne0\).

Steg 2 - Endeadferd

Hvis \(a>0\), går funksjonen mot \(+\infty\) i begge retninger; hvis \(a<0\), går den mot \(-\infty\) i begge retninger.

Steg 3 - Kontinuitet

Polynomet er kontinuerlig og må derfor oppnå et globalt minimum når \(a>0\), eller globalt maksimum når \(a<0\).

Steg 4 - Derivert perspektiv

Den deriverte er et tredjegradspolynom som går fra ett fortegn til det motsatte, og har minst ett fortegnsskiftende nullpunkt.

Steg 5 - Konklusjon

Påstanden er sann.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Degree[a*x^4+b*x^3+c*x^2+d*x+e,x]
4

Tolkning: Lik endeadferd på begge sider tvinger fram et ekstremum.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
examples = [x**4+x, -x**4+3*x, 2*x**4-5*x**2+1]
for f in examples:
    derivative = sp.diff(f,x)
    roots = sp.nroots(derivative)
    real_roots = [root for root in roots if abs(complex(root).imag) < 1e-10]
    print("f(x) =", f)
    print("f'(x) =", derivative)
    print("Real stationary points =", real_roots)
print("A real cubic derivative always has at least one real root")
print("Its leading term changes sign between minus and plus infinity")
Utskrift fra Python:
f(x) = x**4 + x
f'(x) = 4*x**3 + 1
Real stationary points = [-0.629960524947437]
f(x) = -x**4 + 3*x
f'(x) = 3 - 4*x**3
Real stationary points = [0.908560296416070]
f(x) = 2*x**4 - 5*x**2 + 1
f'(x) = 8*x**3 - 10*x
Real stationary points = [-1.11803398874989, 0, 1.11803398874989]
A real cubic derivative always has at least one real root
Its leading term changes sign between minus and plus infinity

Fasit: Sann. Enhver reell fjerdegradsfunksjon har minst ett lokalt/globalt ekstremalpunkt.

Vanlig feil: Å si bare at den deriverte har en rot; man bør også sikre at minst én rot gir fortegnsskifte.
Sensorpunkt: Endeadferd eller fortegnsskifte i den deriverte må begrunnes.
Del 2 - Oppgave 3cNødvendig vilkår for omvendt funksjon

Oppgave 3c

Oppgave: Avgjør om en funksjon med omvendt funksjon må være strengt voksende eller strengt avtakende.
Vis løsning

Hva spør oppgaven om? Vi skal skille mellom det nødvendige kravet injektivitet og det sterkere monotonicitetskravet.

Steg 1 - Det egentlige kravet

En omvendt funksjon finnes når funksjonen er en-til-en på definisjonsmengden.

Steg 2 - Monotoni er tilstrekkelig

En strengt monoton funksjon er injektiv, men dette er ikke nødvendig for vilkårlige definisjonsmengder eller diskontinuerlige funksjoner.

Steg 3 - Moteksempel

På domenet \(\{0,1,2\}\) kan vi definere \(f(0)=0\), \(f(1)=2\), \(f(2)=1\).

Steg 4 - Kontroller

Alle funksjonsverdiene er ulike, så funksjonen er injektiv. Verdiene 0,2,1 er verken strengt voksende eller strengt avtakende.

Steg 5 - Konklusjon

Påstanden er usann i den generelle formuleringen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Unique[{0,2,1}]
true

Tolkning: Ulike funksjonsverdier gir en omvendt funksjon selv om rekkefølgen ikke er monoton.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
domain = [0, 1, 2]
values = [0, 2, 1]
injective = len(set(values)) == len(values)
strictly_increasing = all(values[i] < values[i+1] for i in range(len(values)-1))
strictly_decreasing = all(values[i] > values[i+1] for i in range(len(values)-1))
inverse = {value: argument for argument, value in zip(domain, values)}
print("Domain =", domain)
print("Function values =", values)
print("Injective =", injective)
print("Strictly increasing =", strictly_increasing)
print("Strictly decreasing =", strictly_decreasing)
print("Inverse mapping =", inverse)
Utskrift fra Python:
Domain = [0, 1, 2]
Function values = [0, 2, 1]
Injective = True
Strictly increasing = False
Strictly decreasing = False
Inverse mapping = {0: 0, 2: 1, 1: 2}

Fasit: Usann generelt. Det nødvendige kravet er at funksjonen er injektiv.

Vanlig feil: Å glemme at streng monotoni er et praktisk tilstrekkelig kriterium på intervaller, ikke den generelle definisjonen.
Sensorpunkt: Et gyldig injektivt, ikke-monotont moteksempel må forklares.
Del 2 - Oppgave 4aHorisontallinjetest

Oppgave 4a

Oppgave: Avgjør for grafene f, g, h og k om funksjonen har en omvendt funksjon.
Vis løsning

Hva spør oppgaven om? Vi skal bruke horisontallinjetesten på hver graf.

Steg 1 - f

Grafen er symmetrisk om y-aksen. Mange horisontale linjer skjærer grafen to ganger, så f er ikke injektiv.

Steg 2 - g

Grafen er strengt voksende fra startpunktet og videre. Hver horisontal linje skjærer høyst én gang, så g har omvendt funksjon.

Steg 3 - h

De to grafdelene gir samme y-verdier for enkelte nivåer, blant annet omkring \(y=2\). Derfor er h ikke injektiv.

Steg 4 - k

Grafen er strengt avtakende fra startpunktet og videre. Derfor har k en omvendt funksjon.

Steg 5 - Konklusjon

Bare g og k består horisontallinjetesten.

De fire grafene fra originaleksamen.
De fire grafene fra originaleksamen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
HorizontalLineTest
g og k

Tolkning: Grafene g og k er en-til-en.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
functions = {
    "f": {"injective": False, "reason": "symmetric branches"},
    "g": {"injective": True, "reason": "strictly increasing"},
    "h": {"injective": False, "reason": "overlapping y-values"},
    "k": {"injective": True, "reason": "strictly decreasing"},
}
for name, information in functions.items():
    print(name, "has inverse:", information["injective"])
    print("reason:", information["reason"])
print("Functions with inverses =", [name for name, info in functions.items() if info["injective"]])
Utskrift fra Python:
f has inverse: False
reason: symmetric branches
g has inverse: True
reason: strictly increasing
h has inverse: False
reason: overlapping y-values
k has inverse: True
reason: strictly decreasing
Functions with inverses = ['g', 'k']

Fasit: f: nei, g: ja, h: nei, k: ja.

Vanlig feil: Å bruke vertikallinjetesten; den tester om en graf er en funksjon, ikke om funksjonen er injektiv.
Sensorpunkt: Hver graf må vurderes og begrunnes separat.
Del 2 - Oppgave 4bDefinisjonsmengde til omvendt funksjon

Oppgave 4b

Oppgave: Bestem definisjonsmengden til den omvendte funksjonen i tilfellene der den finnes.
Vis løsning

Hva spør oppgaven om? Definisjonsmengden til en omvendt funksjon er verdimengden til originalfunksjonen.

Steg 1 - g

Grafen til g starter ved \(y=1\) med inkludert endepunkt og fortsetter oppover. Derfor er \(V_g=[1,\infty)\).

Steg 2 - Inversen til g

\[D_{g^{-1}}=[1,\infty).\]

Steg 3 - k

Grafen til k starter ved \(y=3\) med inkludert endepunkt og fortsetter nedover. Derfor er \(V_k=(-\infty,3]\).

Steg 4 - Inversen til k

\[D_{k^{-1}}=(-\infty,3].\]

Steg 5 - f og h

De har ingen omvendt funksjon på de viste definisjonsmengdene.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Range[g], Range[k]
\([1,\infty)\), \(( -\infty,3]\)

Tolkning: Verdimengdene blir domenene til inversene.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
interval_g = "[1, infinity)"
interval_k = "(-infinity, 3]"
print("Range of g =", interval_g)
print("Domain of inverse g =", interval_g)
print("Range of k =", interval_k)
print("Domain of inverse k =", interval_k)
print("f has no inverse on shown domain")
print("h has no inverse on shown domain")
Utskrift fra Python:
Range of g = [1, infinity)
Domain of inverse g = [1, infinity)
Range of k = (-infinity, 3]
Domain of inverse k = (-infinity, 3]
f has no inverse on shown domain
h has no inverse on shown domain

Fasit: \(D_{g^{-1}}=[1,\infty)\) og \(D_{k^{-1}}=(-\infty,3]\).

Vanlig feil: Å oppgi definisjonsmengden til g og k i stedet for verdimengden.
Sensorpunkt: Les endepunkter og fortsettelsesretning direkte fra grafene.
Del 2 - Oppgave 5aDesibel og logaritmer

Oppgave 5a

Oppgave: Sammenhengen er \(L=120+10\lg I\). Bestem I når \(L=130\) dB.
Vis løsning

Hva spør oppgaven om? Vi skal isolere tierlogaritmen og oppheve den med en tierpotens.

Steg 1 - Sett inn

\[130=120+10\lg I.\]

Steg 2 - Isoler logaritmen

\[10=10\lg I\Rightarrow\lg I=1.\]

Steg 3 - Opphev logaritmen

\[I=10^1=10.\]

Steg 4 - Enhet

Lydintensiteten er \(10\,\mathrm{W/m^2}\).

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[130=120+10*log(10,I),I]
\(I=10\)

Tolkning: CAS løser logaritmelikningen.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
I = sp.symbols("I", positive=True)
solution = sp.solve(sp.Eq(130,120+10*sp.log(I,10)),I)[0]
print("Equation: 130 = 120 + 10*lg(I)")
print("lg(I) =", sp.Rational(130-120,10))
print("I =", solution)
print("Unit: W/m^2")
print("Check L =", sp.simplify(120+10*sp.log(solution,10)))
Utskrift fra Python:
Equation: 130 = 120 + 10*lg(I)
lg(I) = 1
I = 10
Unit: W/m^2
Check L = 130

Fasit: \(I=10\,\mathrm{W/m^2}\).

Vanlig feil: Å tolke \(\lg I=1\) som \(I=1\).
Sensorpunkt: Logaritmen må oppheves med grunntall 10.
Del 2 - Oppgave 5bEndring på logaritmisk skala

Oppgave 5b

Oppgave: Hvor mange prosent øker lydintensiteten når lydstyrken øker med 2 dB?
Vis løsning

Hva spør oppgaven om? Vi skal finne intensitetsforholdet som svarer til en differanse på 2 dB.

Steg 1 - To lydnivåer

\(L_2-L_1=10\lg(I_2/I_1)\).

Steg 2 - Sett inn 2 dB

\[2=10\lg(I_2/I_1).\]

Steg 3 - Finn forholdet

\[I_2/I_1=10^{0.2}\approx1{,}584893.\]

Steg 4 - Prosentøkning

\[(1{,}584893-1)\cdot100\%\approx58{,}49\%.\]

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
100*(10^(2/10)-1)
\(58.4893\%\)

Tolkning: En økning på 2 dB betyr faktor 1,5849 i intensitet.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math
delta_L = 2
intensity_factor = 10**(delta_L/10)
percentage_increase = 100*(intensity_factor-1)
print("Increase in sound level =", delta_L, "dB")
print("Intensity factor =", round(intensity_factor, 12))
print("Percentage increase =", round(percentage_increase, 8))
print("Check delta L =", round(10*math.log10(intensity_factor), 12))
Utskrift fra Python:
Increase in sound level = 2 dB
Intensity factor = 1.584893192461
Percentage increase = 58.48931925
Check delta L = 2.0

Fasit: Omtrent \(58{,}5\%\).

Vanlig feil: Å anta at 2 dB betyr 2 prosent.
Sensorpunkt: Bruk differansen mellom logaritmeuttrykkene.
Del 2 - Oppgave 5cOmvendt kvadratlov

Oppgave 5c

Oppgave: Et fly gir 140 dB på 50 m. Finn minste avstand der lydstyrken er lavere enn 130 dB.
Vis løsning

Hva spør oppgaven om? Vi skal kombinere desibelforskjellen med at intensiteten er omvendt proporsjonal med \(r^2\).

Steg 1 - Intensitetsforhold

En nedgang fra 140 til 130 dB betyr at intensiteten blir \(10^{-1}=1/10\) av den opprinnelige.

Steg 2 - Avstandsforhold

\[\frac{I_2}{I_1}=\frac{r_1^2}{r_2^2}=\frac1{10}.\]

Steg 3 - Løs

\[r_2=r_1\sqrt{10}=50\sqrt{10}\approx158{,}11\text{ m}.\]

Steg 4 - Streng ulikhet

Ved nøyaktig \(50\sqrt{10}\) m er nivået 130 dB. For å være lavere må avstanden være større enn dette.

Steg 5 - Praktisk svar

Man må være litt mer enn 158 m fra flyet.

Sammenhengen mellom avstand og lydstyrke.
Sammenhengen mellom avstand og lydstyrke.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Solve[140-20*log(10,r/50)=130,r]
\(r=50\sqrt{10}\)

Tolkning: Terskelavstanden er ca. 158,1 m.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
r = sp.symbols("r", positive=True)
threshold = 50*sp.sqrt(10)
L = 140-20*sp.log(r/50,10)
print("Threshold distance exact =", threshold)
print("Threshold distance decimal =", sp.N(threshold,12))
print("Sound level at threshold =", sp.simplify(L.subs(r,threshold)))
for distance in [158,159,160]:
    level = sp.N(L.subs(r,distance),10)
    print("r =", distance, "m, L =", level, "dB")
print("Condition for L < 130: r > 50*sqrt(10)")
Utskrift fra Python:
Threshold distance exact = 50*sqrt(10)
Threshold distance decimal = 158.113883008
Sound level at threshold = 130
r = 158 m, L = 130.0062583 dB
r = 159 m, L = 129.9514576 dB
r = 160 m, L = 129.8970004 dB
Condition for L < 130: r > 50*sqrt(10)

Fasit: \(r>50\sqrt{10}\text{ m}\approx158{,}1\text{ m}\).

Vanlig feil: Å si at 158,1 m gir lavere enn 130 dB; der er nivået nøyaktig 130 dB.
Sensorpunkt: Intensitetsforhold, kvadratrot og streng ulikhet må framgå.
Del 2 - Oppgave 6aAvstand fra punkt til linje

Oppgave 6a

Oppgave: Linjen gjennom \(A(4,-2)\) og \(B(6,6)\). Finn eksakt avstand fra \(P(2,8)\) til linjen.
Vis løsning

Hva spør oppgaven om? Vi skal finne en standardlikning for linjen og bruke avstandsformelen.

Steg 1 - Stigningstall

\[m=(6-(-2))/(6-4)=4.\]

Steg 2 - Linjelikning

Gjennom A: \(y+2=4(x-4)\), altså \[4x-y-18=0.\]

Steg 3 - Avstandsformel

For \(ax+by+c=0\): \[d=\frac{|ax_0+by_0+c|}{\sqrt{a^2+b^2}}.\]

Steg 4 - Sett inn P

\[d=\frac{|4\cdot2-8-18|}{\sqrt{16+1}}=\frac{18}{\sqrt{17}}.\]

Steg 5 - Rasjonaliser

\[d=\frac{18\sqrt{17}}{17}.\]

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Distance[(2,8),Line[(4,-2),(6,6)]]
\(18/\sqrt{17}\)

Tolkning: GeoGebra gir den eksakte punkt-linje-avstanden.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
A = sp.Point(4,-2)
B = sp.Point(6,6)
P = sp.Point(2,8)
line = sp.Line(A,B)
distance = sp.simplify(line.distance(P))
standard_numerator = abs(4*2-8-18)
print("Line through A and B:", line)
print("Standard equation: 4*x - y - 18 = 0")
print("Numerator =", standard_numerator)
print("Denominator =", sp.sqrt(17))
print("Exact distance =", distance)
print("Rationalized =", sp.radsimp(distance))
print("Decimal distance =", sp.N(distance,12))
Utskrift fra Python:
Line through A and B: Line2D(Point2D(4, -2), Point2D(6, 6))
Standard equation: 4*x - y - 18 = 0
Numerator = 18
Denominator = sqrt(17)
Exact distance = 18*sqrt(17)/17
Rationalized = 18*sqrt(17)/17
Decimal distance = 4.36564125065

Fasit: \(d=18/\sqrt{17}=18\sqrt{17}/17\).

Vanlig feil: Å bruke avstanden til A eller B i stedet for den vinkelrette avstanden.
Sensorpunkt: Linjelikning og korrekt avstandsformel må vises.
Del 2 - Oppgave 6bMinste avstand mellom graf og linje

Oppgave 6b

Oppgave: For \(f(x)=x^2+2x\), finn eksakt minste avstand mellom grafen og linjen \(\ell\).
Vis løsning

Hva spør oppgaven om? Vi skal uttrykke avstanden fra et vilkårlig punkt på grafen til linjen og minimere.

Steg 1 - Punkt på grafen

Et vilkårlig punkt er \(Q=(x,x^2+2x)\).

Steg 2 - Avstandsuttrykk

\[d(x)=\frac{|4x-(x^2+2x)-18|}{\sqrt{17}}.\]

Steg 3 - Forenkle absoluttverdien

Uttrykket inni er \(-[(x-1)^2+17]\), alltid negativt. Derfor \[d(x)=\frac{(x-1)^2+17}{\sqrt{17}}.\]

Steg 4 - Minimer

Kvadratet er minst 0 ved \(x=1\).

Steg 5 - Minste avstand

\[d_{\min}=\frac{17}{\sqrt{17}}=\sqrt{17}.\]

Steg 6 - Geometrisk kontroll

Parabeltangenten ved \(x=1\) har stigning \(f^{\prime}(1)=4\), altså samme retning som linjen. Den korteste forbindelsen er derfor normal på begge.

Parabelen, linjen og den korteste forbindelsen.
Parabelen, linjen og den korteste forbindelsen.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Minimize[Distance[(x,x^2+2x),Line[(4,-2),(6,6)]],x]
\(\sqrt{17}\)

Tolkning: Minimum oppnås ved x=1.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import sympy as sp
x = sp.symbols("x", real=True)
f = x**2+2*x
numerator = sp.simplify(abs(4*x-f-18))
positive_form = (x-1)**2+17
distance = positive_form/sp.sqrt(17)
derivative = sp.diff(distance,x)
critical = sp.solve(sp.Eq(derivative,0),x)
minimum = sp.simplify(distance.subs(x,critical[0]))
print("Point on graph = (x,", f, ")")
print("Expression before absolute value =", sp.expand(4*x-f-18))
print("Positive numerator =", positive_form)
print("Distance function =", distance)
print("Derivative =", derivative)
print("Critical x =", critical)
print("Minimum distance =", minimum)
print("Tangent slope at x=1 =", sp.diff(f,x).subs(x,1))
Utskrift fra Python:
Point on graph = (x, x**2 + 2*x )
Expression before absolute value = -x**2 + 2*x - 18
Positive numerator = (x - 1)**2 + 17
Distance function = sqrt(17)*((x - 1)**2 + 17)/17
Derivative = sqrt(17)*(2*x - 2)/17
Critical x = [1]
Minimum distance = sqrt(17)
Tangent slope at x=1 = 4

Fasit: \(\sqrt{17}\).

Vanlig feil: Å minimere bare vertikal avstand mellom grafene.
Sensorpunkt: Bruk vinkelrett punkt-linje-avstand og kontroller minimumet.
Del 2 - Oppgave 7Programmering og funksjonsgjennomsnitt

Oppgave 7

Oppgave: Lag et program som bruker den oppgitte algoritmen for å finne gjennomsnittet til \(f(x)=\sqrt{x}\) på \([0,1]\). Hva blir gjennomsnittet?
Vis løsning

Hva spør oppgaven om? Vi skal implementere N+1 jevnt fordelte punkter, ta middelverdien og sammenlikne med den eksakte integralverdien.

Steg 1 - Velg N

Et stort N gir en bedre tilnærming; vi bruker for eksempel \(N=1\,000\,000\).

Steg 2 - Lag prøvepunkter

\[x_i=0+i/N,\qquad i=0,1,\ldots,N.\]

Steg 3 - Beregn funksjonsverdiene

For hvert punkt beregnes \(\sqrt{x_i}\).

Steg 4 - Middelverdi

\[g_N=\frac1{N+1}\sum_{i=0}^{N}\sqrt{x_i}.\]

Steg 5 - Numerisk resultat

Programmet gir omtrent \(0{,}6666665\).

Steg 6 - Eksakt kontroll

Det eksakte funksjonsgjennomsnittet er \[\frac1{1-0}\int_0^1\sqrt{x}\,dx=\frac23.\]

Steg 7 - Konklusjon

Gjennomsnittet er \(2/3\approx0{,}6667\).

Prøvepunkter og den eksakte gjennomsnittsverdien.
Prøvepunkter og den eksakte gjennomsnittsverdien.

GeoGebra/CAS-kontroll

GeoGebra - CAS/grafikk
1
Mean[Sequence[sqrt(i/N),i,0,N]]
\(\approx0.6666665\)

Tolkning: Den diskrete middelverdien nærmer seg 2/3 når N øker.

Python-kontroll med SymPy

Python 3 - faktisk kjøring
import math

def approximate_average(N):
    if N <= 0:
        raise ValueError("N must be a positive integer")
    total = 0.0
    step = 1.0/N
    for i in range(N+1):
        x = i*step
        total += math.sqrt(x)
    return total/(N+1)

for N in [10, 100, 1000, 1000000]:
    approximation = approximate_average(N)
    print("N =", N)
    print("approximate average =", format(approximation, ".12f"))
    print("error from 2/3 =", format(approximation-2/3, ".12e"))
exact_average = 2/3
print("Exact average from integral =", exact_average)
Utskrift fra Python:
N = 10
approximate average = 0.645917583370
error from 2/3 = -2.074908329683e-02
N = 100
approximate average = 0.664814799112
error from 2/3 = -1.851867554639e-03
N = 1000
approximate average = 0.666493640753
error from 2/3 = -1.730259137377e-04
N = 1000000
approximate average = 0.666666499792
error from 2/3 = -1.668743561112e-07
Exact average from integral = 0.6666666666666666

Fasit: Gjennomsnittet er \(\dfrac23\approx0{,}6667\).

Vanlig feil: Å dele summen på N selv om algoritmen bruker N+1 funksjonsverdier.
Sensorpunkt: Programmet må følge algoritmen, dokumentere N og tolke konvergensen.
Kilde og metode: Oppgavetekstene er transkribert fra Utdanningsdirektoratets eksamenssett REA3056 Matematikk R1, våren 2023 (LK20). Løsningene er originale. Alle Python-blokker er kjørt ved generering, og lagret utskrift er hentet direkte fra kjøringen. Grafoppgave 4 er kontrollert mot originalens sidebilde.