Eksamen H23 S2

Forfattar

Torodd F. Ottestad

Publisert

December 11, 2023

Løysingsforslag S2 - H23

Her er eit forslag til løysing av hausteksamen i S2 2023. I del 2 er oppgåvene stort sett Python brukt som hjelpemiddel.

Eg kan ikkje lova at løysinga er feilfri… 😊 Gje meg gjerne ein lyd i kommentarfeltet eller her om du ser feil 🔍

Sist oppdatert: 11.12.2023


Eksamenssettet finn du hos UDIR: Finn eksamensoppgaver

Del 1 - utan hjelpemiddel

Oppgåve 1 - bestemt integral

Integrerer:

11(x3+2x)dx=[x44+x2]11=(144+12)((1)44+(1)2)=14+1(14+1)=0

La f(x)=x3+2x. Ser at f(x)<0 når x[1,0, og at f(x)>0 når x0,1].

11f(x)dx=0 betyr at arealet avgrensa av f(x) og x-aksen i kvart av dei to intervalla er like store. Sidan integrala har ulikt forteikn vert summen av dei 0.

Oppgåve 2 - rekker

a) summen av dei fire første ledda

Summen av ei uendelig geometrisk rekke som konvergerer er gitt ved

S=a11k

Her er S=8 og a1=4. Dermed får me

8=41k88k=48k=4k=48=12

Då blir

S4=a1+a2+a3+a4=4+2+1+12=7.5

b)

Skal finna a4 når a1+a4+a7=114

Veit at a4=a1+3da1=a43d og at a7=a4+3d

Dermed får me

a1+a4+a7=114(a43d)+a4+(a4+3d)=1143a4=114a4=1143=38.

Oppgåve 3

a) einingskostnad

Ser at h(x)=81,75x skjær K(x) i punkt A. Dvs at K(40)=g(40)=81,7540

Dermed må einingskostnaden når ein produserer 40 einingar vera 81,75 kr.

b) grensekostnad

I punkt A, ved produksjon av 40 einingar tangerer f(x)=31x+2030 grafen til K(x).

Dvs. at stigningstalet til tangenten til K i x=40 er 31. Dermed vil K(40)=31 som betyr at grensekostnaden er 31.

c) minste einingskostnad

Ser at det lågaste stigningstalet ei linje som kryssar både origo og K(x) er linja som tangerer grafen i punkt B. Alle andre linjer for større eller mindre verdiar av x vil ha høgare stigningstal (og to skjæringspunkt).

Dermed er stigningstalet til denne tangenten, g(x)=60x, den minste einingskostnaden.

Den minste einingskostnaden er 60 kr.

Oppgåve 4

N = 1000
start = -2
slutt = 2
dx = (slutt - start)/N

def f(x):
    return x**2-1

S = 0
for i in range(N):
    xi = start + i*dx
    S = S + abs(f(xi))*dx  # abs(f(x)) gir absoluttverdien til f(x)

print(S)

a) - forklar kva eleven vil finna

Ser at eleven arbeider med funksjonen f(x)=x21 (linje 6-7). i dei første linjene deler han opp avstanden mellom x=2 og x=2 i 1000 like store bitar som han kallar dx.

I for-løkka reknar han ut summen av 1000 rektangel mellom x=2 og x=2. Dei har høgde slik at høgresida av rektangelet er like høgt som f(x) i den aktuelle x-verdien. Sidan han tar absoluttverdien av funksjonsverdien sikrar han at han finn positive verdiar (areal er positivt) for alle dei ulike rektangla.

Dette er ein måte å finna arealet avgrensa av f(x) og x-aksen når x[2,2].

b) - ved rekning

Veit at f(x)=x21 er - symmetrisk om x-aksen - 0 når x=1x=1 - konveks, dvs f(x)<0 når 1<x<1

Kallar arealet me skal finna for A. Som følgje av symmetrien om x-aksen er det nok å finna arealet avgrensa av x-aksen og grafen til f(x) mellom x=0 og x=2 og multiplisera resultatet her med 2. Då slepp me unna ein del algebra 😅 Sidan f(x)<0 i det første intervallet må me endra forteikn på dette for å finna arealet. Dermed får me:

A=2(01f(x)dx+12f(x)dx)

Reknar ut areala for seg

