NENAVADNA FUNKCIJA Z RAČUNALNIKOM

Podobni dokumenti
MAGIČNI KVADRATI DIMENZIJE 4n+2

REKONSTRUKCIJA DREVES – 2. del

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

DOLŽNIK: MARJAN KOLAR - osebni steč aj Opr. št. St 3673/ 2014 OSNOVNI SEZNAM PREIZKUŠENIH TERJATEV prij ava terjatve zap. št. št. prij. matič na števi

POPOLNI KVADER

SENCOMER

Microsoft Word - UP_Lekcija04_2014.docx

Diapozitiv 1

Osnove matematicne analize 2018/19

Matematika II (UNI) Izpit (23. avgust 2011) RE ITVE Naloga 1 (20 to k) Vektorja a = (0, 1, 1) in b = (1, 0, 1) oklepata trikotnik v prostoru. Izra una

SPECIJALNA BOLNICA ZA MEDICINSKU REHABILITACIJU KRAPINSKE TOPLICE Ured za centralno naručivanje Tel. (049)

Matematika II (UN) 1. kolokvij (13. april 2012) RE ITVE Naloga 1 (25 to k) Dana je linearna preslikava s predpisom τ( x) = A x A 1 x, kjer je A

eAsistent izpis

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

VOLILNA ŠTEVILA

Organizacija, letnik 43 Razprave številka 4, julij-avgust 2010 Vpliv pro jekt ne zre lo sti or ga ni za ci je na us pe šnost pri pra ve evrop skih pro

Osnove verjetnosti in statistika

Svet elektronika 195.indd

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Poštnina plačana pri pošti 8275 Škocjan Številka 122 Letnik 14 Kimovec september 2008 Naši koraki Glasilo Občine Škocjan Cesta za 5...

NEPOSREDNO OPAZOVANJE Z DALJNOGLEDOM IN FOTOGRAFIRANJE NAVIDEZNEGA VENERINEGA PREHODA PREK SONCA

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

Microsoft Word - M docx

Delavnica Načrtovanje digitalnih vezij

Datum in kraj

MERE SREDNJE VREDNOSTI

Diapozitiv 1

Microsoft PowerPoint - Java-rekurzija.ppt

glava.dvi

Matematika II (UN) 2. kolokvij (7. junij 2013) RE ITVE Naloga 1 (25 to k) ƒasovna funkcija f je denirana za t [0, 2] in podana s spodnjim grafom. f t

STAVKI _5_

Naloge iz kolokvijev Analize 1 (z rešitvami) E-UNI, GING, TK-UNI FERI dr. Iztok Peterin Maribor 2009 V tej datoteki so zbrane naloge iz kolokvijev za

20.5 zajedno.roz

'Kombinatoricna optimizacija / Lokalna optimizacija'

OBLAČNA KAPA NA HRIBU – Razlaga z računom

PREDMETNIK : S P L O Š N A G I M N A Z I J A

VST: 1. kviz

O PERFEKTNIH (POPOLNIH) KVADRIH

resitve.dvi

Organizacija, letnik 43 Predlogi za prakso številka 6, november-december 2010 Po men in te gri ra nih IS pri na čr to va nju, vo de nju in nad zo ru p

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 31. avgust 2018 Navodila Pazljivo preberite

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

Pravni interes za ustavnosodno presojo zakonov in drugih predpisov

CelotniPraktikum_2011_verZaTisk.pdf

Brownova kovariancna razdalja

2.1 Osnovni pojmi 2 Nim Ga²per Ko²mrlj, Denicija 2.1 P-poloºaj je poloºaj, ki je izgubljen za igralca na potezi. N- poloºaj je poloºaj, ki

Microsoft Word - vaje2_ora.doc

resitve.dvi

PRIPRAVA NA 1. Š. N.: KVADRATNA FUNKCIJA IN KVADRATNA ENAČBA 1. Izračunaj presečišča parabole y=5 x x 8 s koordinatnima osema. R: 2 0, 8, 4,0,,0

Vrste

Microsoft Word - M docx

Strojna oprema

pastoralni tecaj 2008 popravki:pastoralni tecaj 2008.qxd.qxd

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

DODATEK_F8

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

KAKO BRATI IN UPORABITI REZULTATE PRIMERJALNE ANALIZE PRIMERI ZA ODVAJANJE IN ČIŠČENJE ODPADNE VODE ag. Sta ka Cerkve ik, I štitut za jav e služ e

rr03.qxd

Rešene naloge s srednješolskega računalniškega tekmovanja 1990

