29.07.2013 Views

Konkrete funktioner

Konkrete funktioner

Konkrete funktioner

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Konkrete</strong> <strong>funktioner</strong><br />

Potenser<br />

Som udgangspunkt er brugen af potenser blot en forkortelse for at gange et<br />

tal med sig selv et antal gange. Hvis a ∈Rskriver vi<br />

a 2<br />

a 3<br />

a 4<br />

for a · a<br />

for a · a · a<br />

for a · a · a · a<br />

.<br />

Et udtryk p˚a formena n kaldes en potens med grundtal a og eksponent n. Vi<br />

vil kun betragte potenser hvor grundtallet er positivt, alts˚a a>0.<br />

Eksempel 1 I datalogi dukker potenser p˚a formen2 n ustandselig op. De<br />

opst˚ar, fordi computere (og dataloger) ofte st˚ar med to valgmuligheder, s˚a<br />

som “sand eller falsk” og “0 eller 1”. Hvis man skal træffe n s˚adanne valg i<br />

træk, bliver det samlede antal valgmuligheder netop 2 n .<br />

En computers arbejdslager best˚ar af en lang række bits som kan have en<br />

af de to værdier 0 og 1 (bit er en forkortelse for BInary digiT). Ved at bruge<br />

flere bits kan man repræsentere mange forskellige værdier:<br />

Bits Forskellige værdier<br />

1 2 1 =2<br />

2 2 2 =4<br />

3 2 3 =8<br />

4 2 4 =16<br />

5 2 5 =32<br />

6 2 6 =64<br />

7 2 7 = 128<br />

8 2 8 = 256<br />

16 2 16 = 65.536<br />

32 2 32 = 4.294.967.296<br />

64 2 64 = 18.446.744.073.709.551.614<br />

Det er almindeligt at bruge 8, 16, 32 eller 64 bits til at repræsentere et heltal.<br />

Af historiske ˚arsager bruger Java navnene byte, short, int og long om disse<br />

repræsentationer. Jo større tal man har brug for, jo flere bits m˚a man afsætte.<br />

Et lønningssystem kan formentlig nøjes med en int, mens finansloven har<br />

brug for en long.<br />

1<br />

(1)


Vi har defineret potensen a n som “det tal man f˚ar ved at gange a med<br />

sig selv n gange”. Det er derfor oplagt at vi har regnereglerne<br />

a m+n = a m · a n<br />

a m·n =(a m ) n<br />

Vi f˚ar brug for at udvide definitionen af potenser til at dække eksponenter<br />

der ikke er positive heltal. Fidusen er at gøre det s˚aledes at de to regneregler<br />

ovenfor stadig gælder (jf. udvidelsen af mængder til multimængder).<br />

Lad os betragte potenser p˚a formena 0 først. Ifølge (2) skal der for alle<br />

n ∈N gælde<br />

a n = a 0+n = a 0 · a n . (4)<br />

Men s˚a era 0 nødt til at være 1. Og det er s˚a vores definition.<br />

Tilsvarende bliver vi tvunget til at definere potenser med negative eksponenter<br />

p˚a enbestemtm˚ade. Ifølge (2) har vi<br />

(2)<br />

(3)<br />

1=a 0 = a n−n = a −n+n = a −n · a n . (5)<br />

S˚a a −n er nødt til at være 1<br />

a n . Og det er s˚a vores definition. Potenser p˚a<br />

formen a m−n er ifølge (2) nu givet ved<br />

a m−n = a −n+m = a −n · a m = 1<br />

an · am = am<br />

. (6)<br />

an Indtil nu har vores eksponenter alle været heltal. Lad n være forskellig<br />

fra 0. Ved brug af (3) f˚ar vi<br />

a = a 1 = a n<br />

n = a 1<br />

n ·n =(a 1<br />

n ) n . (7)<br />

Alts˚a m˚a vi definere a 1<br />

n som det tal, der ganget med sig selv n gange giver<br />

a. Dette tal kaldes den n’te rod af a og skrives n√ a. I tilfældes n =2skrives<br />

blot √ a og dette tal kaldes kvadratroden af a. Tilsvarende kaldes 3√ a for<br />

kubikroden af a. Vi har alts˚a pr. definition at ( n√ a) n = a. Potenserp˚aformen<br />

a m<br />

n er ifølge (3) nu givet ved<br />

a m<br />

1<br />

m·<br />

n = a n =(a m ) 1<br />

n = n√ am . (8)<br />

Vi har hermed defineret potenser a q for alle rationale tal q, dvs.foralle<br />