01f(x)dx=(1331)(0330)=2312f(x)dx=(2332)(1331)=(832)(131)=(23)+(23)=43

Og arealet blir A=2(01f(x)dx+12f(x)dx)=2((23)+43)=263=4

Oppgåve 5

Tre typar kuler i ein kasse.

vekt (X) P(X=x)
4 kg 14
5 kg 12
10 kg  11412=14

a) Forventningsverdi, E(X)

E(X)=i=13xiP(X=xi)=414+512+1014=4+10+104=244=6

Dermed er E(X)=6kg

b) Sannsynsfordelinga til Y

Veit at Y=X1+X2. Sidan det er med tilbakelegging vil me kunna bruka to like eller to ulike kuler. Dermed kan total vekt, Y, bli:

vekt i kg (Y) P(Y=y)
8 = 4 + 4 116=1414
9 = 4 + 5 14=21412
10 = 5 + 5  14=1212
14 = 4 + 10 18=21414
15 = 5 + 10 14=21214
20 = 10 + 10 116=1414

Ser at summen av sannsyna her vert 1, som tyder på at fordelinga er rett.

c) P(Y > 10)

Bruker sannsynsfordelinga over.

P(Y>10)=P(Y=14)+P(Y=15)+P(Y=20)=18+14+116=2+4+116=716

Del 2

Oppgåve 1

Pris (kr) Etterspurnad
10 237
20 111
30 49
40 22
50 12

a) Lag ein modell

Lag ein modell q som kan brukast for å beskriva samanhengen mellom pris i kroner p og dagleg etterspurnad.

Ser at når ein aukar prisen med 10 kroner vert etterspurnaden omlag halvert. Det kan tyda på at ein eksponentiell modell kan passa her. Plottar datapunkta og ser korleis dei ser ut:

import matplotlib.pyplot as plt

pris = [10, 20, 30, 40, 50]
etterspurnad = [237, 111, 49, 22, 12]

plt.plot(pris, etterspurnad, "o")
plt.show()

Det ser framleis ut som ein eksponentiell funksjon er ein veg å gå her. Den er på forma q(p)=abp Bruker regresjon i python for å finna ein passande modell.

from scipy.optimize import curve_fit
import numpy as np

def q(p, a, b):
    return a * b**p

# gjetter ca koeffverdi
#gjett = [650, 25, 1]

# finn funksjonen
K, E = curve_fit(q, xdata=pris, ydata=etterspurnad)

# hentar ut koeff.
a, b = K

x_verdiar = np.linspace(0, 60, 1000)
y_verdiar = q(x_verdiar, a, b)

# plottar modell og datapunkt
plt.plot(x_verdiar, y_verdiar)
plt.plot(pris, etterspurnad, "o")

# x- og y-akse
plt.axhline(y=0, c="black")
plt.axvline(x=0, c="black")

# skriv ut koeff.
print(f"a = {a:.0f} \nb = {b:.4f}")
a = 515 
b = 0.9255

Får at q(p)=5150,926p

Denne modellen vil ikkje vera gyldig for veldig låge verdiar av p sidan det ikkje er realistisk at dei sel vara til feks. 1 kr. Samstundes vil nok ikkje modellen vera gyldig for veldig store verdiar av p heller, sidan prisen på eitt tidspunkt vert for høg til at nokon vil kjøpa vara. Prøver modellen for ulike verdiar for p.

for i in range(5):
    pris = 50 + 10*i
    print(f"pris: {pris}, etterspurnad: {q(pris, a, b):.2f}")
pris: 50, etterspurnad: 10.71
pris: 60, etterspurnad: 4.94
pris: 70, etterspurnad: 2.28
pris: 80, etterspurnad: 1.05
pris: 90, etterspurnad: 0.48

Ser at etterspurnaden er ca. ei vare når prisen er 80. Etter dette vil ein ikkje få solgt varer.

Modellen kan vera gyldig når p[1,80] (gitt at dei kan selja vara for mindre enn 10 kr.)

b) 70 einingar pr dag

Løyser likninga q(p)=70

from sympy import Symbol, Eq, solveset, Reals

p = Symbol("p")

vs = 515 * 0.926**p
hs = 70

likning = Eq(vs, hs)
løysing = solveset(likning, p, Reals)
løysing.evalf(4)

{25.96}