Microsoft PowerPoint - petek A-sambolicbeganovic [Read-Only] [Compatibility Mode]

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam

Predmetnik dvopredmetnega pedagoškega študijskega programa 2. stopnje Slovenski jezik in književnost Predmetnik je sestavljen iz: obveznih predmetov (

Iskanje ničel funkcij z metodo bisekcije Imejmo podano funkcijo f(x), ki ji želimo poiskati ničle, to je presečišča z x-osjo, kjer je vrednost f(x)=0.

predstavitev fakultete za matematiko 2017 A

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te

Slide 1

Svet elektronika 184m.indd

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

eAsistent izpis

Vektorji - naloge za test Naloga 1 Ali so točke A(1, 2, 3), B(0, 3, 7), C(3, 5, 11) b) A(0, 3, 5), B(1, 2, 2), C(3, 0, 4) kolinearne? Naloga 2 Ali toč

Podatkovni model ER

APS1

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

Microsoft Word - CelotniPraktikum_2011_verZaTisk.doc

TEORIJA ŠTEVIL IN VERJETNOSTNI RAČUN

Matematika 2

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC

Poročilo o opravljenem delu pri praktičnem pouku fizike: MERJENJE S KLJUNASTIM MERILOM Ime in priimek: Mitja Kočevar Razred: 1. f Učitelj: Otmar Uranj

Georitem qxd

DNEVNIK

DELI ZA TOVORNI PROGRAM AKCIJSKE CENE HENGST FILTROV AKCIJA TRAJA OD DO *VKLJUČENI SO FILTRI GORIVA, OLJA, ZRAKA, KABINE IN OSTALI

Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y

KAKO VELIKA SO ŠTEVILA

Microsoft Word - ARRS-MS-FI-06-A-2010.doc

LABORATORIJSKE VAJE IZ FIZIKE

Transkripcija:

List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 26 (1998/1999) Številka 4 Strani 204 208 Martin Juvan: NENAVADNA FUNKCIJA Z RAČUNALNIKOM Ključne besede: matematika, analiza, računalništvo, funkcije, naravna števila, rekurzija. Elektronska verzija: http://www.presek.si/26/1376-juvan.pdf c 1999 Društvo matematikov, fizikov in astronomov Slovenije c 2010 DMFA založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez poprejšnjega dovoljenja založnika ni dovoljeno.

Računalništvo I NENAVADNA FUNKCIJA Z RAČUNALNIKOM V prejšnji številki Preseka (Nenavadna funkc ija, Presek 26 št. 3, str. 166 169) smo spoz nali nekatere zanimive lastnosti funk cije F, ki smo jo definirali rekurzivno z naslednjimi pr edpisi: F(l ) = 1 in F (2n) = F (n), F (2n + 1) = F (n) + F(n + 1) za ti 2': 1. Tokr at si bomo ogledali nekaj ra č una lnišk i h pro gramov, s katerimi si lahko pomagamo pri raziskovanju lastnosti te funk cije. S programi bomo t udi pr ever ili od govor e na nekat era vprašanj a, na kat era smo s t eoret ičnim razrnislekom odgovori li že v prejšnj i številki Preseka. Začnimo s programom v logu, s katerim za dano nar avno število n izrač unamo vr ednost F (n): TO F :n IF :n < 2 [OUTPUT 1] jbaza rekurzije TEST (REMAI NDER :n 2) = O ;Ali j e argument s od? 1FT [OUTPUT F :n/ 2] ; Da. IFF [OUTPUT (F ( :n- l) /2) + (F ( :n+l) /2) ] ; Ne. END V gornjem pro gramu računamo vrednost funkcij e neposredno iz definicije. P ri taki nep osredni uporabi rekurzivnih definicij moramo bit i vedno pr evidni, saj se hitro pr imeri, da večkrat pokl ičemo funk cijo z ist im argument om. To pa pomeni odve čno delo in včasih je t ega dodatnega dela to liko, da pro gram post ane pr ak ti čno neuporaben. Ker je v našem primeru baza rekurzije le F (l ) = 1, je pr i izračunu vrednosti F(n) funkcija F poklican a z argumentom n = 1 natanko F (n) -krat. Že pri izr ačunu F (9) vrednost F(l) računamo npr. 4-krat. Ker pa funk cija F pri majhnih šte vilih ne zavzame velikih vr ednost i, je za majhna šte vila napisani pr ogram še vedno dovolj učinkovit. Z gornjim programom lahko tudi sestavimo tabelo vrednosti funk cije F za števila od 1 do 16. Vrednosti zlagamo v seznam s, tega pa na koncu izpišemo : MAKE "s [] MAKE "i O REPEAT 16 [MAKE "i :i+l MAKE "s LPUT F :i :s] PRINT :s Gornji ukazi tako izpišejo 11 2 1 323 1 4 3 5 2 5 34 1

