9.3

9.3 Funksjonar i Python

Definere og kalle eigne funksjonar, lage verditabellar, handtere verdiar som ikkje er definerte og rekne ut vekstfart.

55 min
13 oppgaver
Eigne funksjonarVerditabellarNulldivisjonVekstfartStørste og minste verdi
Din fremgang i kapitlet
0 / 13 oppgaver
Kapitlets plass i kurset

Funksjonar i matematikk og i Python

Ein matematisk funksjon gir éin verdi f(x)f(x) for kvar xx. I Python lagar vi det same med def:

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

- def f(x): definerer ein funksjon med namn f og parameter x.
- return sender verdien tilbake til staden der funksjonen vart kalla.
- f(4) kallar funksjonen med x=4x = 4 og gir f(4)=5f(4) = 5.

Funksjonen blir ikkje køyrd før han blir kalla. Ein funksjon kan ha fleire parametrar, til dømes def vekstfart(a, b):.

✏️Døme 1: Verditabell

Lag ein verditabell for f(x)=x2−2x−3f(x) = x^2 - 2x - 3 for heiltal frå −2-2 til 44, og bruk tabellen til å finne nullpunkta.

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

for x in range(-2, 5):
    print(x, f(x))

-2 5
-1 0
0 -3
1 -4
2 -3
3 0
4 5

f(−1)=0f(-1) = 0 og f(3)=0f(3) = 0

Kontroll: x2−2x−3=(x+1)(x−3)x^2 - 2x - 3 = (x + 1)(x - 3)

Svar: Nullpunkta er x=−1x = -1 og x=3x = 3.

📝Oppgave 1

Kva skriv programmet ut?

def g(x):
    return 3 * x - 5

print(g(4), g(0), g(-2))

📝Oppgave 2

Kva skriv programmet ut?

def h(x):
    return x ** 2

y = h(3) + 1
print(y)

📝Oppgave 3

Kva skriv programmet ut?

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

def g(x):
    return f(x) ** 2

print(g(3))

📝Oppgave 4

Lag ein funksjon areal_sirkel(r) som returnerer arealet av ein sirkel med radius rr. Bruk funksjonen til å finne arealet når r=5r = 5, avrunda til to desimalar.

📝Oppgave 5

Lag eit program som skriv ut ein verditabell for f(x)=x3−4xf(x) = x^3 - 4x for heiltal frå −3-3 til 33. Kva for nullpunkt kan du lese av?

Verdiar som ikkje er definerte

Ein rasjonal funksjon er ikkje definert der nemnaren er null. Når eit program prøver å rekne ut ein slik verdi, stoppar det med feilmeldinga ZeroDivisionError. Vi unngår feilen med eit vilkår som hoppar over denne xx-verdien.

✏️Døme 2: Feilmelding i verditabellen

Programmet nedanfor skal lage ein verditabell for f(x)=2x+1x+1f(x) = \dfrac{2x + 1}{x + 1}.

def f(x):
    return (2 * x + 1) / (x + 1)

x = 3
while x >= -3:
    print(x, f(x))
    x = x - 1

a) Kvifor stoppar programmet med ei feilmelding?

b) Endre programmet slik at det ikkje stoppar.

a)

3 1.75
2 1.6666666666666667
1 1.5
0 1.0
ZeroDivisionError: division by zero

Etter x=0x = 0 blir x=−1x = -1, og då er nemnaren x+1=0x + 1 = 0.

Svar: f(−1)f(-1) er ikkje definert fordi vi då deler på null.

b)

def f(x):
    return (2 * x + 1) / (x + 1)

x = 3
while x >= -3:
    if x != -1:
        print(x, f(x))
    else:
        print(x, "ikkje definert")
    x = x - 1

3 1.75
2 1.6666666666666667
1 1.5
0 1.0
-1 ikkje definert
-2 3.0
-3 2.5

Svar: Vi legg inn vilkåret if x != -1: framfor utrekninga.

📝Oppgave 6

Programmet skal lage ein verditabell for f(x)=x+4x−3f(x) = \dfrac{x + 4}{x - 3}.

def f(x):
    return (x + 4) / (x - 3)

for x in range(0, 7):
    print(x, f(x))

a

Programmet skriv ut tre linjer og stoppar så med ei feilmelding. Forklar kvifor.

b

Endre programmet slik at det skriv ut verdiane for alle dei andre xx-verdiane.

c

Kva for ein vertikal asymptote har grafen til ff?

Vekstfart med ein funksjon

Gjennomsnittleg vekstfart frå x=ax = a til x=bx = b er

f(b)−f(a)b−a\frac{f(b) - f(a)}{b - a}

Den momentane vekstfarten i x=ax = a kan vi tilnærme ved å velje bb svært nær aa, til dømes b=a+0,0001b = a + 0{,}0001.

✏️Døme 3: Gjennomsnittleg og momentan vekstfart

Kva skriv programmet ut, og kva fortel verdiane?

def f(x):
    return 0.5 * x ** 2 + x

def vekstfart(a, b):
    return (f(b) - f(a)) / (b - a)

print(vekstfart(0, 4))
print(vekstfart(2, 2.0001))

f(x)=0,5x2+xf(x) = 0{,}5x^2 + x

f(4)=0,5⋅16+4=12f(4) = 0{,}5 \cdot 16 + 4 = 12, f(0)=0f(0) = 0

12−04−0=3\dfrac{12 - 0}{4 - 0} = 3

