Funktsioon

Mida teha, kui on kakskümmend seitse sõpra ja kõigi nende sünnipäev on tarvis meeles pidada? Ei olegi eriti midagi vaja teha – tuleb lihtsalt lahti võtta arvuti või mõne suhtlusvõrgustiku kalender ja sinna sünnipäevad sisestada. Nii on kuskil sügaval arvuti sisimas iga inimesega vastavusse seatud tema sünnipäeva kuupäev.

Sisuliselt rakendasime äsja ühte funktsiooni! Nimelt üks funktsioon seab iga objektiga vastavusse mingi muu objekti ja täpselt ühe objekti – mitte rohkem ega vähem – ning meie seadsime iga sõbraga vastavusse tema sünnipäeva.

matemaatika49

Samamoodi võiksime mõelda, et kalender ise on funktsioon – seab iga kuupäevaga vastavusse õige nädalapäeva!

Muidugi on palju olukordi, kus sellist reeglit kohe järgida ei saa – näiteks ei saaks me iga kuupäevaga vastavusse seada ainult ühte inimest, kellel sel kuupäeval sünnipäev on, sest samal kuupäeval on ju sünnipäev väga mitmel erineval inimesel. Sel juhul ei ole lahti midagi hullu, aga funktsioon matemaatilise kirjeldusena siia lihtsalt kohe ei sobi. Hiljem näeme, et pisut kavaldades võime ka selles olukorras funktsioone kasutada.

Funktsioon kui masin

Funktsioonist saab mõelda väga mitut moodi. Kirjeldasime juba, kuidas funktsiooni näha teatud kindlat tüüpi nimekirjana. Võibolla lihtsamgi veel on ette kujutada, et funktsioon on teatud tüüpi masin, mis haarab endasse ükshaaval erinevaid objekte, teeb nendega abrakadabra ning seejärel väljastab nad jällegi ükshaaval, mõnikord hoopis tundmatul kujul.

matemaatika50

Tore näide elulisest funktsioonist on õiglaselt tiksuv taksomeeter. Kui alustamistasu on 2,5 eurot ja iga kilomeeter maksab 0,5 eurot, siis taksomeeter on masin, mis korrutab kulunud kilomeetrite arvu 0,5-ga ning liidab pärast 2,5 eurot juurde.

Matemaatika51

Matemaatikakesksem funktsioon on näiteks ruutfunktsioon: sisestate masinasse ühe arvu, seal korrutatakse see arv hookuspookuse abil iseendaga ja väljastatakse tulemus. Sellele masinale võiks peale kirjutada „ruutfunktsioon”, et ta teiste masinatega segamini ei läheks.

Mõni geomeetriline masin võiks näiteks võtta sisendiks kolmnurki ning väljastada nende pindala või ümbermõõdu. Masinale, mis võtab sisendina kolmemõõtmelisi kujundeid, litsub neid suure vasaraga tasandile kokku ning väljastab algse kujundi kahemõõtmelise kujutise, võime anda uhke nime „projektsioon”. See on masin, mis näiteks teeb maakaarte, surudes meie kena ümara maakera kahemõõtmelisele paberile.

matemaatika52

 

 

Range definitsioon ja mõisted

Analoogia funktsiooni ja masina vahel on hea ja intuitiivne, kuid matemaatika tarvis on vaja mõte ka täpsesse vormi seada.

Selle jaoks on meil tarvis lihtsalt täpsustada, milliseid objekte meie masin sisendina võtta saab ning milliseid ta väljastab. Kui nüüd meenub, et üldine objektide kogum matemaatikas on hulk, võibki anda funktsiooni range definitsiooni.

Funktsioon hulgast A hulka B on eeskiri, millega hulgaA iga elemendiga seatakse vastavusse täpselt üks hulga B element.

Tihti tähistatakse funktsioone näiteks tähega ƒ.