Prisen bør i følge modellen vera 26 jr for at bedrifta skal selja 70 einingar per dag.

c) størst mogleg inntekt

For ei anna vare gjeld modellen p=7912,2ln(x) der x er den daglege etterspurnaden når vara kostar p kr.

Inntektene finn me ved å ganga prisen med tal solgte eininigar.

I(x)=p(x)x=(7912.2ln(x))x

Løyser i Python med SymPy

from sympy import diff, ln
x = Symbol("x")

# definerer og deriverer I
I = (79 - 12.2 * ln(x)) * x 
dI = I.diff()

# finn nullpunkt
vs = dI
hs = 0
likning = Eq(vs, hs)
løysing = solveset(likning, x, Reals)

# skriv ut svaret
løysing.evalf(3)

{239.0}

Ser at produksjonsmengd på 239 gir størst inntekt. Finn prisen når x=239.

p = 79 - 12.2*ln(x)
p.subs(x, 239).evalf(2)

12.0

Løyser i GeoGebra

Pris på 12 kroner gir størst inntekt.

d) Grensekostnad og grenseinntekt

Kostnadsfunksjon gitt ved K(x)=0,21x2+10x+910

Vil finna x som gjer at grensekostnad og grenseinntekt blir like.

from sympy import nsolve

# definerer og deriverer I
I = (79 - 12.2 * ln(x)) * x 
dI = I.diff()

# definerer og deriverer K
K = 0.021*x**2 + 10*x + 910
dK = K.diff()

# set opp og løyser likninga
vs = dI 
hs = dK

# løyser numerisk, nsolve treng startverdi
# ber han starta på 1
gjett = 1

likning = Eq(vs, hs)
løysing = nsolve(likning, x, gjett)
løysing.evalf(2)

80.0

Grensekostnadene og grenseinntektene er like når det vert solgt 80 einingar.

Dette er vinningsoptimal produksjonsmengde, sidan det er her overskotsfunksjonen har sitt ekstremalpunkt.

O(x)=I(x)K(x)O(x)=I(x)K(x)O(x)=0I(x)=K(x)

Oppgåve 2

Miriam set inn 20 000 kr i byrjinga av kvart år. Første innskot i starten av 2024, andre innskot i starten av 2025 osb. Fast årleg rentesats på 3,5 %.

a) etter 20 innskot

Bruker python for å finna ut av dette. Like etter at ho har sett inn innskot 20 betyr at dette ikkje har forrenta seg. Innskot 19 vil ha forrenta seg ein gong, nr. 18 to gongar osb.

innskot = 20000

konto = 0
rente = 1.035

for år in range(20):
    konto = konto + innskot
    innskot = innskot * 1.035

print(f"På konto rett etter innskot nr 20: {konto:.0f} kr")
På konto rett etter innskot 20: 565594

b) Hermod sitt sparebeløp

Prøver meg fram med utgangskpunkt i koden frå (a)

# metoden frå (a) som funksjon
def etter20år(innskot):
    innskot = innskot

    konto = 0 
    rente = 1.035

    for år in range(20):
        konto = konto + innskot
        innskot = innskot * 1.035

    return konto

# veit frå (a) at innskotet er større enn 20000
innskot = 20000

# prøver meg fram til eg finn innskotet
while etter20år(innskot) <= 692852:
    innskot = innskot + 1 

print(innskot)
24500

Han må setje inn 24 500 kr kvart år for å få 692 852 kr etter det 20. innskotet.

c) Variabelt innskot

Første innskot blir 20000+0x. Andre innskot blir 20000+x, tredje 20000+2x osv.

Første innskot forrentar seg 19 gongar, til (20000+0x)1,03519. Andre innskot blir til (20000+x)1,03518 osv.

Dermed får me (20000+(11)x)1,035201+(20000+(21)x)1,035202+(20000+(201)x)1,0352020

Ser at denne summen kan delast inn i to summar s1=20000+200001,035+200001,0352+200001,03519s2=(11)x1,035201+(21)x1,035202+(201)x1,0352020

Frå (a) veit me at s1=565594. Dermed må me finna x slik at s2=1000000565594.

def sum_auke(x):
    total = 0

    for i in range(1, 21):
        ledd = (i-1)*x * 1.035**(20-i)
        total = total + ledd

    return total