brøker. En udvidelse til alle relle tal, alts˚a potenserp˚aformena r hvor r ∈R,<br />

er ogs˚a mulig. Lad os betragte a π .Vivedatπ kan skrives som en uendelig<br />

decimalbrøk<br />

π =3,1415926... (9)<br />

2


Vi kan derfor tilnærme π med brøkerne<br />

3<br />

1<br />

, 31<br />

10<br />

, 314<br />

100<br />

, 3.141<br />

1.000<br />

, 31.415<br />

10.000<br />

– og vi definerer a π som grænseværdien af følgen<br />

314.159<br />

, ,... (10)<br />

100.000<br />

a 3<br />

1 ,a 31<br />

10 ,a 314<br />

100 ,a 3.141<br />

1.000 ,a 31.415<br />

10.000 ,a 314.159<br />

100.000 ,... (11)<br />

Detaljerne i denne definition falder uden for dette kursus, men kan findes i<br />

enhver bog om kalkulus. Vi slutter med en opsummering:<br />

Definition af potenser<br />

Lad a ∈Rvære positiv. Vi definerer:<br />

a 0 =1<br />

a n = a · a ···a<br />

<br />

n faktorer<br />

a −n = 1<br />

a n<br />

for n ∈N og n>0<br />

for n ∈N og n>0<br />

a m<br />

n = n√ a m for m, n ∈N og n>0<br />

a r = grænseværdien af a q<br />

n˚ar q g˚ar mod r<br />

gennem rationale tal<br />

for r ∈R<br />

Denne definition kan bruges til at bevise regneregler for potenser.<br />

Regneregler for potenser<br />

Lad a, b ∈Rvære positive og r, s ∈R.S˚agælder:<br />

a 0 =1 a −r = 1<br />

a r<br />

a r+s = a r · a s<br />

(a · b) r = a r · b r<br />

a r−s = ar<br />

a s<br />

a r·s =(a r ) s<br />

( a<br />

b )r = ar<br />

br Opgave 1 Lad m, n ∈N. Vis ud fra definitionen at am−n = am<br />

.<br />

an 3


Potens<strong>funktioner</strong><br />

Der er to oplagte m˚ader hvorp˚a man kan lave sig <strong>funktioner</strong> ud af potenser,<br />

idet man enten holder grundtallet eller eksponenten fast og lader den anden<br />

variere. Ved at fastholde eksponenten f˚ar vi potens<strong>funktioner</strong> som alle har<br />

formen<br />

x r hvor r er et fast, reelt tal. (12)<br />

Da vi her kun betragter positive grundtal er alle vores potens<strong>funktioner</strong> <strong>funktioner</strong><br />

p˚a R + , mængden af alle positive, reelle tal. Dvs. x r : R + →R + .<br />

Figur 1 viser grafen for nogle potens<strong>funktioner</strong>.<br />

Opgave 2 Lad xr være en potensfunktion med r = 0.Visatxrer en bijektion<br />

og har invers x 1<br />

r . Hvorfor er potensfunktionen x0 ikke en bijektion?<br />

Hvorfor har den ingen invers funktion?<br />

Bemærk at da x r og x 1<br />

r = r√ x med r = 0 er inverse <strong>funktioner</strong> har vi to<br />

identiteter som kan bruges til at simplificere udtryk:<br />

r√ x r = x og ( r √ x) r = x for alle x ∈R + og r ∈Rmed r = 0. (13)<br />

Opgave 3 Simplificér udtrykket x9<br />

7√ x 56 .<br />

Eksponential<strong>funktioner</strong> og logaritmer<br />

Ved at fastholde grundtallet i stedet for eksponenten f˚ar vi eksponential<strong>funktioner</strong><br />

som alle har formen<br />

a x hvor a er et fast, reelt tal, større end 0. (14)<br />

Da a r > 0 for alle r ∈Rhar vi a x : R→R + og enhver s˚adan eksponentialfunktion<br />

med a = 1 er en bijektion.<br />

Opgave 4 Hvorfor er 1 x : R→R + ikke en bijektion? Hvorfor har den ingen<br />

invers funktion?<br />

De inverse <strong>funktioner</strong> til eksponential<strong>funktioner</strong>ne kaldes logaritmer. Videfinerer<br />

simpelthen for a = 1:<br />

– eller med andre ord:<br />

log a x =dettaly ∈Rsom opfylder a y = x (15)<br />

log a x = y ⇐⇒ a y = x. (16)<br />

4


Funktionen loga : R + →Rkaldes logaritmen med grundtal a. Viharigento<br />

identiteter som kan bruges til at simplificere udtryk:<br />

loga(a x )=x for alle x ∈Rog<br />

