Eigendefinerte funksjonar i Python
Denne artikkelen er i eit fag som følgjer ein utgått læreplan. Versjonen du ser på, kan innehalde utdatert informasjon eller ha andre feil.
Problemstilling
Vi tenker oss no ei bedrift som har ein funksjon som modell for kostnadene K i kroner ved å produsere x einingar av ei vare lik
Sidan prisen på ei eining er 45 kroner, blir inntektsfunksjonen
Oppgåve – rekning
Finn ein funksjon O for overskotet ut frå dei to funksjonane over.
Vi går no ut frå at bedrifta produserer 60 einingar per dag. Dei vurderer å auke produksjonen til 100 einingar per dag, og dei lurer på kor mykje overskotet endrar seg. Oppdraget vårt blir å lage eit program som kan rekne ut forskjellen i overskot ved to ulike tal på produserte einingar.
Koding utan å bruke eigendefinert funksjon
Programmet må rekne ut kva overskotet er når det blir produsert 100 einingar, og trekke frå overskotet når det blir produsert 60 einingar. Så må svaret skrivast til skjermen.
🤔 Tenk over: Korleis skriv vi reknestykket over matematisk ved hjelp av funksjonen O?
Oppgåve – algoritme
Over har vi beskrive kva programmet skal gjere. Skriv ein litt meir detaljert algoritme til eit slikt program der du bruker variablar for den noverande og for den nye produksjonsmengda. Hugs å få med gode, forklarande tekstar.
Oppgåve – koding
Skriv koden til programmet etter algoritmen over i ein programeditor for Python. Kontroller at programmet reknar rett ved til dømes å skrive funksjonen inn i GeoGebra og rekne ut .
Koding med eigendefinert funksjon
I utrekningane i linje 3 og 4 har vi brukt den matematiske funksjonen O for overskotet som vi kom fram til lenger opp på sida. Innhaldet i linjene er vanskeleg å lese. Tenk om vi kunne ha brukt skrivemåten frå matematikken her! Matematisk skriv vi
for å finne endringa i overskotet ved å endre produksjonen frå 60 einingar til 100. Dette kan kan vi heldigvis gjere i Python òg. Vi kan fjerne linje 3 og 4, og i linje 6 kan vi erstatte O_ny - O_gml med
O(x_ny) - O(x_gml)
For å kunne gjere det må vi lage oss funksjonen O, og korleis gjer vi det i Python? Jo, vi kan definere funksjonen med kodeordet def. Funksjonen O blir med dette ein såkalla eigendefinert funksjon. Det betyr at vi øvst i programmet vårt skriv følgande:
1def O(x): 2 return -0.25*x**2 + 45*x - 500
Desse to kodelinjene blir ikkje utførte i første omgang når vi køyrer programmet fordi dei utgjer ein definisjon. Kodelinjene blir ikkje utførte før vi kallar på den eigendefinerte funksjonen O første gong ved å skrive O(x_ny) i koden nedanfor funksjonsdefinisjonen. Då skjer følgande:
Programmet vil leite opp definisjonen av funksjonen
O.Programmet erstattar
xi definisjonen med innhaldet av variabelenx_ny.Vi får rekna ut overskotet ved denne produksjonsmengda.
Oppgåve – koding
Endre på programmet ved å definere funksjonen O, fjerne variablane O_gml og O_ny og i staden kalle på funksjonen O. Kontroller at programmet fungerer som før.
b) Kva endringar blir det i algoritmen til programmet når vi bruker den eigendefinerte funksjonen O i staden for å rekne ut overskotsendringa direkte?
Spørsmål – vurdering
Kvifor er det lurt å endre programkoden ved å lage ein eigendefinert funksjon?

Pythonkode å lære seg
Aktivitetar
a) Algoritme
Bedrifta ønsker å få testa kor stort overskotet er ved fleire ulike produksjonsmengder: 40, 80, 120, 160, 200 og 240.
Skriv ein algoritme for eit slikt program. Bruk den eigendefinerte funksjonen O frå over.
b) Koding
Skriv ein kode som passar til algoritmen ovanfor.