# det variable sparebeløpet må 
# voksa til "mål"
mål = 1000000 - 565594

# startverdi
x = 0

# finn auken 
while sum_auke(x) < mål:
    x = x + 0.5

print(f"Sparebeløpet må aukast med {x} kr pr. år")
print(f"Då har ho {sum_auke(x) + 565594:.2f} kr på konto rett etter innskot nr. 20")
Sparebeløpet må aukast med 1836.5 kr pr. år
Då har ho 1000040.73 kr på konto rett etter innskot nr. 20

Oppgåve 3

Vinterdekk med bremselengd 83 meter under bestemte forhold.

X: bremselengda ved eit tilfeldig måling under dei bestemte forholda.
X er normalfordelt med μ=83m og σ=3,0m

Mykje her kan løysast i sannsynskalkulatoren til GeoGebra. Eg vel å nytta simuleringar for å finna svara her.

# importerer numpy og lagar tilfeldighetsgenerator
import numpy as np
rng = np.random.default_rng()

a) Bremselengd over 87 meter

Simulerer mange tilfeldige målingar og ser kor mange som er over 87 meter.

N = 100000000

bremselengd = rng.normal(83, 3.0, size=N)

gunstige = sum(bremselengd > 87)

sannsyn = gunstige / N

print(f"P(X > 87) = {sannsyn:.4f}")
P(X > 87) = 0.0912

Køyrer simuleringa med 100 000 000 forsøk fleire gongar og ser at P(X>87)=0,0912.

Ved rekning

Bruker scipy.stats sin norm.cdf(x, forventningsverdi, standardavvik) for å bestemma sannsynet. Den returnerer P(Xx), så for å finna P(X>x) trekk eg resultatet frå 1.

from scipy.stats import norm

mu = 83          # gjennomsnitt
sigma = 3        # standardavvik
x = 87  

sannsyn = 1 - norm.cdf(x, mu, sigma)

print(f"P(X > 87) = {sannsyn:.4f}")
P(X > 87) = 0.0912

b) Bestemme k

Bestem k slik at P(X<k)=0,9. Gje ei praktisk tolking av svaret

Ved rekning (i SciPy)

Finn k med scipy.stats sin norm.ppf som finn kva k som gjer at P(Xk)=p. Oppgåva spør etter P(X<k) men antar at sannsynet for akkurat P(X=k) er så lite at denne skilnaden ikkje er relevant.

from scipy.stats import norm

mu = 83          # gjennomsnitt
sigma = 3        # standardavvik
sannsyn = 0.9  


# Finn k-verdien for det gjevne sannsynet
k = norm.ppf(sannsyn, mu, sigma)
print(f"k = {k:.2f}")
k = 86.84

Ved simulering

Tek utgangspunkt i koden frå a), men minkar gradvis bremselengda (k) til sannsynet vert 0,9.

N = 10000000

# startverdiar
k = 85   
sannsyn = 0 

# held på til sannsynet passerer 0.9
while sannsyn < 0.9:
    bremselengd = rng.normal(83, 3.0, size=N)
    gunstige = sum(bremselengd <= k)
    sannsyn = gunstige / N
    k = k + 0.01

print(f"k = {k:.2f}")
k = 86.86

Ser at k må vera omtrent 86,8 m.
Dette betyr at det er 90 prosent sannsynleg at bremselengda ved ei tilfeldig måling er kortare enn 86,8 meter under dei bestemte forholda.

c) Bestemme sannsyn for gjennomsnitt av 15 målingar

Løyser denne og med simulering, men på ein litt annan måte. Simulerer 15 målingar N gongar i ein tabell som er N brei og 15 høg. Finn vidare gjennomsnittet kolonnevis (dermed snittet av 15 tilfeldige målingar).

# tal simuleringar
N = 10000000

# simulerer 15 tilfeldige målingar N gongar
simulert = rng.normal(83, 3.0, size=(15, N))

# axis=0 -> finn snitt av kolonner
snitt = np.average(simulert, axis=0)

# tel opp gunstige og finn sannsynet
gunstige = sum(snitt < 84)
sannsyn = gunstige / N

print(f"P(snitt 15 målingar < 84 m) = {sannsyn:.4f}")
P(snitt 15 målingar < 84 m) = 0.9018

Ved rekning