I Ra čunaln ištvo S program om lahko tudi ugotovimo, koliko je F(1 999). Ukaz print F 1999 izpiše 49, toliko, kolikor smo n ar ač un ali t udi v že omenjenem pr ispevku v pr ejšnji šte vilki Preseka. V nadaljevanju si b omo ogledali, kako lahko vr ednosti funkcije F r ač u namo še pr ecej hitreje. Eden od možnih pr istopov je, da vrednosti, ki jih i zračunamo, sproti shranjujemo, npr. v tabelo. Poglejmo, kako na ta način s programo m v programske m jeziku pascal po i š čemo najve čjo vrednost, ki jo funk cija F zavzame na številih od 1 do 1999. program NenavadnaFunkcija; { Poišče n aj večj o vredn ost funkcije F na šte vi1i1j od 1 do meja. } const meja = 1999; var F : array [1..meja] of integer; { tab ela vrednosti funkcije F } i: integer; max : integer ; b egin { Izra čun am o vrednosti funk cije F od 1 do meja. } F [l ] := 1; for i:=2 t o meja do if odd(i) t hen F[i].- F[i div 2] + F [i div 2 + 1] e lse F [i].- F[i div 2]; { Med vrednostm i p oi ščem o najve čjo. } max := F [I ]; fo r i:= 2 t o meja d o if F [i]>max then max := F[i]; { Izpišem o podatke o n aj večji vredn osti. } write ln('najvecja vrednost funkcije od 1 do ',meja,' je ',max,'.'); write('ta vr ednost je dosezena pri nas lednjih st evilih :') ; for i:=l t o meja d o if F [i]=max t hen write(i:5) ; writ eln ; end. Ko pr ogram poženemo, ta izpiše Na j vecja vr ednost funkcije od 1 do 1999 je 144. Ta vr edno st je dosezena pri naslednj i h stevilih: 1365 1707

Ra čuna lništvo I Seveda so odgovori enaki tist im, ki smo jih s kar precej dolgim in za pletenim razmislekom naš li v prejšnji številki P reseka. Račun anj e zaporednih vr ed nosti funkcije s sprotnim shranjevanjem vred nosti v t abelo je u č i nkov i t post op ek, kad ar želimo i z r a č u n at i vrednosti funkcije pri pr vih nekaj številih. Da dobimo novo vrednost, moram o le preverit i parn ost argumenta in moreb iti sešteti dve že znani vred nost i. Slaba stran postopka pa je, da pot rebuje precej pomnilnika za tabelo vred nosti, kar omejuje njegovo uporabnost. Po lovico tabele lah ko prihranimo, če v njej hr animo le vrednost i funkcije pr i lihih argumentih. Vredn ost pri sodem argument u potem do bimo tako, da argument delimo z 2, dokl er je sod, ko pa postan e lih, vrednost funk cije preb eremo iz t ab ele. Na ta nači n nekoliko p ove čam o čas, ki ga pot rebujemo za i zr ačun naslednje vrednosti, hkrati pa razpolovimo koli čino potrebnega pomnilnika. Kodiranj e programa, ki up orab lja opisano spre membo, vam p r epu š čam za vajo. Kako pa bi i zr ač un a li vrednost funkcije F pri velikih ar gument ih, recimo F (l 789569707) ali pa F (2 863 311531)? S shranjevanjem vrednosti v tabelo si ne moremo pomagati, saj bi potreb ovali res ogromno tabelo, pa t udi i z r ač u n manjših vrednost i bi nam vzel kar nekaj č asa. P a sa j nas pr ejšnj e vrednosti sploh ne zanimajo. Poskusimo lah ko s pro gram om v logu, ki smo ga napisali na z ačet ku prispevka, a po nekaj minu tah obupamo, sa j ni videti, da bi se rač u nanje kaj kmalu končalo. No, res je, da je logo pro gramski jezik, ki se t o l mač i. P rogrami v jezikih, ki se pr evajajo, taka sta npr. pascal in C, so obič aj no bistveno hitrejši. Tako lahko rekurzivn o definicijo funk cije za pišemo kot pr ogr am v pascalu ali C-ju. Poskusite, got ovo vam bo uspelo. Č e vas skrbi predolgotrajno r a č un anj e, lah ko uporabite še kakšen dodatni "trik". V tabeli lah ko pr ipravite vredn osti funkcije za "majhne" argumente, recimo do 10000, in te vnaprej i z r ač u n an e vrednosti uporabite kot (raz širjeno) bazo rekur zije. Poskusit e lahko t udi s shranjevanjem vmesnih rezultatov. Vse vrednost i fun kcije F, ki jih i zračunate (t udi tiste z vmesnih korakov), sk upaj s pripad aj očim argumentom shranjujete v t ab elo. Ko vas zanima vr ednost F (n ), najp rej pogledate po tabeli, ali ste to vrednost morda že i zr ačun a l i. Tako zagotov it e, da za vsak argument vrednost fun kcije r ač un a te le enkrat (seveda pa se lahko zgodi, da vam če z čas po veliko opravljenih r ačun ih v t ab eli zmanjka prost ora). Za konec prispevka pa si bomo ogledali tisto pr avo metodo za raču nanje vrednosti funkcije F pri velikih argumentih. Posto pek bo malce zvit, a preprost, zelo hiter in ne bo zahteval nobenega dod atnega pr ostora. Recimo, da bi rad i i z rač u n ali vrednost F(n). Iskano vred nost bomo zapisali