a loga x = x for alle x ∈R + (17)<br />

.<br />

Vi kan desuden vise følgende regneregler for logaritmer:<br />

Regneregler for logaritmer<br />

Lad a, b ∈Rvære positive og forskellige fra 1 og lad r, s ∈R.S˚agælder:<br />

log a 1=0 log a( 1<br />

r )=− log a r log a( r<br />

s )=log a r − log a s<br />

log a(r · s) =log a r +log a s log a(r s )=s · log a r<br />

log a x = log b x<br />

log b a<br />

Opgave 5 Simplificér følgende udtryk:<br />

log5 125 2 log4 8<br />

log 6 9+log 6 4 (log 4 16) · (log 4 2)<br />

(log a b) · (log b a) log 2(2 n ) 2 log 2 n<br />

4 log 2 n<br />

Opgave 6 Bevis regnereglerne ovenfor ved at bruge regnereglerne for potenser<br />

og (16).<br />

Figur 2 viser grafen for nogle eksponential<strong>funktioner</strong> og logaritmer<br />

Fakultet<br />

Fakultet er en funktion n! :N→N. Den er defineret p˚a denaturligetalsom<br />

følger:<br />

0! = 1 og n! =1· 2 ···n for n ∈N med n>0. (18)<br />

Fakultet optræder ofte i kombinatorik, idet n! er antallet af mulige rækkefølger<br />

af n forskellige objekter. F.eks. findes der 52! forskellige m˚ader at<br />

ordne de 52 spillekort p˚a. Det første kort kan vælges p˚a 52 forskellige m˚ader.<br />

Det næste p˚a 51 forskellige m˚ader, derefter er der 50 muligheder osv. Ved det<br />

næstsidste kort har man 2 muligheder, mens det sidste kort kun kan vælges<br />

p˚a1m˚ade. Dette giver i alt 52 · 51 · 50 ···2 · 1 = 52! muligheder.<br />

Fakultet vokser temmelig hurtigt. F.eks. er 52! omtrent 8,1 · 1067 .Med<br />

andre ord m˚a det betragtes som meget usandsynligt at komme til at blande<br />

et sæt spillekort p˚a samme m˚ade to gange i ens liv (hvis ellers man blander<br />

ordentligt).<br />

5


y<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

0 1 2 3 4 5<br />

x<br />

6 7 8 9 10<br />

Figur 1: Nogle potens<strong>funktioner</strong>. I rækkefølge fra hurtigst til langsomst voksende:<br />

x3 ,x2 ,x1 = x, x 1<br />

2 = √ x, x 1<br />

3 = 3√ x. Den aftagende funktion (med<br />

punkteret linie) er x−1 = 1<br />

x .<br />

6


y<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10<br />

x<br />

Figur 2: Nogle eksponential<strong>funktioner</strong> og logaritmer. I rækkefølge fra hurtigst<br />

til langsomst voksende: 3x , 2x , log2 x, log3 x. De aftagende <strong>funktioner</strong> (med<br />

punkteret linie) er 1 x 1 = 2 2x og log 1 x.<br />

2<br />

7


Anvendelse i datalogi<br />

I datalogi anvendes logaritmer, potens<strong>funktioner</strong>, eksponential<strong>funktioner</strong> og<br />

fakultet især til analyse af algoritmers ressourceforbrug som funktion af inputtets<br />

størrelse. Ressourcer kan være tid, plads i arbejdslageret, b˚andbredde<br />

p˚a nettet eller antallet af gange algoritmen bruger harddisken.<br />

Generelt betragtes kun voksende <strong>funktioner</strong> – programmer arbejder sjældent<br />

hurtigere jo mere input de f˚ar! Da inputtets størrelse m˚ales i antallet af<br />

tegn der skal bruges til at skrive inputtet ned, er et programs ressourceforbrug<br />

formelt en voksende funktion fra N til R + . Her gælder<br />

Enhver logaritme vokser langsommere end enhver potensfunktion<br />

som vokser langsommere end enhver eksponentialfunktion. Fakultet<br />

vokser hurtigere end alle de øvrige <strong>funktioner</strong>.<br />

Formelt gælder for ethvert positivt r ∈R + og ethvert reelt tal a>1:<br />

∃n0 ∈N.∀n ∈N.n>n0 =⇒ log a n ≤ n r<br />

∃n0 ∈N.∀n ∈N.n>n0 =⇒ n r ≤ a n<br />

(19)<br />

(20)<br />

∃n0 ∈N.∀n ∈N.n>n0 =⇒ a n ≤ n! . (21)<br />

