Oppgave 1a
Deriver \(g(x)=3x^2-5+\frac{3}{x-2}\).
Vis løsning
Skriv brøkleddet som potens:
\[g(x)=3x^2-5+3(x-2)^{-1}.\]Da får vi
\[g'(x)=6x+3\cdot(-1)(x-2)^{-2}\cdot 1=6x-\frac{3}{(x-2)^2}.\]Komplett, kontrollert løsningsforslag for REA3060. Løsningene er skrevet for VGS-elever og privatister som vil se både metode, mellomregning, CAS-kontroll og programmering der det er relevant.
Deriver \(g(x)=3x^2-5+\frac{3}{x-2}\).
Skriv brøkleddet som potens:
\[g(x)=3x^2-5+3(x-2)^{-1}.\]Da får vi
\[g'(x)=6x+3\cdot(-1)(x-2)^{-2}\cdot 1=6x-\frac{3}{(x-2)^2}.\]Deriver \(h(x)=(3x+2)^3+\ln(3x)\).
For første ledd bruker vi kjerneregelen. Den indre funksjonen er \(3x+2\), og den deriverte er \(3\).
\[\frac{d}{dx}(3x+2)^3=3(3x+2)^2\cdot 3=9(3x+2)^2.\]For logaritmeleddet får vi
\[\frac{d}{dx}\ln(3x)=\frac{1}{3x}\cdot 3=\frac{1}{x}.\]Funksjonen er \(f(x)=e^x(6-e^x)\). Bestem eventuelle nullpunkter.
Et produkt er lik null når minst én faktor er null.
\[e^x(6-e^x)=0.\]Faktoren \(e^x\) er alltid positiv, så vi må ha
\[6-e^x=0 \quad\Longrightarrow\quad e^x=6 \quad\Longrightarrow\quad x=\ln 6.\]Da er funksjonsverdien \(0\).
Vis at \(f\prime(x)=2e^x(3-e^x)\).
Først ganger vi ut funksjonen:
\[f(x)=e^x(6-e^x)=6e^x-e^{2x}.\]Da blir den deriverte
\[f\prime(x)=6e^x-2e^{2x}.\]Faktoriser uttrykket:
\[6e^x-2e^{2x}=2e^x(3-e^x).\]Bestem koordinatene til eventuelle topp- eller bunnpunkter.
Vi setter den deriverte lik null:
\[2e^x(3-e^x)=0.\]Siden \(2e^x>0\), må
\[3-e^x=0 \quad\Longrightarrow\quad x=\ln 3.\]Funksjonsverdien blir
\[f(\ln 3)=e^{\ln 3}\left(6-e^{\ln 3}\right)=3(6-3)=9.\]For \(x<\ln 3\) er \(3-e^x>0\), og for \(x>\ln 3\) er \(3-e^x<0\). Dermed går grafen fra stigende til avtagende.
import sympy as sp
x = sp.symbols('x')
f = sp.exp(x)*(6 - sp.exp(x))
f_derivert = sp.diff(f, x)
kritisk = sp.solve(sp.Eq(f_derivert, 0), x)
verdi = [sp.simplify(f.subs(x, p)) for p in kritisk]
andrederivert = sp.diff(f, x, 2)
print("f'(x) =", sp.factor(f_derivert))
print("Kritiske x-verdier:", kritisk)
print("Funksjonsverdier:", verdi)
print("f''(ln(3)) =", sp.simplify(andrederivert.subs(x, sp.log(3))))
# Utskrift:
# f'(x) = 2*exp(x)*(3 - exp(x))
# Kritiske x-verdier: [log(3)]
# Funksjonsverdier: [9]
# f''(ln(3)) = -18Sorter uttrykkene i stigende rekkefølge: \(\log_2 8\), \(e^{3\ln 1}\), \(\lg 7\) og \(\sqrt[4]{33}\).
Vi vurderer hvert uttrykk:
\[\log_2 8=3,\qquad e^{3\ln 1}=e^0=1.\]Videre er \(\lg 7\approx 0{,}845\), og siden \(2^4=16\) og \(3^4=81\), ligger \(\sqrt[4]{33}\) mellom \(2\) og \(3\).
import math
verdier = {
"lg(7)": math.log10(7),
"e^(3*ln(1))": math.exp(3*math.log(1)),
"fjerderot(33)": 33**(1/4),
"log_2(8)": math.log(8, 2),
}
for navn, verdi in sorted(verdier.items(), key=lambda par: par[1]):
print(f"{navn:14s} = {verdi:.6f}")
# Utskrift:
# lg(7) = 0.845098
# e^(3*ln(1)) = 1.000000
# fjerderot(33) = 2.396782
# log_2(8) = 3.000000Skriv så enkelt som mulig: \(\lg(ab)-\lg\left(\frac{a}{b}\right)+\lg(100b^3)\).
Vi bruker logaritmereglene \(\lg(uv)=\lg u+\lg v\), \(\lg(u/v)=\lg u-\lg v\) og \(\lg(100)=2\):
\[ \begin{aligned} \lg(ab)-\lg\left(\frac{a}{b}\right)+\lg(100b^3) &=(\lg a+\lg b)-(\lg a-\lg b)+(2+3\lg b)\\ &=2+5\lg b. \end{aligned} \]Dette kan også skrives som \(\lg(100b^5)\).
Bestem \(\displaystyle \lim_{x\to\infty}\frac{2x+2}{3x^2+3}\) dersom grenseverdien eksisterer.
Telleren har grad \(1\), mens nevneren har grad \(2\). Nevneren vokser derfor raskere enn telleren.
Vi kan dele teller og nevner på \(x^2\):
\[ \frac{2x+2}{3x^2+3}=\frac{\frac{2}{x}+\frac{2}{x^2}}{3+\frac{3}{x^2}}. \]Når \(x\to\infty\), går \(\frac{2}{x}\), \(\frac{2}{x^2}\) og \(\frac{3}{x^2}\) mot null.
Avgjør påstanden: Alle funksjoner på formen \(f(x)=\frac{ax^2+bx+c}{x-d}\), der \(a,b,c,d\in\mathbb{R}\), har en vertikal asymptote \(x=d\).
Påstanden er ikke alltid sann. Dersom telleren også har faktoren \(x-d\), kan faktoren forkortes bort. Da får vi et hull i grafen, ikke nødvendigvis en vertikal asymptote.
Et moteksempel er
\[f(x)=\frac{(x-d)(x+1)}{x-d}.\]For \(x\ne d\) er dette bare \(x+1\). Grafen går ikke mot uendelig når \(x\) nærmer seg \(d\).
Avgjør påstanden: Det er flere arbeidsgrupper med 4 medlemmer enn med 3 medlemmer når klubben har 7 medlemmer.
Antall grupper med \(k\) medlemmer fra \(7\) medlemmer er \(\binom{7}{k}\).
\[\binom{7}{4}=35,\qquad \binom{7}{3}=35.\]Dette er også logisk fordi det å velge fire personer er det samme som å velge hvilke tre personer som ikke skal være med.
Bruk figuren til å bestemme gjennomsnittlig vekstfart for \(f\) i intervallet \([0,3]\).
Fra grafen leser vi omtrent
\[f(0)\approx 4,\qquad f(3)\approx -0{,}5.\]Gjennomsnittlig vekstfart er stigningstallet til sekanten:
\[ \frac{f(3)-f(0)}{3-0}\approx \frac{-0{,}5-4}{3}=-1{,}5. \]Siden verdiene er lest av en figur, er svaret et omtrentlig svar.
Bruk figuren til å bestemme momentan vekstfart når \(x=0\) og når \(x=3\).
Momentan vekstfart er stigningstallet til tangenten i punktet.
Dette er grafiske avlesninger, så små variasjoner i svaret kan aksepteres dersom metoden er godt forklart.
Ole gjetter på tre flervalgsoppgaver med tre alternativer. Bestem sannsynligheten for nøyaktig ett riktig svar.
For én oppgave er sannsynligheten for riktig svar \(\frac{1}{3}\), og for feil svar \(\frac{2}{3}\). Vi bruker binomisk modell med \(n=3\) og \(p=\frac{1}{3}\):
\[ P(X=1)=\binom{3}{1}\left(\frac{1}{3}\right)^1\left(\frac{2}{3}\right)^2=\frac{4}{9}. \]from fractions import Fraction
from math import comb
n = 3
p = Fraction(1, 3)
sannsyn = Fraction(comb(n, 1), 1) * p * (1 - p)**2
print("P(nøyaktig ett riktig) =", sannsyn)
print("Desimaltall =", float(sannsyn))
# Utskrift:
# P(nøyaktig ett riktig) = 4/9
# Desimaltall = 0.4444444444444444I en klasse på 20 elever har 8 valgt tysk, 10 valgt S1, og 3 valgt begge. Bestem sannsynligheten for at en tilfeldig elev verken har valgt tysk eller S1.
Først finner vi hvor mange som har valgt minst ett av fagene:
\[8+10-3=15.\]Da har
\[20-15=5\]elever verken valgt tysk eller S1. Sannsynligheten blir derfor
\[\frac{5}{20}=\frac{1}{4}.\]Fem jenter skal fordeles på ett rom med plass til to og ett rom med plass til tre. Vi bryr oss ikke om plassene innad på rommene. Hvor mange fordelinger finnes?
Det er nok å velge hvem som skal ligge på rommet med plass til to. De tre andre må ligge på det andre rommet.
\[\binom{5}{2}=10.\]Anastasia velger rom først og vil minimere sannsynligheten for å sove på samme rom som Elena. Bestem sannsynligheten.
For å minimere risikoen velger Anastasia rommet med plass til to personer. Da er det bare én ledig plass på hennes rom.
De fire andre jentene fordeles tilfeldig, og Elena er én av disse fire. Sannsynligheten for at Elena havner på den ene ledige plassen sammen med Anastasia er derfor
\[\frac{1}{4}.\]På en ny hytte er det ett rom med plass til tre og to rom med plass til to. Vi er bare interessert i hvem som sover sammen med hvem. Hvor mange grupperinger finnes?
Mulige gruppestørrelser med fem personer og inntil tre rom er \(3+2\), \(3+1+1\) og \(2+2+1\).
Totalt får vi
\[10+10+15=35.\]Dersom en tolker oppgaven slik at alle tre rom må brukes, skal typen \(3+2\) ikke tas med. Da blir svaret \(25\). Slik teksten står, er det ikke sagt at et rom ikke kan stå tomt.
Lag en modell på formen \(V(x)=a\cdot x^b\) for radius \(x\) og volum \(V\).
Vi bruker potensregresjon. Ved å ta logaritmen på begge sider får vi
\[\ln V=\ln a+b\ln x.\]Da kan vi gjøre lineær regresjon på punktene \((\ln x,\ln V)\).
import numpy as np
import math
radius = np.array([3.5, 3.6, 3.8, 4.5, 4.7, 4.9], dtype=float)
volum = np.array([440, 470, 530, 730, 830, 900], dtype=float)
# Potensregresjon: ln(V) = ln(a) + b*ln(x)
log_x = np.log(radius)
log_v = np.log(volum)
b, ln_a = np.polyfit(log_x, log_v, 1)
a = math.exp(ln_a)
print("a =", a)
print("b =", b)
print(f"Modell: V(x) = {a:.3f} * x^{b:.3f}")
# Utskrift:
# a = 31.95543872867012
# b = 2.0968378894156467
# Modell: V(x) = 31.955 * x^2.097Bestem \(V\prime(4)\), og gi en praktisk tolkning.
For modellen \(V(x)=31{,}96x^{2{,}097}\) er
\[V\prime(x)=31{,}96\cdot 2{,}097\cdot x^{1{,}097}.\]Setter vi inn \(x=4\), får vi omtrent \(306{,}5\).
import math
a = 31.95543872867012
b = 2.0968378894156467
def V(x):
return a * x**b
def V_derivert(x):
return a * b * x**(b - 1)
print("V(4) =", V(4))
print("V'(4) =", V_derivert(4))
print("Avrundet V'(4) =", round(V_derivert(4), 1), "mL per cm")
# Utskrift:
# V(4) = 584.7456315837342
# V'(4) = 306.52919899376417
# Avrundet V'(4) = 306.5 mL per cmHvor mye øker volumet dersom radien dobles ifølge modellen?
I en potensmodell \(V(x)=a x^b\) gir dobling av \(x\)
\[\frac{V(2x)}{V(x)}=\frac{a(2x)^b}{ax^b}=2^b.\]Her er \(b\approx 2{,}097\), så
\[2^{2{,}097}\approx 4{,}28.\]80 søkere, 66 er 16 år eller eldre og 14 er under 16 år. 10 trekkes tilfeldig. Bestem sannsynligheten for at minst 8 er 16 år eller eldre.
Dette er trekking uten tilbakelegging, så vi bruker hypergeometrisk sannsynlighet.
\[P(X\ge 8)=\sum_{k=8}^{10}\frac{\binom{66}{k}\binom{14}{10-k}}{\binom{80}{10}}.\]from math import comb
antall_sokere = 80
eldre = 66
under_16 = 14
intervjuer = 10
sannsynlighet = 0
for k in range(8, 11):
gunstige = comb(eldre, k) * comb(under_16, intervjuer - k)
alle = comb(antall_sokere, intervjuer)
bidrag = gunstige / alle
sannsynlighet += bidrag
print(f"k = {k}: bidrag = {bidrag:.6f}")
print("P(X >= 8) =", sannsynlighet)
print("Avrundet =", round(sannsynlighet, 3))
# Utskrift:
# k = 8: bidrag = 0.233665
# k = 9: bidrag = 0.367188
# k = 10: bidrag = 0.159457
# P(X >= 8) = 0.760309414538745
# Avrundet = 0.76Hvor mange søkere må ledelsen minst intervjue for å være 90 % sikre på at 10 eller flere er 16 år eller eldre?
Vi lar \(n\) være antall som intervjues. Vi må finne minste \(n\) slik at
\[P(X\ge 10)\ge 0{,}90,\]der \(X\) er antall søkere på 16 år eller mer blant de \(n\) som trekkes.
from math import comb
N = 80
K = 66 # 16 år eller eldre
ikke_K = 14 # under 16 år
def hypergeom_minst_10(n):
total = comb(N, n)
s = 0
for k in range(10, min(K, n) + 1):
if 0 <= n - k <= ikke_K:
s += comb(K, k) * comb(ikke_K, n - k) / total
return s
for n in range(10, N + 1):
p = hypergeom_minst_10(n)
print(f"n = {n:2d}, P(X >= 10) = {p:.6f}")
if p >= 0.90:
print("Minste n som virker:", n)
break
# Siste del av utskriften:
# n = 12, P(X >= 10) = 0.677752
# n = 13, P(X >= 10) = 0.833242
# n = 14, P(X >= 10) = 0.937464
# Minste n som virker: 14Figuren viser \(f(x)=100\cdot 0{,}8^x\) og rektangelet \(ABCD\). Punktet \(A\) er \((a,f(a))\), \(B\) og \(C\) har førstekoordinat \(5\), og \(C\) og \(D\) har andrekoordinat \(200\). Uttrykk \(AB\) og \(AD\) ved \(a\).
Den horisontale lengden fra \(x=a\) til \(x=5\) er
\[AB=5-a.\]Den vertikale lengden fra \(y=f(a)\) til \(y=200\) er
\[AD=200-f(a)=200-100\cdot 0{,}8^a.\]Bruk derivasjon til å bestemme det største arealet rektangelet kan få.
Arealet er
\[A(a)=(5-a)\left(200-100\cdot 0{,}8^a\right),\qquad 0\le a\le 5.\]Vi deriverer og løser \(A\prime(a)=0\). Endepunktene må også vurderes.
import sympy as sp
a = sp.symbols('a')
A = (5 - a) * (200 - 100 * sp.Rational(4, 5)**a)
A_derivert = sp.diff(A, a)
kritisk = sp.nsolve(A_derivert, 0.2)
areal_kritisk = sp.N(A.subs(a, kritisk))
areal_0 = sp.N(A.subs(a, 0))
areal_5 = sp.N(A.subs(a, 5))
print("A(a) =", A)
print("A'(a) =", A_derivert)
print("Kritisk a =", kritisk)
print("A(kritisk) =", areal_kritisk)
print("A(0) =", areal_0)
print("A(5) =", areal_5)
# Utskrift:
# Kritisk a = 0.170665710147171
# A(kritisk) = 500.979161563273
# A(0) = 500.000000000000
# A(5) = 0Forklar hvorfor funksjonen for strømpris etter støtte har delt forskrift, og hvorfor den må være kontinuerlig.
Strømstøtten slår først inn når spotprisen kommer over en bestemt grense. Under grensen betaler husholdningen hele spotprisen selv. Over grensen trekkes en andel av det overskytende fra.
Derfor må funksjonen ha to regler: én regel før grensen og én regel etter grensen.
Funksjonen bør være kontinuerlig fordi en svært liten endring i spotprisen rundt grensen ikke skal gi et plutselig hopp i faktisk betalt pris. Støtteordningen skal bare redusere den delen som ligger over grensen.
Sett opp et funksjonsuttrykk for \(f(x)\), der \(x\) er spotpris i øre/kWh og \(f(x)\) er pris etter strømstøtte.
Uten merverdiavgift og med støtteordningen der husholdningen får dekket \(90\,\%\) av prisen over \(75\) øre/kWh, blir regelen:
Den andre linjen kan også skrives \(f(x)=0{,}10x+67{,}5\).
Erik kaster én vanlig sekssidet terning. Kris kaster to firesidete terninger. Erik får poeng dersom hans terning er høyere enn den høyeste av Kris sine to terninger. Bestem sannsynligheten.
Vi teller alle \(6\cdot 4\cdot 4=96\) like sannsynlige utfall.
For hver verdi Erik får, teller vi hvor mange par Kris kan få med begge terninger lavere enn Erik sin verdi.
gunstige = 0
alle = 0
for erik in range(1, 7):
gunstige_for_erik = 0
for kris_1 in range(1, 5):
for kris_2 in range(1, 5):
alle += 1
if erik > max(kris_1, kris_2):
gunstige += 1
gunstige_for_erik += 1
print(f"Erik = {erik}: gunstige Kris-utfall = {gunstige_for_erik}")
print("Gunstige totalt =", gunstige)
print("Alle utfall =", alle)
print("Sannsynlighet =", gunstige / alle)
# Utskrift:
# Erik = 1: gunstige Kris-utfall = 0
# Erik = 2: gunstige Kris-utfall = 1
# Erik = 3: gunstige Kris-utfall = 4
# Erik = 4: gunstige Kris-utfall = 9
# Erik = 5: gunstige Kris-utfall = 16
# Erik = 6: gunstige Kris-utfall = 16
# Gunstige totalt = 46
# Alle utfall = 96
# Sannsynlighet = 0.4791666666666667Bruk simulering til å bestemme sannsynligheten for at Erik får 100 poeng før Kris.
Vi simulerer mange spill. Ett spill fortsetter til én av spillerne har fått \(100\) poeng. Erik vinner spillet dersom han når \(100\) først.
import random
random.seed(3060)
def erik_vinner_runde():
erik = random.randint(1, 6)
kris_1 = random.randint(1, 4)
kris_2 = random.randint(1, 4)
return erik > max(kris_1, kris_2)
def spill_til_100():
erik_poeng = 0
kris_poeng = 0
while erik_poeng < 100 and kris_poeng < 100:
if erik_vinner_runde():
erik_poeng += 1
else:
kris_poeng += 1
return erik_poeng == 100
antall_spill = 200_000
erik_vinner = 0
for _ in range(antall_spill):
if spill_til_100():
erik_vinner += 1
simulert_sannsynlighet = erik_vinner / antall_spill
print("Antall spill:", antall_spill)
print("Erik vant:", erik_vinner)
print("Simulert sannsynlighet:", simulert_sannsynlighet)
# Typisk utskrift med denne seed-en:
# Antall spill: 200000
# Erik vant: omtrent 55600
# Simulert sannsynlighet: omtrent 0.278# Eksakt kontroll med negativ binomisk sum.
# Erik må vinne siste runde, og Kris kan ha 0, 1, ..., 99 poeng da Erik får sitt poeng nummer 100.
from math import comb
p = 23 / 48
q = 1 - p
sannsynlighet = 0
for kris_poeng in range(100):
antall_rekkefolger = comb(99 + kris_poeng, kris_poeng)
sannsynlighet += antall_rekkefolger * (p**100) * (q**kris_poeng)
print("p for Erik i én runde =", p)
print("P(Erik får 100 før Kris) =", sannsynlighet)
print("Avrundet =", round(sannsynlighet, 3))
# Utskrift:
# p for Erik i én runde = 0.4791666666666667
# P(Erik får 100 før Kris) = 0.278005999955146
# Avrundet = 0.278Filen bruker kun MathJax-formatene \(...\) og \[...\]. Brøker, binomialkoeffisienter, røtter, desimaltall, koordinater og funksjonsuttrykk er skrevet med eksplisitt LaTeX-syntaks.
Python-koden er vist i mørk, nøytral kodevisning og inneholder realistiske kjøringer med mellomresultater og utskrift. GeoGebra CAS-bokser er markert separat fra løsningsresonnementet.