3.0
3.000049999999696

Kontroll av den andre verdien: f′(x)=x+1f'(x) = x + 1, så f′(2)=3f'(2) = 3.

Svar: Den gjennomsnittlege vekstfarten frå x=0x = 0 til x=4x = 4 er 3. Den andre verdien er svært nær 3 og er ei tilnærming til den momentane vekstfarten f′(2)=3f'(2) = 3.

📝Oppgave 7

Ada har laga programmet nedanfor. Kva for ein verdi blir skriven ut, og kva fortel verdien?

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

a = 1
b = 4
v = (f(b) - f(a)) / (b - a)
print(v)

📝Oppgave 8

Programmet nedanfor er gitt.

def f(x):
    return x ** 3

def stigning(a):
    h = 0.001
    return (f(a + h) - f(a)) / h

print(stigning(2))

a

Kva reknar funksjonen stigning ut?

b

Samanlikn utskrifta med f′(2)f'(2).

Søkje etter største og minste verdi

For å finne den minste verdien av ff blant mange xx-verdiar lèt vi ein variabel halde den minste verdien vi har sett så langt. I kvar runde samanliknar vi med neste funksjonsverdi og byter dersom han er mindre.

✏️Døme 4: Minste verdi

Kva finn programmet ut?

def f(x):
    return x ** 2 - 6 * x + 4

minst = f(-2)
x_min = -2
for x in range(-1, 9):
    if f(x) < minst:
        minst = f(x)
        x_min = x
print(x_min, minst)

Programmet startar med f(−2)=20f(-2) = 20 og går gjennom heiltala frå −1-1 til 88. minst og x_min blir oppdaterte kvar gong f(x)f(x) er mindre enn den minste verdien så langt.

3 -5

Kontroll: f(x)=(x−3)2−5f(x) = (x - 3)^2 - 5 har botnpunkt i (3,−5)(3, -5).

Svar: Blant heiltala frå −2-2 til 88 har ff den minste verdien sin −5-5 for x=3x = 3.

📝Oppgave 9

Siri har laga programmet nedanfor.

def f(x):
    return x ** 2 - 4 * x - 5

x = -3
minst = f(x)
while x < 6:
    x = x + 1
    if f(x) < minst:
        minst = f(x)
print(minst)

a

Kva finn Siri ut når ho køyrer programmet? Kva for ein verdi blir skriven ut?

b

Endre programmet slik at det også skriv ut xx-verdien der den minste verdien er.

✏️Døme 5: Fakultet
n!n! (nn fakultet) er produktet 1⋅2⋅3⋯n1 \cdot 2 \cdot 3 \cdots n. Lag ein funksjon som reknar ut n!n!, og bruk han til å finne 5!5! og 10!10!.

Eit produkt blir bygd opp som ein sum, men startverdien er 1.

def fakultet(n):
    produkt = 1
    for k in range(1, n + 1):
        produkt = produkt * k
    return produkt

print(fakultet(5))
print(fakultet(10))

120
3628800

Svar: 5!=1205! = 120 og 10!=3 628 80010! = 3\,628\,800

Oppgåver i eksamensform

📝Oppgave 10

Programmet nedanfor er gitt.

def S(n):
    s = 0
    for k in range(1, n + 1):
        s = s + k
    return s

n = 1
while S(n) <= 1000:
    n = n + 1
print(n, S(n))

Kva skriv programmet ut, og kva har programmet funne?

📝Oppgave 11

Programmet nedanfor undersøkjer f(x)=−x2+5x+2f(x) = -x^2 + 5x + 2.

def f(x):
    return -x ** 2 + 5 * x + 2

storst = f(0)
x_maks = 0
for i in range(0, 51):
    x = i / 10
    if f(x) > storst:
        storst = f(x)
        x_maks = x
print(x_maks, storst)

a

Kva for xx-verdiar blir undersøkte?

b

Kva skriv programmet ut, og kva fortel verdiane?

c

Vis ved rekning at programmet har funne toppunktet til grafen.

📝Oppgave 12
n!=1⋅2⋅3⋯nn! = 1 \cdot 2 \cdot 3 \cdots n
a

Lag eit program som reknar ut n!n!. Bruk det til å finne 8!8! og 30!30!.

b
30!30! sluttar på 7 nullar. Gjer greie for kva for faktorar som gir desse nullane.
Løs oppgaven
📝Oppgave 13

Lars har laga programmet nedanfor.

def g(x):
    return 4 / (x ** 2 - 4)

for x in range(-3, 4):
    print(x, g(x))

Programmet skriv ut éi linje og stoppar så med ei feilmelding.

a

Kva vil Lars bruke programmet til, og kvifor får han ei feilmelding?

b

Foreslå ei endring som gjer at programmet skriv ut alle verdiane som finst.

c

Bestem asymptotane til grafen til gg.

Oppsummering

- def f(x): med return lagar ein funksjon; f(3) kallar han.
- Ei løkke som kallar funksjonen, gir ein verditabell.
- Der ein funksjon ikkje er definert, stoppar programmet med ZeroDivisionError; eit vilkår (if x != …) hoppar over verdien.
- (f(b) - f(a)) / (b - a) er gjennomsnittleg vekstfart; med bb svært nær aa blir det ei tilnærming til f′(a)f'(a).
- Største eller minste verdi finn vi ved å samanlikne med den beste verdien så langt.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.