Utskrift fra Python:
AB = (5, -1) and |AB|^2 = 26
AC = (8, 3) and |AC|^2 = 73
BC = (3, 4) and |BC|^2 = 25
Exact lengths = {'AB': sqrt(26), 'AC': sqrt(73), 'BC': 5}
Shortest side = BC
Fasit: Siden \(BC\) er kortest, med lengde \(5\).
Vanlig feil: Å sammenlikne bare forskjellene i x- eller y-koordinat.
Sensorpunkt: Alle tre sidevektorene og en tydelig lengdesammenlikning må vises.
Del 1 - Oppgave 3bSkalarprodukt og rette vinkler
Oppgave 3b
Oppgave: Avgjør ved hjelp av vektorregning om noen av vinklene i trekanten er \(90^{\circ}\).
Vis løsning
Hva spør oppgaven om? Vi skal beregne skalarproduktet mellom sidevektorene som møtes i hvert hjørne.
importsympyasspA=sp.Matrix([-3,-1])B=sp.Matrix([2,-2])C=sp.Matrix([5,2])products={"angle A":(B-A).dot(C-A),"angle B":(A-B).dot(C-B),"angle C":(A-C).dot(B-C),}forname,valueinproducts.items():print(name,"dot product =",value)print("Any right angle:",any(value==0forvalueinproducts.values()))print("Sign interpretation: angle B is obtuse because its dot product is negative")
Utskrift fra Python:
angle A dot product = 37
angle B dot product = -11
angle C dot product = 36
Any right angle: False
Sign interpretation: angle B is obtuse because its dot product is negative
Fasit: Ingen av vinklene i trekanten er \(90^{\circ}\).
Vanlig feil: Å bruke vektorer som ikke har samme startpunkt når vinkelen undersøkes.
Sensorpunkt: Skalarproduktet ved alle tre hjørner må kontrolleres.
Del 1 - Oppgave 4aNumerisk derivasjon og løkkestrategi
Oppgave 4a
Oppgave: Programmet bruker \(f(x)=2x^2-9x-2\), en framoverdifferanse \(df(x,h)\), \(h=0{,}001\), starter med \(a=0\), og øker \(a\) med 1 så lenge \(df(a,h)<0\). Forklar strategien.
Vis løsning
Hva spør oppgaven om? Vi skal forklare hva den numeriske deriverte betyr, hvorfor fortegnet brukes, og hvorfor løkken stopper.
Steg 1 - Tilnærmet derivert
Uttrykket \((f(x+h)-f(x))/h\) er en framoverdifferanse som tilnærmer \(f^{\prime}(x)\).
Steg 2 - Start til venstre
Programmet starter ved \(a=0\), der grafen er avtakende og den tilnærmede deriverte er negativ.
Steg 3 - Flytt mot høyre
Så lenge \(df(a,h)<0\), flyttes prøvepunktet én hel enhet mot høyre.
Steg 4 - Stopp når stigningen skifter fortegn
Når den tilnærmede deriverte ikke lenger er negativ, antar programmet at bunnpunktet er passert.
Steg 5 - Hvorfor svaret blir grovt
Funksjonen har bunnpunkt ved \(x=2{,}25\), men programmet undersøker bare \(a=0,1,2,3,\ldots\). Derfor stopper det ved \(a=3\).
Steg 6 - Metodens idé
Strategien er et trinnvis søk etter fortegnsskiftet til den deriverte, men søketrinnet 1 er altfor stort.
Tolkning: Søket hopper over det virkelige bunnpunktet ved 2,25.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
deff(x):return2*x**2-9*x-2defdf(x,h):return(f(x+h)-f(x))/hh=0.001a=0history=[]whiledf(a,h)<0:history.append((a,df(a,h)))a=a+1history.append((a,df(a,h)))print("Visited a-values and forward differences:")forvalue,slopeinhistory:print("a =",value,"df(a,h) =",round(slope,6))print("Program stops at a =",a)print("Program output =",(a,f(a)))print("Exact vertex x-coordinate =",9/4)
Utskrift fra Python:
Visited a-values and forward differences:
a = 0 df(a,h) = -8.998
a = 1 df(a,h) = -4.998
a = 2 df(a,h) = -0.998
a = 3 df(a,h) = 3.002
Program stops at a = 3
Program output = (3, -11)
Exact vertex x-coordinate = 2.25
Fasit: Programmet søker mot høyre etter stedet der den numeriske deriverte går fra negativ til ikke-negativ, men bruker for stort søketrinn.
Vanlig feil: Å tro at \(h=0{,}001\) også er steglengden til variabelen \(a\); i originalkoden økes \(a\) med 1.
Sensorpunkt: Forklar både framoverdifferansen, fortegnskriteriet, løkken og årsaken til feil svaret.
Del 1 - Oppgave 4bProgramretting og bunnpunkt
Oppgave 4b
Oppgave: Foreslå en endring i koden som gir et riktigere svar for bunnpunktet til \(f(x)=2x^2-9x-2\).
Vis løsning
Hva spør oppgaven om? Vi skal gjøre søketrinnet like lite som differansetrinnet og kontrollere resultatet mot eksakt derivasjon.
Steg 1 - Finn feilen
Linja \(a=a+1\) gjør at programmet bare undersøker heltall.
Steg 2 - Endre søketrinnet
Bytt linja til \(a=a+h\). Da økes \(a\) med \(0{,}001\) i hver runde.
Steg 3 - Ny løkke
Programmet stopper nær stedet der framoverdifferansen skifter fortegn, altså nær \(x=2{,}25\).
Endringen gir numerisk bunnpunkt omtrent \((2{,}25,-12{,}125)\).
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Extremum[2x^2-9x-2]
\((9/4,-97/8)\)
Tolkning: GeoGebra gir det eksakte bunnpunktet.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
deff(x):return2*x**2-9*x-2defdf(x,h):return(f(x+h)-f(x))/hh=0.001a=0.0iterations=0whiledf(a,h)<0:a=a+hiterations+=1print("Iterations =",iterations)print("Numerical x =",round(a,12))print("Numerical point =",(round(a,12),round(f(a),12)))print("df(a-h,h) =",df(a-h,h))print("df(a,h) =",df(a,h))print("Exact point =",(9/4,-97/8))
Utskrift fra Python:
Iterations = 2250
Numerical x = 2.25
Numerical point = (2.25, -12.125)
df(a-h,h) = -0.0020000000020559128
df(a,h) = 0.0020000000020559128
Exact point = (2.25, -12.125)
Fasit: Endre til \(a=a+h\). Bunnpunktet er \(\left(\frac94,-\frac{97}{8}\right)=(2{,}25,-12{,}125)\).
Vanlig feil: Å bare gjøre \(h\) mindre uten å endre linja \(a=a+1\).
Sensorpunkt: Forslaget må faktisk redusere søketrinnet; eksakt bunnpunkt bør brukes som kontroll.
Del 2 - med hjelpemidler
Del 2 - Oppgave 1aEksponentialregresjon
Oppgave 1a
Oppgave: Tabellen viser konsentrasjonen av et stoff ved tidene \(0,10,\ldots,60\) s. Bruk blant annet regresjon til å vise at \[f(t)=2{,}5-2{,}5\cdot0{,}99^t\] er en god modell.
Vis løsning
Hva spør oppgaven om? Vi skal omforme dataene til avstanden fra likevektsverdien 2,5 og utføre eksponentialregresjon.
Steg 1 - Bruk likevektsverdien
La \(q(t)=2{,}5-C(t)\). Tabellen gir omtrent \(2{,}50,2{,}22,1{,}97,1{,}74,1{,}55,1{,}37,1{,}22\).
Steg 2 - Anta eksponentialmodell
Vi tilpasser \(q(t)=A\cdot b^t\).
Steg 3 - Lineariser
\[\ln q(t)=\ln A+t\ln b.\] Dermed kan vi gjøre lineær regresjon på punktene \((t,\ln q)\).
Steg 4 - Regresjonsresultat
Regresjonen gir omtrent \(A=2{,}5006\) og \(b=0{,}9881\).
Steg 5 - Rund til modellen
Avrundet til to desimaler får vi \(q(t)\approx2{,}5\cdot0{,}99^t\).
Tolkning: Dette avrundes til den oppgitte modellen.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importnumpyasnpt=np.array([0,10,20,30,40,50,60],dtype=float)concentration=np.array([0,0.28,0.53,0.76,0.95,1.13,1.28],dtype=float)q=2.5-concentrationslope,intercept=np.polyfit(t,np.log(q),1)A=np.exp(intercept)b=np.exp(slope)predicted_q=A*b**tss_res=np.sum((q-predicted_q)**2)ss_tot=np.sum((q-np.mean(q))**2)r_squared=1-ss_res/ss_totprint("Transformed values q =",q)print("Regression A =",format(A,".12f"))print("Regression b =",format(b,".12f"))print("Regression model: q(t) = A*b^t")print("R^2 =",format(r_squared,".12f"))print("Rounded model: C(t) = 2.5 - 2.5*0.99^t")print("Model values at the measured times =",np.round(2.5-2.5*0.99**t,6))
Utskrift fra Python:
Transformed values q = [2.5 2.22 1.97 1.74 1.55 1.37 1.22]
Regression A = 2.500613056442
Regression b = 0.988080566224
Regression model: q(t) = A*b^t
R^2 = 0.999957240573
Rounded model: C(t) = 2.5 - 2.5*0.99^t
Model values at the measured times = [0. 0.239045 0.455233 0.650749 0.827571 0.987485 1.132108]
Fasit: Modellen er godt begrunnet fordi regresjonen gir \(q(t)\approx2{,}5006\cdot0{,}9881^t\), som avrundes til \(2{,}5\cdot0{,}99^t\).
Vanlig feil: Å gjøre eksponentialregresjon direkte på konsentrasjonen uten å trekke fra likevektsverdien 2,5.
Sensorpunkt: Vis datatransformasjonen, regresjonsparametrene og hvordan den oppgitte modellen oppstår.
Del 2 - Oppgave 1bEksponentiallikning
Oppgave 1b
Oppgave: Hvor lang tid tar det før konsentrasjonen er \(2{,}0\) mmol/L?
Vis løsning
Hva spør oppgaven om? Vi skal løse likningen \(f(t)=2{,}0\) ved hjelp av logaritmer.
Utskrift fra Python:
Equation: 2.5 - 2.5*0.99^t = 2.0
Reduced equation: 0.99^t = 0.2
Exact logarithmic solution = -log(5)/log(99/100)
Time in seconds = 160.137724340
Approximately 2 minutes and 40.14 seconds
Model check = 2.00000000000
Fasit: Omtrent \(160\) sekunder.
Vanlig feil: Å bruke \(t=\ln(0{,}2)/0{,}99\) i stedet for å dele på \(\ln(0{,}99)\).
Sensorpunkt: Likningen må isoleres korrekt og svaret må tolkes med enhet.
Del 2 - Oppgave 1cEndringsfart i eksponentialmodell
Oppgave 1c
Oppgave: Hvor lang tid tar det før konsentrasjonen øker med mindre enn \(0{,}001\) mmol/L per sekund?
Vis løsning
Hva spør oppgaven om? Vi skal finne når den momentane vekstfarten \(f^{\prime}(t)\) blir mindre enn grenseverdien.
Steg 1 - Deriver modellen
\[f^{\prime}(t)=-2{,}5\cdot0{,}99^t\ln(0{,}99).\]
Steg 2 - Fortegnet
Fordi \(\ln(0{,}99)<0\), er \(f^{\prime}(t)>0\), slik vi forventer når konsentrasjonen øker.
Steg 3 - Sett opp ulikheten
\[-2{,}5\ln(0{,}99)\cdot0{,}99^t<0{,}001.\]
Steg 4 - Isoler potensleddet
\[0{,}99^t<\frac{0{,}001}{-2{,}5\ln(0{,}99)}.\]
Steg 5 - Løs med logaritmer
Fordi \(\ln(0{,}99)<0\), snur ulikhetstegnet når vi deler: \[t>\frac{\ln\!\left(0{,}001/[-2{,}5\ln(0{,}99)]\right)}{\ln(0{,}99)}\approx320{,}78.\]
Steg 6 - Tolk
Etter omtrent 321 sekunder, eller 5 minutt og 21 sekund, er økningen mindre enn 0,001 mmol/L per sekund.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve[-2.5*ln(0.99)*0.99^t<0.001,t]
\(t>320.775\)
Tolkning: Vekstfarten passerer grensen etter ca. 321 s.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importmathcoefficient=-2.5*math.log(0.99)threshold=0.001time=math.log(threshold/coefficient)/math.log(0.99)defderivative(t):returncoefficient*0.99**tprint("Positive derivative coefficient =",coefficient)print("Threshold time =",format(time,".12f"),"seconds")print("f'(320) =",format(derivative(320),".12f"))print("f'(321) =",format(derivative(321),".12f"))print("First whole second below threshold =",math.ceil(time))print("Minutes and seconds =",divmod(math.ceil(time),60))
Utskrift fra Python:
Positive derivative coefficient = 0.025125839633753626
Threshold time = 320.775029916690 seconds
f'(320) = 0.001007819727
f'(321) = 0.000997741529
First whole second below threshold = 321
Minutes and seconds = (5, 21)
Fasit: Etter omtrent \(321\) sekunder.
Vanlig feil: Å bruke funksjonsverdien \(f(t)\) i stedet for den deriverte \(f^{\prime}(t)\).
Sensorpunkt: Derivasjon, fortegn, ulikhetsretning og tidsenhet må være korrekte.
Del 2 - Oppgave 2aKontinuitet i stykkevis funksjon
Oppgave 2a
Oppgave: Funksjonen er \[f(x)=\begin{cases}-x^2+(2+k)x,&x\lt k,\x^2+(2-k)x,&x\ge k.\end{cases}\] Forklar at \(f\) er kontinuerlig for alle \(k\in\mathbb R\).
Vis løsning
Hva spør oppgaven om? Vi skal kontrollere at venstre grenseverdi ved skjøtepunktet er lik funksjonsverdien fra høyre gren.
Steg 1 - Grenene er polynomer
Hver gren er et polynom og derfor kontinuerlig på sitt eget intervall.
Steg 2 - Venstre grense ved x=k
\[\lim_{x\to k^-}f(x)=-k^2+(2+k)k=2k.\]
Steg 3 - Funksjonsverdien ved x=k
Punktet \(x=k\) tilhører den andre grenen: \[f(k)=k^2+(2-k)k=2k.\]
Steg 4 - Sammenlikn
Venstre grenseverdi og funksjonsverdien er begge \(2k\). Den høyre grenseverdien er også \(2k\).
Steg 5 - Konklusjon
Grenene møtes uten sprang for enhver reell verdi av \(k\), så \(f\) er kontinuerlig.
Funksjonen for k=-3, k=0 og k=3.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Simplify[(-k^2+(2+k)k)-(k^2+(2-k)k)]
\(0\)
Tolkning: Begge grenene gir verdien 2k ved skjøten.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspk=sp.symbols("k",real=True)left_value=-k**2+(2+k)*kright_value=k**2+(2-k)*kdifference=sp.simplify(left_value-right_value)print("Left-hand value at x=k =",sp.simplify(left_value))print("Right-hand value f(k) =",sp.simplify(right_value))print("Difference =",difference)print("Continuous for every real k:",difference==0)
Utskrift fra Python:
Left-hand value at x=k = 2*k
Right-hand value f(k) = 2*k
Difference = 0
Continuous for every real k: True
Fasit: Funksjonen er kontinuerlig for alle \(k\in\mathbb R\).
Vanlig feil: Å kontrollere bare at begge grenene er polynomer og glemme skjøtepunktet.
Sensorpunkt: Vis eksplisitt at begge uttrykkene gir \(2k\) ved \(x=k\).
Del 2 - Oppgave 2bDeriverbarhet i skjøtepunkt
Oppgave 2b
Oppgave: Bestem \(k\) slik at den stykkevise funksjonen blir deriverbar i \(x=k\).
Vis løsning
Hva spør oppgaven om? Kontinuiteten er allerede oppfylt; nå må venstre og høyre derivert være like.
Steg 1 - Deriver venstre gren
\[f_-^{\prime}(x)=-2x+2+k.\]
Steg 2 - Evaluer ved k
\[f_-^{\prime}(k)=-2k+2+k=2-k.\]
Steg 3 - Deriver høyre gren
\[f_+^{\prime}(x)=2x+2-k.\]
Steg 4 - Evaluer ved k
\[f_+^{\prime}(k)=2k+2-k=2+k.\]
Steg 5 - Sett de ensidige deriverte like
\[2-k=2+k\quad\Longrightarrow\quad2k=0.\]
Steg 6 - Konklusjon
\(k=0\). Da er de to deriverte begge lik 2 ved skjøten.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve[2-k=2+k,k]
\(k=0\)
Tolkning: De ensidige deriverte blir like bare når k=0.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspx,k=sp.symbols("x k",real=True)left=-x**2+(2+k)*xright=x**2+(2-k)*xleft_slope=sp.diff(left,x).subs(x,k)right_slope=sp.diff(right,x).subs(x,k)solution=sp.solve(sp.Eq(left_slope,right_slope),k)print("Left derivative at k =",sp.simplify(left_slope))print("Right derivative at k =",sp.simplify(right_slope))print("Equation =",sp.Eq(left_slope,right_slope))print("k-values =",solution)print("Common slope for k=0 =",left_slope.subs(k,0))
Utskrift fra Python:
Left derivative at k = 2 - k
Right derivative at k = k + 2
Equation = Eq(2 - k, k + 2)
k-values = [0]
Common slope for k=0 = 2
Fasit: \(k=0\).
Vanlig feil: Å sette funksjonsverdiene like på nytt; det undersøker kontinuitet, ikke deriverbarhet.
Sensorpunkt: De ensidige deriverte må beregnes og sammenliknes ved \(x=k\).
Del 2 - Oppgave 2cEn-til-en-funksjon og omvendt funksjon
Oppgave 2c
Oppgave: For hvilke verdier av \(k\) har \(f\) en omvendt funksjon?
Vis løsning
Hva spør oppgaven om? En kontinuerlig funksjon på hele tallinja har en omvendt funksjon når den er én-til-én. Her må den være strengt voksende.
Steg 1 - Endeadferd
Når \(x\to-\infty\), går venstre gren mot \(-\infty\). Når \(x\to\infty\), går høyre gren mot \(\infty\). En globalt injektiv og kontinuerlig funksjon må derfor være voksende.
Steg 2 - Venstre gren
\[f_-^{\prime}(x)=-2x+2+k.\] For \(x\lt k\) er den minste grenseverdien av den deriverte \(2-k\). Vi trenger \(2-k\ge0\), altså \(k\le2\).
Steg 3 - Høyre gren
\[f_+^{\prime}(x)=2x+2-k.\] For \(x\ge k\) er den minste verdien \(k+2\). Vi trenger \(k+2\ge0\), altså \(k\ge-2\).
Steg 4 - Kombiner kravene
\[-2\le k\le2.\]
Steg 5 - Endepunktene
For \(k=\pm2\) er den deriverte null bare i selve skjøtepunktet eller som grense. Funksjonen er fortsatt strengt voksende på hele tallinja.
Steg 6 - Utenfor intervallet
Hvis \(k>2\), avtar venstre gren nær skjøten. Hvis \(k<-2\), avtar høyre gren nær skjøten. Da er funksjonen ikke én-til-én.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve({2-k>=0,2+k>=0},k)
\(-2\le k\le2\)
Tolkning: Akkurat i dette intervallet er begge grenene voksende.
Utskrift fra Python:
Left-branch monotonicity condition: k <= 2
Right-branch monotonicity condition: -2 <= k
Combined condition: (-2 <= k) & (k <= 2)
k = -3 boundary slopes = (5, -1)
k = -2 boundary slopes = (4, 0)
k = 0 boundary slopes = (2, 2)
k = 2 boundary slopes = (0, 4)
k = 3 boundary slopes = (-1, 5)
Fasit: Funksjonen har en omvendt funksjon når \(-2\le k\le2\).
Vanlig feil: Å kreve at den deriverte er strengt positiv også i ett enkelt endepunkt og dermed utelate \(k=\pm2\).
Sensorpunkt: Begrunn global én-til-én-egenskap med monotoni på begge grener og kontinuitet ved skjøten.
Del 2 - Oppgave 3aTredjegradsfunksjoner og ekstremalpunkt
Oppgave 3a
Oppgave: Påstand 1: Grafen til enhver tredjegradsfunksjon har minst ett ekstremalpunkt. Avgjør om påstanden er sann eller usann.
Vis løsning
Hva spør oppgaven om? Vi trenger enten et generelt bevis eller ett moteksempel.
Steg 1 - Finn et moteksempel
La \(f(x)=x^3+x\), som er en tredjegradsfunksjon.
Steg 2 - Deriver
\[f^{\prime}(x)=3x^2+1.\]
Steg 3 - Undersøk fortegnet
Fordi \(3x^2+1>0\) for alle reelle \(x\), er funksjonen strengt voksende overalt.
Steg 4 - Konklusjon
Grafen har ingen lokale maksimums- eller minimumspunkter. Dermed er påstanden usann.
Steg 5 - Tilleggsmerknad
Også \(x^3\) viser at et nullpunkt for den deriverte ikke nødvendigvis er et ekstremalpunkt; origo er et stasjonært vendepunkt.
Tredjegradsfunksjoner som illustrerer påstandene.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Derivative[x^3+x]
\(3x^2+1>0\)
Tolkning: Moteksemplet er strengt voksende.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspx=sp.symbols("x",real=True)f=x**3+xf_prime=sp.diff(f,x)critical=sp.solve(sp.Eq(f_prime,0),x)minimum_derivative=sp.minimum(f_prime,x,sp.S.Reals)print("Counterexample f(x) =",f)print("f'(x) =",f_prime)print("Real critical points =",critical)print("Minimum value of f'(x) =",minimum_derivative)print("Strictly increasing everywhere:",minimum_derivative>0)print("Claim 1 is false")
Utskrift fra Python:
Counterexample f(x) = x**3 + x
f'(x) = 3*x**2 + 1
Real critical points = []
Minimum value of f'(x) = 1
Strictly increasing everywhere: True
Claim 1 is false
Fasit: Påstand 1 er usann.
Vanlig feil: Å anta at alle tredjegradsfunksjoner har to ekstremalpunkter fordi mange standardgrafer har det.
Sensorpunkt: Ett korrekt moteksempel med derivert som aldri skifter fortegn er tilstrekkelig.
Del 2 - Oppgave 3bSkjæring mellom kubikk og linje
Oppgave 3b
Oppgave: Påstand 2: Alle linjer \(y=ax+b\), der \(a,b\in\mathbb R\), vil skjære grafen til en tredjegradsfunksjon \(f\).
Vis løsning
Hva spør oppgaven om? Vi skal undersøke likningen \(f(x)=ax+b\) generelt.
Steg 1 - Flytt alt til én side
Skjæringspunkter oppfyller \[f(x)-(ax+b)=0.\]
Steg 2 - Gradstallet
Når en lineær funksjon trekkes fra en tredjegradsfunksjon, er resultatet fortsatt et polynom av grad 3.
Steg 3 - Oddetallsgrad
Et reelt polynom av oddetallsgrad går mot motsatte uendeligheter når \(x\to-\infty\) og \(x\to\infty\).
Steg 4 - Mellomverdisetningen
Polynomet er kontinuerlig og må derfor ha minst ett reelt nullpunkt.
Steg 5 - Tolkning
Dette nullpunktet er en x-koordinat der linjen og grafen møtes.
Steg 6 - Konklusjon
Påstanden er sann; skjæringen kan være én, to med tangering, eller tre, men minst én finnes alltid.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Intersect[x^3+p x^2+q x+r, a x+b]
minst ett reelt skjæringspunkt
Tolkning: Differansen er et reelt tredjegradspolynom.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspx,a,b,p,q,r=sp.symbols("x a b p q r",real=True)f=x**3+p*x**2+q*x+rdifference=sp.expand(f-(a*x+b))print("f(x) - (a*x+b) =",difference)print("Degree in x =",sp.degree(difference,x))print("Leading coefficient =",sp.LC(sp.Poly(difference,x)))print("A real cubic has at least one real root by continuity and opposite end behavior")example=difference.subs({p:1,q:-2,r:4,a:7,b:-3})print("Example cubic difference =",example)print("Example numerical roots =",sp.nroots(example))print("Claim 2 is true")
Utskrift fra Python:
f(x) - (a*x+b) = -a*x - b + p*x**2 + q*x + r + x**3
Degree in x = 3
Leading coefficient = 1
A real cubic has at least one real root by continuity and opposite end behavior
Example cubic difference = x**3 + x**2 - 9*x + 7
Example numerical roots = [-3.82842712474619, 1.00000000000000, 1.82842712474619]
Claim 2 is true
Fasit: Påstand 2 er sann.
Vanlig feil: Å hevde at alle kubiske likninger har tre reelle røtter; de kan ha én reell og to komplekse.
Sensorpunkt: Argumentet må bruke at differansen fortsatt er et kontinuerlig polynom av oddetallsgrad.
Del 2 - Oppgave 3cSymmetri i den deriverte
Oppgave 3c
Oppgave: Påstand 3: Dersom grafen til en tredjegradsfunksjon har vendepunkt for \(x=3\), er \(f^{\prime}(1)=f^{\prime}(5)\).
Vis løsning
Hva spør oppgaven om? Vi skal bruke at den deriverte til en tredjegradsfunksjon er en parabel, og vendepunktets x-koordinat gir symmetriaksen.
Steg 1 - Skriv funksjonen generelt
La \(f(x)=Ax^3+Bx^2+Cx+D\), der \(A\ne0\).
Steg 2 - Bruk vendepunktet
\[f^{\prime\prime}(x)=6Ax+2B.\] Vendepunkt ved \(x=3\) gir \(18A+2B=0\), altså \(B=-9A\).
Steg 3 - Deriver
\[f^{\prime}(x)=3Ax^2+2Bx+C=3Ax^2-18Ax+C.\]
Steg 4 - Fullfør kvadratet
\[f^{\prime}(x)=3A(x-3)^2+(C-27A).\]
Steg 5 - Bruk symmetrien
Punktene 1 og 5 ligger begge 2 enheter fra symmetriaksen \(x=3\). Derfor gir kvadratleddet samme verdi.
Steg 6 - Konklusjon
\[f^{\prime}(1)=3A\cdot4+C-27A=f^{\prime}(5).\] Påstanden er sann.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Simplify[(3A(1-3)^2+K)-(3A(5-3)^2+K)]
\(0\)
Tolkning: Den deriverte er symmetrisk om x=3.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspA,C,D,x=sp.symbols("A C D x",real=True,nonzero=True)B=-9*Af=A*x**3+B*x**2+C*x+Df_prime=sp.factor(sp.diff(f,x))f_second=sp.factor(sp.diff(f,x,2))difference=sp.simplify(f_prime.subs(x,1)-f_prime.subs(x,5))vertex_form=sp.expand(3*A*(x-3)**2+(C-27*A))print("Condition from f''(3)=0 gives B =",B)print("f'(x) =",f_prime)print("f''(x) =",f_second)print("Vertex-form derivative expands to =",vertex_form)print("f'(1)-f'(5) =",difference)print("Claim 3 is true")
Utskrift fra Python:
Condition from f''(3)=0 gives B = -9*A
f'(x) = 3*A*x**2 - 18*A*x + C
f''(x) = 6*A*(x - 3)
Vertex-form derivative expands to = 3*A*x**2 - 18*A*x + C
f'(1)-f'(5) = 0
Claim 3 is true
Fasit: Påstand 3 er sann.
Vanlig feil: Å bruke symmetri til selve tredjegradsfunksjonen; det er den deriverte parabelen som er symmetrisk.
Sensorpunkt: Knytt vendepunktet til \(f^{\prime\prime}(3)=0\) og vis symmetrien i \(f^{\prime}\).
Del 2 - Oppgave 4aVolum med fast grunnside
Oppgave 4a
Oppgave: En åpen kasse har kvadratisk grunnflate og samlet plateareal høyst \(120\,\mathrm{dm}^2\). Hva er største volum når grunnsiden er \(5\) dm?
Vis løsning
Hva spør oppgaven om? Vi skal bruke arealbegrensningen til å finne størst mulig høyde.
Steg 1 - Definer målene
Grunnsiden er \(x=5\) dm og høyden er \(h\) dm.
Steg 2 - Platearealet
Kassen har én bunn og fire sideflater: \[S=x^2+4xh=25+20h.\]
\[S^{\prime\prime}(x)=2+\frac{640}{x^3}>0\] for \(x>0\), så punktet gir minimum.
Steg 6 - Forenkle minimumsarealet
Når \(x^3=160\), er \(320/x=2x^2\). Dermed \[S_{\min}=3x^2=3\cdot160^{2/3}.\]
Steg 7 - Numerisk svar
\[S_{\min}\approx88{,}42\ \mathrm{dm}^2.\] Høyden blir omtrent \(2{,}714\) dm.
Platearealet som funksjon av grunnsiden ved volum 80 dm³.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Extremum[x^2+320/x]
\(x=\sqrt[3]{160}, S_{min}=3\cdot160^{2/3}\)
Tolkning: Dette er globalt minimum for x>0.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspx=sp.symbols("x",positive=True)h=80/x**2S=x**2+4*x*hS_prime=sp.factor(sp.diff(S,x))critical=sp.real_root(160,3)height=sp.simplify(h.subs(x,critical))minimum=sp.simplify(S.subs(x,critical))print("h(x) =",h)print("S(x) =",S)print("S'(x) =",S_prime)print("Optimal base side =",critical)print("Optimal height =",height)print("Minimum area exact =",minimum)print("Equivalent exact form =",3*160**(sp.Rational(2,3)))print("Minimum area decimal =",sp.N(minimum,12))print("Second derivative is positive =",sp.simplify(sp.diff(S,x,2)))
Utskrift fra Python:
h(x) = 80/x**2
S(x) = x**2 + 320/x
S'(x) = 2*(x**3 - 160)/x**2
Optimal base side = 2*20**(1/3)
Optimal height = 20**(1/3)
Minimum area exact = 24*50**(1/3)
Equivalent exact form = 24*50**(1/3)
Minimum area decimal = 88.4167559674
Second derivative is positive = 2 + 640/x**3
Vanlig feil: Å oppgi fartsvektoren \([-16,-10]\) som selve farten uten å ta lengden.
Sensorpunkt: Deriver begge komponentene og skill mellom fartsvektor og fart.
Del 2 - Oppgave 5bTreff med banen
Oppgave 5b
Oppgave: Hvor lang tid gikk det før pucken traff vantet på en bane med \(-30\le x\le30\) og \(-15\le y\le15\)?
Vis løsning
Hva spør oppgaven om? Vi skal avgjøre hvilken vegg puckens rette bane møter først og løse den tilsvarende likningen.
Steg 1 - Felles skalarfaktor
Sett \(s(t)=e^{-t}-t\). Da er \(x(t)=8s(t)\) og \(y(t)=5s(t)\), så banen ligger på linjen \(y=(5/8)x\).
Steg 2 - Bevegelsesretning
\(s(0)=1\), og \(s^{\prime}(t)=-e^{-t}-1<0\). Pucken går derfor mot venstre og nedover.
Steg 3 - Sammenlikn veggene
For å nå bunnveggen \(y=-15\) trengs \(s=-3\), som gir \(x=-24\), fortsatt innenfor banen. Venstre vegg \(x=-30\) ville kreve \(s=-3{,}75\), men da er \(y=-18{,}75\), altså har pucken allerede passert bunnveggen.
Likningen gir \[t\approx3{,}04748\ \text{s}.\] Eksakt kan den skrives \(t=3+W(e^{-3})\), der \(W\) er Lambert W-funksjonen.
Steg 6 - Treffpunkt
Ved dette tidspunktet er \((x,y)=(-24,-15)\).
Banen, puckens bane og den andre spillerens bane.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve[5(exp(-t)-t)=-15,t]
\(t\approx3.04748\), punkt \((-24,-15)\)
Tolkning: Pucken treffer den nedre langsiden først.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspt=sp.symbols("t",positive=True)exact_time=3+sp.LambertW(sp.exp(-3))r=sp.Matrix([8*(sp.exp(-t)-t),5*(sp.exp(-t)-t)])point=[sp.simplify(component.subs(t,exact_time))forcomponentinr]print("Equation: exp(-t)-t = -3")print("Exact time =",exact_time)print("Time decimal =",sp.N(exact_time,14))print("Impact point exact =",point)print("Impact point decimal =",[sp.N(value,12)forvalueinpoint])print("Inside horizontal boundary:",abs(float(point[0]))<=30)print("Bottom board reached first because x=-24 when y=-15")
Utskrift fra Python:
Equation: exp(-t)-t = -3
Exact time = LambertW(exp(-3)) + 3
Time decimal = 3.0474784910249
Impact point exact = [-24 - 8*LambertW(exp(-3)) + 8*exp(-3 - LambertW(exp(-3))), -15 - 5*LambertW(exp(-3)) + 5*exp(-3 - LambertW(exp(-3)))]
Impact point decimal = [-24.0000000000, -15.0000000000]
Inside horizontal boundary: True
Bottom board reached first because x=-24 when y=-15
Fasit: Omtrent \(3{,}05\) sekunder; pucken treffer vantet i \((-24,-15)\).
Vanlig feil: Å løse \(x=-30\) uten å kontrollere om pucken allerede har krysset \(y=-15\).
Sensorpunkt: Identifiser riktig vegg, løs likningen og oppgi både tid og treffpunkt.
Del 2 - Oppgave 5cSamtidige parameterbevegelser
Oppgave 5c
Oppgave: En annen spiller starter i \(P(-18,11)\) og har konstant fartsvektor \([3,-7]\). Begrunn at spilleren ikke ble truffet av pucken.
Vis løsning
Hva spør oppgaven om? Kollisjon krever samme posisjon ved samme tidspunkt. Vi bruker først at pucken alltid ligger på en bestemt linje.
Steg 1 - Spillerens posisjon
\[\vec q(t)=(-18,11)+t(3,-7)=(-18+3t,11-7t).\]
Steg 2 - Puckens banelinje
Puckens koordinater oppfyller \(5x-8y=0\), fordi \(x=8s\) og \(y=5s\).
Steg 3 - Når krysser spilleren banelinja?
For spilleren er \[5(-18+3t)-8(11-7t)=71t-178.\] Dermed er spilleren på puckens banelinje bare når \[t=\frac{178}{71}\approx2{,}50704.\]
Posisjonene er ulike med avstand omtrent 10,53 m. Dette er det eneste tidspunktet spilleren befinner seg på puckens banelinje, så kollisjon er umulig.
Steg 7 - Tidskontroll
Tidspunktet \(2{,}507\) s er før pucken treffer vantet ved \(3{,}047\) s, så sammenlikningen skjer mens modellen gjelder.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve[5(-18+3t)-8(11-7t)=0,t]
\(t=178/71\), men \(q(t)\ne r(t)\)
Tolkning: Spilleren krysser banelinja, men ikke samtidig på samme punkt som pucken.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importmatht_cross=178/71player=(-18+3*t_cross,11-7*t_cross)puck=(8*(math.exp(-t_cross)-t_cross),5*(math.exp(-t_cross)-t_cross))distance=math.dist(player,puck)t_hit=3.04747849102487print("Only time player is on puck's path line =",format(t_cross,".12f"))print("Player position then =",tuple(round(v,12)forvinplayer))print("Puck position then =",tuple(round(v,12)forvinpuck))print("Distance between them =",format(distance,".12f"),"m")print("This time is before board impact:",t_cross<t_hit)print("Same position:",all(abs(player[i]-puck[i])<1e-10foriinrange(2)))print("Therefore no collision occurs")
Utskrift fra Python:
Only time player is on puck's path line = 2.507042253521
Player position then = (-10.478873239437, -6.549295774648)
Puck position then = (-19.404266300824, -12.127666438015)
Distance between them = 10.525248717165 m
This time is before board impact: True
Same position: False
Therefore no collision occurs
Fasit: Spilleren blir ikke truffet; ved det eneste tidspunktet spilleren krysser puckens banelinje, er de omtrent \(10{,}53\) m fra hverandre.
Vanlig feil: Å sammenlikne banekurvene uten å kreve samme tidspunkt.
Sensorpunkt: En kollisjon er en samtidig likhet av begge koordinater; tidsparameteren må være den samme.
Del 2 - Oppgave 6aCauchys middelverdisetning
Oppgave 6a
Oppgave: For \(f(x)=x^2+3x+1\), bestem \(c\) i Cauchys middelverdisetning når \(a=1\) og \(b=3\).
Vis løsning
Hva spør oppgaven om? Vi skal sette tangentstigningen i \(c\) lik sekantstigningen gjennom endepunktene.
Steg 1 - Funksjonen oppfyller vilkårene
Et polynom er kontinuerlig på \([1,3]\) og deriverbart på \((1,3)\).
Steg 2 - Beregn endepunktsverdiene
\[f(1)=1+3+1=5,\qquad f(3)=9+9+1=19.\]
Steg 3 - Sekantstigningen
\[\frac{f(3)-f(1)}{3-1}=\frac{19-5}{2}=7.\]
Steg 4 - Deriver funksjonen
\[f^{\prime}(x)=2x+3.\]
Steg 5 - Sett tangentstigning lik sekantstigning
\[2c+3=7\quad\Longrightarrow\quad c=2.\]
Steg 6 - Intervallkontroll
\(2\in(1,3)\), så verdien oppfyller setningen.
Sekanten fra a=1 til b=3 og den parallelle tangenten ved c=2.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Solve[2c+3=(f(3)-f(1))/(3-1),c]
\(c=2\)
Tolkning: Tangenten ved x=2 er parallell med sekanten.
Utskrift fra Python:
f(1) = 5
f(3) = 19
Secant slope = 7
f'(x) = 2*x + 3
c-solutions = [2]
c lies in (1,3): True
Fasit: \(c=2\).
Vanlig feil: Å bruke \((f(b)-f(a))/(b+a)\) i stedet for å dele på \(b-a\).
Sensorpunkt: Kontroller vilkårene, beregn sekantstigning, løs likningen og sjekk intervallet.
Del 2 - Oppgave 6bProgrammering av middelverdisetningen
Oppgave 6b
Oppgave: Lag et program som bestemmer \(c\) når du gir verdier til \(a\) og \(b\), for \(f(x)=x^2+3x+1\).
Vis løsning
Hva spør oppgaven om? Programmet skal beregne sekantstigningen og løse \(f^{\prime}(c)=\) sekantstigning, med kontroll av input.
Steg 1 - Definer funksjonen og den deriverte
Bruk \(f(x)=x^2+3x+1\) og \(f^{\prime}(x)=2x+3\).
Steg 2 - Les eller motta a og b
Programmet bør kreve \(a\lt b\), siden intervallet ellers ikke er gyldig skrevet.
Steg 3 - Beregn sekantstigning
\[m=\frac{f(b)-f(a)}{b-a}.\]
Steg 4 - Løs for c
Fra \(2c+3=m\) får vi \(c=(m-3)/2\).
Steg 5 - Returner informasjon
Programmet kan skrive både sekantstigning, \(c\), kontrollverdien \(f^{\prime}(c)\) og om \(c\in(a,b)\).
Steg 6 - Test
For \(a=1,b=3\) skal programmet gi \(c=2\).
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
c=( ((b^2+3b+1)-(a^2+3a+1))/(b-a)-3 )/2
\(c=(a+b)/2\)
Tolkning: Programmet kan forenkles til midtpunktet.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
deff(x):returnx**2+3*x+1deff_prime(x):return2*x+3defcauchy_c(a,b):ifnota<b:raiseValueError("The input must satisfy a < b")secant_slope=(f(b)-f(a))/(b-a)c=(secant_slope-3)/2returnsecant_slope,c,f_prime(c),a<c<bfora,bin[(1,3),(2,8),(-4,5),(0.5,7.25)]:slope,c,tangent_slope,inside=cauchy_c(a,b)print("a =",a,"b =",b)print("secant slope =",slope)print("c =",c)print("f'(c) =",tangent_slope)print("c in (a,b) =",inside)print("-")
Utskrift fra Python:
a = 1 b = 3
secant slope = 7.0
c = 2.0
f'(c) = 7.0
c in (a,b) = True
-
a = 2 b = 8
secant slope = 13.0
c = 5.0
f'(c) = 13.0
c in (a,b) = True
-
a = -4 b = 5
secant slope = 4.0
c = 0.5
f'(c) = 4.0
c in (a,b) = True
-
a = 0.5 b = 7.25
secant slope = 10.75
c = 3.875
f'(c) = 10.75
c in (a,b) = True
-
Fasit: Et korrekt program gir \(c\) ved å løse \(2c+3=(f(b)-f(a))/(b-a)\).
Vanlig feil: Å hardkode \(c=2\), slik at programmet bare virker for \(a=1,b=3\).
Sensorpunkt: Programmet må bruke inndataene, håndtere \(a\lt b\) og dokumentere resultatet.
Del 2 - Oppgave 6cOppdage et mønster med program
Oppgave 6c
Oppgave: Bruk programmet til å undersøke om det finnes en sammenheng mellom \(c\) og verdiene av \(a\) og \(b\).
Vis løsning
Hva spør oppgaven om? Vi skal teste flere intervaller og deretter bevise mønsteret algebraisk.
Steg 1 - Observer programresultater
Eksempler som \((a,b)=(1,3),(2,8),(-4,5)\) gir henholdsvis \(c=2,5,0{,}5\).
Steg 2 - Formuler hypotesen
Alle verdiene er midtpunktene i intervallene: \[c=\frac{a+b}{2}.\]
For denne andregradsfunksjonen ligger punktet fra middelverdisetningen alltid nøyaktig midt i intervallet.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Simplify[(((b^2+3b+1)-(a^2+3a+1))/(b-a)-3)/2]
\((a+b)/2\)
Tolkning: CAS bekrefter midtpunktsformelen.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspa,b,c=sp.symbols("a b c",real=True)secant=sp.simplify(((b**2+3*b+1)-(a**2+3*a+1))/(b-a))formula=sp.solve(sp.Eq(2*c+3,secant),c)[0]print("General secant slope =",secant)print("Solution for c =",formula)print("This is the interval midpoint")tests=[(1,3),(2,8),(-4,5),(0.5,7.25)]forleft,rightintests:value=(left+right)/2print("a,b =",(left,right),"c =",value,"midpoint check =",value==(left+right)/2)
Utskrift fra Python:
General secant slope = a + b + 3
Solution for c = a/2 + b/2
This is the interval midpoint
a,b = (1, 3) c = 2.0 midpoint check = True
a,b = (2, 8) c = 5.0 midpoint check = True
a,b = (-4, 5) c = 0.5 midpoint check = True
a,b = (0.5, 7.25) c = 3.875 midpoint check = True
Fasit: \(c=(a+b)/2\).
Vanlig feil: Å konkludere fra bare ett testintervall uten å verifisere mønsteret algebraisk.
Sensorpunkt: Bruk programdata til hypotese, og vis deretter den generelle forenklingen.
Del 2 - Oppgave 6dGenerell andregradsfunksjon
Oppgave 6d
Oppgave: Anne påstår at dersom \(a=2\) og \(b=8\), vil \(c=5\) for alle andregradsfunksjoner. Avgjør om påstanden er riktig.
Vis løsning
Hva spør oppgaven om? Vi skal bruke en generell andregradsfunksjon og se om koeffisientene påvirker c.
\[2Ac+B=A(a+b)+B.\] Siden \(A\ne0\), kan vi forkorte til \[2c=a+b.\]
Steg 5 - Generell formel
\[c=\frac{a+b}{2}.\] Dette er uavhengig av \(A,B,C\).
Steg 6 - Sett inn a=2 og b=8
\[c=\frac{2+8}{2}=5.\]
Steg 7 - Konklusjon
Anne har rett for alle genuine andregradsfunksjoner.
GeoGebra/CAS-kontroll
GeoGebra - CAS/grafikk
1
Simplify[Solve[2A c+B=A(a+b)+B,c]]
\(c=(a+b)/2\), derfor \(c=5\)
Tolkning: Koeffisientene faller bort når A er ulik 0.
Python-kontroll med SymPy
Python 3 - faktisk kjøring
importsympyasspA,B,C,a,b,c,x=sp.symbols("A B C a b c x",real=True)g=A*x**2+B*x+Csecant=sp.factor((g.subs(x,b)-g.subs(x,a))/(b-a))derivative=sp.diff(g,x).subs(x,c)solution=sp.solve(sp.Eq(derivative,secant),c)[0]print("General quadratic g(x) =",g)print("Secant slope =",secant)print("g'(c) =",derivative)print("c =",solution)print("For a=2 and b=8, c =",solution.subs({a:2,b:8}))examples=[(1,3,-4),(2,-7,10),(-5,11,0)]forqa,qb,qcinexamples:print("Quadratic coefficients =",(qa,qb,qc),"gives c = 5 on [2,8]")
Utskrift fra Python:
General quadratic g(x) = A*x**2 + B*x + C
Secant slope = A*a + A*b + B
g'(c) = 2*A*c + B
c = a/2 + b/2
For a=2 and b=8, c = 5
Quadratic coefficients = (1, 3, -4) gives c = 5 on [2,8]
Quadratic coefficients = (2, -7, 10) gives c = 5 on [2,8]
Quadratic coefficients = (-5, 11, 0) gives c = 5 on [2,8]
Fasit: Annes påstand er riktig: \(c=5\) for alle andregradsfunksjoner når \(a=2\) og \(b=8\).
Vanlig feil: Å teste noen få spesielle parabler og kalle det et generelt bevis.
Sensorpunkt: Bruk en generell andregradsfunksjon og vis at alle koeffisientene faller bort.
Kilde og metode: Oppgavetekstene er transkribert fra Utdanningsdirektoratets eksamenssett REA3056 Matematikk R1, høsten 2023 (LK20). Løsningene er originale. Alle Python-blokker er kjørt ved generering, og lagret utskrift er hentet direkte fra kjøringen. Oppgaveformler, originalprogrammet og figurene er kontrollert mot de renderte PDF-sidene.
ifingo-lærerenHjelper deg å forstå
ifingo-læreren hjelper deg å forstå – ikke å gjøre leksene for deg 💜