Näiteks arvu ruutu võtmine on funktsioon, sest ta seab igale reaalarvude hulga elemendiga r vastavusse ühe teise reaalarvude hulga elemendi r2. Matemaatiliselt kirjutaksime

matemaatika53

Määramispiirkond ja muutumispiirkond

Hulka A nimetatakse ka määramispiirkonnaks, ehk siis funktsioon on määratud kõikide hulga A elementide jaoks. Ta koondab endasse kõikvõimalikud masina sisendobjektid.

Meie definitsioonis ei pea iga hulga B element olema tegelikult masina väljundobjektiks – hulk B moodustab potentsiaalsete väljundobjektide hulga. Näiteks arvuruudud on ju alati mittenegatiivsed, kuid meie definitsioonis täitis ka hulga B rolli reaalarvude hulk. Tihti on lihtsalt raske otsustada, mida täpselt masin ikka väljastada otsustab, isegi kui teame, mis tüüpi need objektid umbkaudu on. Näiteks kui meie funktsioon seab iga maailma majaga vastavusse tema aastase soojakulu, siis on kõik vastused kindlasti mittenegatiivsed reaalarvud, aga raske on ette öelda, milliseid arvväärtusi me tulemustena näha saame.

Siiski suudame vahel täpselt kindlaks määrata kõikvõimalikud objektid, mida masin tõepoolest väljastada oskab. Sellist hulga B alamhulka nimetatakse muutumispiirkonnaks.

matemaatika54

Näiteks kolmnurga pindala funktsiooni määramispiirkonna moodustavad kõikvõimalikud kolmnurgad ja muutumispiirkonna positiivsed reaalarvud.

Sissejuhatuses toodud sünnipäevade funktsiooni määramispiirkonnaks olid kõik sõbrad ning muutumispiirkonnaks kõikvõimalikud kuupäevad.

Samuti mainisime sissejuhatuses, et kuupäevadega inimesi vastavusse seades me funktsiooni ei saaks. See on tõsi, aga seda ainult eeldusel, et tahame oma muutumispiirkonnaks just inimeste hulka – sel juhul tõesti pole funktsioon hästi defineeritud, samal kuupäeval on sünnipäev väga paljudel.

Samas aga, kui meil on tõesti suur kihk funktsiooni kirjeldusena kasutada, siis võiksime iga kuupäevaga vastavusse seada hoopis kõik inimesed, kellel on sel päeval sünnipäev. Teisisõnu muudaksime funktsiooni muutumispiirkonda: enam ei oleks muutumispiirkonna elementideks inimesed, vaid hoopis kõikvõimalikud inimeste alamhulgad. Nii saaksime igati toreda funktsiooni ning süda võib rahul olla.

See kehtib ka üldisemalt: tihti võime muutumispiirkonda laiendades saada mittefunktsioonist igati viisaka funktsiooni.

Funktsioonide omadusi

Nii nagu on eri tüüpi, hoopis isesuguste omadustega masinaid, nii on ka erinevate omadustega funktsioone. Kokku on funktsioone väga palju ning nende kõigiga ei saa ühtmoodi ringi käia. Teatud omaduste põhjal õnnestub funktsioone aga natukene liigitada ja klassidesse seada – nii nagu näiteks soo või vanuse põhjal liigitatakse ka inimesi, et teada, mida neile reklaamida tasuks või milliseid riideid neile müüa sobiks. Ei maksa ehmuda, kui mõnikord on eri tüüpi funktsioonidele antud päris keerulised nimed.

Üksühene vastavus ja pöördfunktsioon

Näiteks osutuvad oluliseks funktsioonid, mis seavad iga määramispiirkonna objektiga vastavusse täpselt ühe muutumispiirkonna objekti. Selliseid funktsioone kutsutakse ka üksühesteks vastavusteks.

matemaatika55

Selline vastupidine vastavusse seadmine kannabki pöördfunktsiooni nime. Võime mõelda, et sümboolselt tähendab see järgmist:

matemaatika56