I Ra ču n aln ištv o kot celoštevilsko linearn o kombinacijo dveh zapo rednih vrednost i funkcije F : F (n) = a - F (m) + b - F (m + 1). Na začetku vzamemo kar m = n, a = 1 in b = O. Nato število m razpolovimo in i z r aču namo nova koeficient a. P ri tem lo č imo dve možnost i. Če je št evilo m sodo, m = 2m', potem velja F (m) = F (m' ) in F (m + 1) = = F (m' ) + F (m' + 1). Tako dob imo F (n) = a -F(m) + b F(m + 1) = (a + b). F (m' ) + b F(m' + 1). Če pa je število m liho, m = 2m' + 1, potem imamo F(m) = F (m' ) + F (m' + 1) in F(m + 1) = F(m' + 1). Tedaj velja F (n ) = a F (m ) + b F (m + 1) = a F (m' ) + (a + b). F (m' + 1). V obe h primerih lahko torej F (n) zapišemo kot kombinacijo vred nost i F (m' ) in F (m' + 1), pr i čeme r nova koeficient a na zelo preprost n ačin i z računam o iz prejšnjih dveh. Zapi šimo pr ogram v programskem jeziku C, ki za i zr ačun vr ednosti funkcije F upor ablja zgoraj opisa ni post op ek. #include <stdio.h> 1* Hiter izračun vr ednost i funkcije F. Deluje hitro tudi za velike vrednosti argumenta. *1 unsigned l ong F(unsigned long); int ma i n (v oi d) { unsigned long n; 1* argument *1 } do { printf ( "Vpisi vr edno st argumenta (O za konec) : II) ; scanf("%lu", &n) ; if (n!= O) printf("f (%lu) = %lu\n\n", n, F(n) ) ; } whi l e (n! = O); return O;

/* Herehrzivm in brez tabele kahma vrebpost F(m). */ unsigned long F[unsignd long m) C unsigned long a= 1, b 0; /* IeParianta zue: isirane wednost = a*f(rn)+b*p(m+i). */ while (m > 1) I if (m % 2 PI 0) a +- b; else b += a; a /= 2; 3 return a + b; /* F(1) = ~ (2) = 1 */ $e rm eno m a l a opci-0. ~~ jezik C p0l;na nepreddm dalga cth &it& (tip'~~iped la&. Ns wbnih - r spmmdjivka tipa obiajno 432 him, tdw da je naj-ja vmhmt, ki ja 1- ahrdmo vmjcz, enaka p2-1 = 4294 98729ti. 'kbo psd take* tip ne pcma. ) - ( dolga eepa (tip loqkt) sicer mawmnejo 3!2 bitw, a najve2zj;a vmdmst, ki jo hldm shraimo v sprtmmdjivb tegs tipa, je 2$l- 1 = 2 247'483 647. Ce bi garnji program napisali v (turbo) pdu, t h z njim ne bi mogli %&mati M.ednoa9ti F(2 863311 531), saj je argument fimkcije pmdik in bi prislo do p ~ ~ t vwdi e. bi sprogradmti b 1.aEwlagje s MaSmin do- Btevili ali pa plw uporabo rdmmiq prervila oprfsvti s twin- in papirjem.