Dvs. hvis blot inputstørrelsen n er stor nok, dvs. større end n0, s˚aerlogan mindre end nr . Tilsvarende er nr mindre end an som er mindre end n! for<br />

stort nok n.<br />

Bemærk at dette gælder uanset a og r. F.eks. er en algoritme, hvis<br />

udførelsestid er givet ved n10.000 hurtigere “p˚a distancen” end en tilsvarende<br />

algoritme, hvis udførelsestid er givet ved 1,0001n . Her skal inputstørrelsen n<br />

dog være ret stor for at den første er at foretrække frem for den sidste.<br />

Eksempel 2 Vi vil undersøge for hvor stort input en algoritme med udførelsestid<br />

n3 er hurtigere end en algoritme, hvis udførelsestid er 1,5n :<br />

n n31,5n n n3 1,5n 1 1 1,513 2.197 194,6<br />

2 8 2,314 2.744 291,9<br />

3 27 3,415 3.375 437,9<br />

4 64 5,116 4.096 656,8<br />

5 125 7,6 17 4.913 985,3<br />

6 216 11,4 18 5.832 1.477,9<br />

7 343 17,1 19 6.859 2.216,8<br />

8 512 25,6 20 8.000 3.325,3<br />

9 729 38,4 21 9.261 4.987,9<br />

10 1.000 57,7 22 10.648 7.481,8<br />

11 1.331 86,5 23 12.167 11.222,7<br />

12 1.728 129,7 24 13.824 16.384,1<br />

8


Det sker s˚aledes for n>23. Betragt en moderne 3GHz pc som alts˚a kan<br />

foretage 3 milliarder simple beregninger pr. sekund. Hvis n 3 og 1,5 n angiver<br />

antallet af s˚adanne simple beregninger vil et input af størrelsen 500 tage den<br />

kubiske algoritme ca. 4 hundrededele af et sekund, mens den eksponentielle<br />

algoritme skal bruge mindst 3,7·10 78 sekunder – et astronomisk tal, i omegnen<br />

af antallet af elementar-partikler i det synlige univers!<br />

Eksempel 3 Logaritmiske udførelsestider opst˚ar typisk i situationer, hvor<br />

en algoritme i hvert trin kan se bort fra halvdelen af input. Da et naturligt<br />

tal n ∈N kun kan halveres ca. log 2 n gange før vi n˚ar ned p˚a 0 eller 1, vil<br />

s˚adanne algoritmer have udførelsestid ca. log 2 n.<br />

Et klassisk eksempel er “binær søgning” hvor et bestemt element søges<br />

i en sorteret liste – elementet kan være et bestemt navn og listen kan være<br />

en telefonbog. Hvis vi starter med at kigge midt i listen, vil vi (1) finde det<br />

søgte element, (2) finde et element der er for stort, eller (3) finde et element<br />

der er for lille. I de to sidste tilfælde kan vi se bort fra hhv. den øvre og den<br />

nedre del af listen, hvorefter vi kan fortsætte søgningen p˚a samme m˚ade med<br />

det midterste element i den resterende liste.<br />

Da logaritmer med grundtal 2 optræder s˚a ofte i datalogi, forkorter man<br />

tit log 2 n til log n. I andre sammenhænge (matematik, fysik, teknik, p˚a de<br />

fleste lommeregnere) betyder log n derimod log 10 n, s˚apasp˚a!<br />

Eksempel 4 Eksponentielle udførelsestider optræder typisk i situationer,<br />

hvor en algoritme er nødt til at undersøge alle valgmuligheder. Et klassisk<br />

eksempel er en algoritme, der skal afgøre om et givent udsagnslogisk udtryk<br />

er en tautologi. Her kender vi essentielt set ikke nogen bedre algoritme end<br />

at opstille sandhedstabellen for udsagnet (se Martin, afsnit 1.2.1). Hvis udtrykket<br />

har n booleske variabler, har tabellen 2 n rækker, en for hvert muligt<br />

valg af sandhedsværdi til hver variabel.<br />

Eksempel 5 Udførelsestider p˚a formen n! optræder typisk i situationer,<br />

hvor en algoritme er nødt til at undersøge alle mulige rækkefølger af n elementer.<br />

Et klassisk eksempel er en algoritme, der skal afgøre om en givent<br />

vejkort med n byer har en “Hamiltonvej”, dvs. en vej, der besøger samtlige<br />

n byer netop én gang. Igen kender vi ingen bedre algoritme end essentielt set<br />

at prøve alle mulige rækkefølger af byer fra en ende af. Og der er n! s˚adanne<br />

rækkefølger.<br />

9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!