Lihtne näide on funktsioon, ƒ(r) = 2r mis korrutab iga reaalarvu kahega. Tema pöördfunktsioon peab iga reaalarvu kahega jagama.

Näiteks sobiks ka meie taksomeetri funktsioon, sest juhul, kui ajatasu juures pole, saame makstud summa järgi täpselt arvutada ka läbitud kilomeetrite arvu. Peab muidugi olema hoolikas, et see makstud summa oleks alustustasust suurem ehk asuks taksomeetri funktsiooni muutumispiirkonnas.

Suur osa funktsioone siiski üksühesed vastavused pole. Näiteks funktsioon, mis annab inimese sisestamisel välja tema sünnipäeva, ei ole üksühene vastavus, sest samal kuupäeval on paljudel inimestel sünnipäev. Enamasti ongi üksühesuste takistuseks see, et nad seavad määramispiirkonna eri objektidega vastavusse muutumispiirkonna ühe ja sama objekti.

Nii ei ole ruutfunktsioon üksühene vastavus, kuna ta seab sama arvu vastavusse nii pluss kui ka miinus  ühega. Samuti ei ole üksühene vastavus kolmnurga pindala, kuna mitmel erineval kolmnurgal võib ju olla täpselt sama pindala.

Pöördfunktsioone saame siiski tihti defineerida, kui kitsendame oma vahemikku või teisisõnu teeme mõned valikud.

Näiteks võiksime ruutfunktsiooni pöördfunktsiooni defineerida nii, et valime alati positiivse ruutjuure. Sel juhul vaataksime ruutfunktsiooni justkui ainult positiivsetel reaalarvudel defineeritult. Tema pöördfunktsiooni leidmiseks peaksime justkui x– ja y-telje rollid ära vahetama. Nüüd jookseb funktsiooni argument mööda y-telge ning funktsiooni väärtus mööda x-telje posiitivset osa.

Kaval viis sellest mõtlemiseks on järgmine: pöördfunktsiooni leiame täpselt siis, kui peegeldame graafikut sirgest x = y:

matemaatika57

Pöördfunktsioone kohtame pikemalt näiteks trigonomeetriliste funktsioonide juures, kus just seesama üksühesuse mure välja tuleb [lk 205].

Funktsioonide esitamise viise

Funktsioonide esitamiseks on väga palju erinevaid viise ning olenevalt olukorrast on mugavam kasutada ühte või teist või kolmandat, mõnikord mitut korraga.

Tabeli või nimekirjana

Üks lihtsamaid võimalusi on funktsioone esitada nimekirja või tabelina: anname lihtsalt igale sisendile vastava väljundi. See on üsna kompaktne viis, kui funktsiooni määramispiirkond on tilluke ja samas pole väärtustel suurt  struktuuri. Näitena sobib sissejuhatuses toodud joonis või näiteks ka sagedustabel, kuhu kirjutame, kui mitu päeva selle aasta ilusas juunis olid päikselised, vihmased või vahepealsed.

matemaatika58

Valemina

Teine levinud viis on funktsiooni esitamine valemina. Näiteks on seeläbi defineeritud enamik reaalarvulisi funktsioone. Lihtne näide on ruutfunktsioon:

matemaatika59

Algoritmina

Funktsioone võib esitada ka algoritmiliselt ning eriti osutub see oluliseks just asjaajamisel arvutitega. Järgmisel lehel näitame, kuidas algoritmina kirja panna faktoriaal ehk esimese n arvu korrutis [lk 382].

Sõnaliselt

Vahel on kõige lihtsam funktsioone esitada hoopis verbaalselt. Näiteks võiksime võtta funktsiooni, mis seab iga kolmnurgaga vastavusse tema pindala, või funktsiooni, mis seab iga inimesega vastavusse tema pikkuse.

Graafiliselt

Tihti on kasulik funktsioone esitada graafiliselt. Eelkõige on see seotud reaalarvuliste funktsioonidega, mille määramis- ning muutumispiirkond on reaalarvud.