Veit μ og σ for ei tilfeldig måling. Finn E(15X) og SD(15X). E(15X)=15E(X)=1583m=1245mSD(15X)=SD(X)15=3.0m1511,6m Bruker scipy.stats for å rekna ut sannsynet for at 15 målingar er mindre enn 1584m.

from scipy.stats import norm

mu = 1245
sigma = 11.6
x = 15*84

sannsyn = norm.cdf(x, mu, sigma)

print(f"P(snitt 15 målingar < 84 m) = {sannsyn:.4f}")
P(snitt 15 målingar < 84 m) = 0.9020

Begge metodane viser at sannsynet for at snittet av 15 målingar er under 84m er 0.902.

d) Hypotesetest

Det blir påstått at bremselengda er lenger enn 83 meter.
Gjennomført 15 målingar.

målingar =  np.array([
    86.4, 85.5, 82.9, 81.9, 84.0,
    86.4, 82.3, 85.9, 77.7, 83.0, 
    86.9, 88.3, 86.2, 80.5, 84.8
    ])

Hypoteser
H0: Bremselengda er 83 meter (under bestemte forhold) μ=83
H1: Bremselengda er meir enn 83 meter (under bestemte forhold) μ>83

Finn gjennomsnittet av målingane våre.

mu_1 = np.average(målingar)
print(mu_1)
84.18

Reknar ut forventningsverdien og standardavviket til 15 målingar ut frå nullpypotesa sine verdiar (samme logikk og utrekning som i c):
Lar X vera bremselengda ved ei tilfeldig måling slik at: X=X1+X2++X15 Sidan alle målingane har samme forventningsverdi og standardavvik får me då at E(X)=1583=1245 og SD(X)=3.01511,6

Samla resutat frå målingane ut frå snittet vårt finn me ved

mu_1 * 15
1262.7

Sjekkar sannsynet for at P(X1262.7) når μ=1245 og σ=11.6

from scipy.stats import norm

mu = 1245           # gjennomsnitt
sigma = 11.6        # standardavvik
x = 1262.7          # samla resultat frå datamaterialet  

sannsyn = 1 - norm.cdf(x, mu, sigma)

print(f"P(X > {x}) = {sannsyn:.4f}")
P(X > 1262.7) = 0.0635

Dette tilsvarar ca 6,4 %. Sidan me gjennomfører testen med signifikansnivå på 5% er det ikkje grunnlag for å forkaste H0.

Det er ikkje hold i mistanken.

Oppgåve 4

Figurtal, pentagonar.

P1=1P2=6P3=16P4=31P5=51

a) Rekursiv samanheng

Ser at P2P1=5, P3P2=10, P4P3=15 osb.

Dermed er ein rekursiv formel som passar Pn=Pn1+5(n1)

b) Programmere rekursiv samanheng

Lagar ein python-kode for å finna P100

# figurtall 1
P = 1

# figurtall 2 til og med 100
for n in range(2, 101):
    P = P + 5*(n-1)

# skriv ut P_100
print(P)
24751

Oppgåve 5

X: Høgda til tilfeldig vald jente på 24 månader.
E(X)=87cm, SD(X)=3,3cm

Y: Høgda til tilfeldig vald gut på 24 månader.
E(X)=88cm, SD(X)=3,1cm

Lagar eit program for å anslå sannsynet for at høgda til eit tilfeldig valt barn på 24 månader er mindre enn 84 cm. Antar at det er like mange jenter som gutar i populasjonen.

import numpy as np
rng = np.random.default_rng()

# tal simuleringar 
N = 100000000

# trekk tilfeldige barn og tel opp antal gutar (0) og jenter (1)
barn = rng.integers(0, 2, size=N)
j = sum(barn)
g = N - j

# finn høgda på jenter og gutar for seg
hj = rng.normal(87, 3.3, size=j)
hg = rng.normal(88, 3.1, size=g)

# tel opp gunstige utfall
gunstige = sum(hj < 84) + sum(hg < 84)

# reknar ut sannsynet
sannsyn = gunstige / N
print(f"P(høgde < 84 cm) = {sannsyn:.4f}")
P(høgde < 84 cm) = 0.1400

Køyrer koden med simulert trekk av 100 000 000 barn fleire gongar og ser at sannsynet for at eit barn på 24 mnd er mindre enn 84 cm er 0,14.

Gjenbruk