Sageli võib reaalarvuliste funktsioonide uurimise taandadagi graafiku uurimisele. Ja kuigi malli ja joonlauaga täpseid vastuseid ei saa, siis geomeetrilistest argumentidest ja intuitsioonist on võimalik päris palju kasu lõigata.

Selles raamatus näeme, kuidas geomeetriliselt on võimalik leida ruutvõrrandi lahendivalem [lk 275] või meelde jätta trigonomeetrilisi teisendusi [lk 242] või hoopis lahendada lineaarvõrrandisüsteeme [lk 187]. Ka sellistel keerulistel operatsioonidel nagu tuletise ja integraali võtmine on olemas ilusad geomeetrilised tõlgendused [lk 326].

Siinkohal toome näiteks funktsioonide

matemaatika60

ning

matemaatika61

graafikud ja näeme, et nad lõikuvad täpselt kahes reaalarvulises punktis. Proovige seda algebraliselt näidata!

matemaatika62

Mitmest sisendist olenevaid funktsioone on juba keerulisem graafiliselt kujutada. Osas 7 kasutame aga näiteks joonist, mis näitab, kuidas hoo pealt veepommi viskamisel sõltub optimaalne viskenurk korraga viske- ja hookiirusest [lk 338].

Funktsioon arvutimaailmas

Programmeerijatele on funktsioonid igapäevased tööriistad. Arvutiprogrammid ongi tegelikult erinevate väikeste funktsioonide kogumid, mis teevad täpselt määratud sisenditega täpselt määratud protseduure.

Kõige lihtsamad funktsioonid on vahest tabelarvutuse programmides, millest kuulsaim on Microsoft Excel. Seal võib mõnda kasti kirjutada „=A1+B1″, mis ütleb arvutile, et selle kasti väärtuseks näidatakse kastide A1 ja B1 summat. Tegemist on funktsiooniga, mille sisendiks on kaks arvu ja väljundiks üks.

Toome ka ühe näite funktsioonist, mis arvutab faktoriaali n! [lk 382]. Tuletame meelde, et faktoriaal on lihtsalt järgnev korrutis

matemaatika63

Arvuti võiks seda programmeerimiskeele Python abil leidma panna umbes nii:

matemaatika64

Jooksutades seda funktsiooni käsuga factorial(5), saaksime vastuseks järgmise tulemuse: 120.

Arvutite keelest arusaamiseks ning neile käskluste jagamiseks peab teadma-tundma sealset sõnavara.

Antud juhul defineerime, mida teeb funktsioon nimegafactorial ning seejärel anname talle käsu jooksutada seda funktsiooni sisendiga 5. Ideeliselt peaks see funktsioon seejärel siis  lihtsalt korrutama kokku arvud 5, 4, 3, 2, 1.

Selle funktsiooni kirjapanek on järgmine.

Funktsiooni esimesel real antakse muutujale ƒ väärtus 1. Siia hakkamegi salvestama faktoriaali väärtust. Järgmise käsuga palume arvutil jooksutada järgmist kahte rida nii kaua, kuni muutuja n väärtus on suurem 0-st.

Esmalt korrutatakse ƒ läbi muutuja n väärtusega.

Teisalt vähendatakse muutuja n väärtust ühe võrra.

See tähendab, et korrutame ƒ-i läbi alguses n enda väärtusega, siis – 1-ga, siis – 2-ga täpselt nii kaua, kuni oleme läbi korrutanud ka ühega – väiksemaks me muutujal n tänu kolmandale koodireale enam minna ei lase.

Lõpuks ütleb viimane rida lihtsalt, et funktsioon peaks leitud väärtuse küsijale ka väljastama.

Nii mõnigi kord tulevad programmeerimiskeeltes esile ka funktsioonid, mis ei annagi väljundit, vaid lihtsalt teevad mõned kerged muudatused. Neist oleks võibolla segaduse vältimiseks siis lihtsam mõelda kui „protseduuridest“.

 

Arvhulgad