Jos käytät MathCheckiä ensimmäistä kertaa, niin tee ensin tehtävä Yleistä MathCheckistä. Jos et muualta löydä miten jokin symboli kirjoitetaan, niin katso MathCheck Brief Instructions.
Olkoon `b > 1`. Positiivisen luvun `a` `b`-kantainen logaritmi eli `log_b a` on se luku `x`, jolle `b^x = a`. On olemassa täsmälleen yksi tällainen `x`. (Jätämme todistamatta, että niitä on täsmälleen yksi, koska todistus veisi liian kauas pääaiheesta.) Siis
`b^(log_b a) = a` kun `a > 0` ja `b > 1`
Kun `a <= 0`, `b = 1` tai `b <= 0`, logaritmia ei ole määritelty. Logaritmi on määritelty kun `0 <``b < 1` ja `a > 0`, mutta sitä tarvitaan harvoin ja sen kanssa asia muuttuu monimutkaisemmaksi. Siksi tässä tehtävässä käsitellään vain tapausta, jossa kantaluku `b > 1`.
Tarvitsemme jatkossa muutamaan kertaan seuraavaa tietoa:
Jos `b > 0` ja `c` on mikä tahansa reaaliluku, niin `b^c > 0`.
Sijoittamalla sanalliseen määritelmään `a`:n paikalle `b^c` saadaan, että `log_b b^c` on se luku `x`, jolle `b^x = b^c`. Koska edellä luvattiin, että tällaisia lukuja on vain yksi, pätee `x = c`. Muistathan vaatimuksen `a > 0`! Nyt se tarkoittaa, että pitää päteä `b^c > 0`. Kun `b > 1` niin `b > 0`, joten se pätee äsken sinisellä todetun nojalla.
Saimme tärkeän kaavan:
`log_b b^c = c` kun `b > 1`
Paljonko ovat seuraavat logaritmit?
Olkoot `a > 0` ja `b > 1`. Potenssilaskun sääntöjen mukaan `x^(-y) =``1/(x^y)` kun `x > 0`. Miksi voimme sijoittaa `x`:n paikalle `b`:n ja `y`:n paikalle `log_b a`:n? Mieti ensin itse ja sitten katso vastaus tästäKoska oletimme `b > 1`, pätee `b > 0`. Siksi `x > 0` toteutuu sijoituksessa. Luvulta `y` ei vaadita mitään, joten sen paikalle saa sijoittaa mitä tahansa määriteltyä. Alussa teimme oletuksen, joka takaa, että `log_b a` on määritelty..
Niin sijoittamalla saadaan `b^(-log_b a) =``1/(b^(log_b a))`. Edellä olleen kaavan mukaan `b^(log_b a) =``a`. Näistä yhdessä saadaan `b^(-log_b a) =``1/a`. Määritelmän mukaan `log_b(1/a)` on se luku `x`, jolle `b^x =``1/a`. Aivan äsken huomasimme, että `-log_b a` täyttää tämän ehdon. Olemme osoittaneet seuraavan tärkeän kaavan:
`log_b (1/a) = -log_b a` kun `a > 0` ja `b > 1`
Paljonko ovat seuraavat logaritmit?
Ihmisille helpoimpia ovat 10-kantaiset logaritmit. Logaritmien merkintätavoissa esiintyy vaihtelua. MathCheckissä `x`:n 10-kantainen logaritmi merkitään log x. Luvun 100…0 kymmenkantainen logaritmi on nollien määrä luvussa. Luvun 0.00…01 kymmenkantainen logaritmi on nollien määrän vastaluku (mukaan lukien desimaalipisteen edellä oleva nolla).
10-kantaiset (ja muutkin) logaritmit muuttavat kertolaskun yhteenlaskuksi tällä tavalla:
`log xy = log x + log y` , kun `x > 0` ja `y > 0`
Tämä kaava, johon edellä jo viitattiinkin, on ehkä tärkein historiallinen syy logaritmien käyttöön otolle:
`log_b xy = log_b x + log_b y` kun `x > 0`, `y > 0` ja `b > 1`
Sen avulla voitiin muuttaa työläät kertolaskut vähemmän työläiksi yhteenlaskuiksi ja taulukoiden katsomisiksi. (Kerrottavien logaritmit etsittiin taulukosta ja laskettiin yhteen. Lopuksi katsottiin taulukosta, minkä luvun logaritmi saatu tulos on.)
Johdamme kaavan tapauksessa `b = 10`. (MathCheck ei osaa käsitellä yleistä kantalukua.)
Todistimme juuri, että `10^(log x y) =``xy =``10^(log x + log y)`. Jos yhtäsuurille tehdään sama asia, niin saadaan yhtäsuuret lopputulokset. Ottamalla tämän kaavan molemmilta reunoilta 10-kantainen logaritmi saadaan
`log 10^(log x y) = log 10^(log x + log y)`
Miksi äskeinen logaritmin otto on sallittu? VastausKaukana edellä oleva sininen lupaus kertoo, että `10^(log x y)` ja `10^(log x + log y)` ovat positiivisia.
Sama päättely toimii muillekin ykköstä suuremmille kantaluvuille kuin 10. Siksi, jos `x > 0`, `y > 0` ja `b > 1`, niin `log_b x y =``log_b x + log_b y`.
Seuraava tärkeä kaava on
`log_b x^y = y log_b x` kun `x > 0` ja `b > 1`
Kun `y` on positiivinen kokonaisluku, tämä saadaan helposti seuraavasti:
`log_b x^n`
`=``log_b x x cdots x`
`=``log_b x + log_b x + ... + log_b x`
`=``n log_b x` ,
missä kumpikin toisto tapahtuu `n` kertaa. Tämä päättely kannattaa muistaa, sillä sen avulla kaava on helppo palauttaa mieleen. Tämä päättely ei kuitenkaan ole yleisessä tapauksessa pätevä.
Siksi — voi ei! — johdamme kaavan yleisessä tapauksessa `x > 0` ja `y` on mikä tahansa reaaliluku, mutta jälleen vain 10-kantaiselle logaritmille `log` (siis `b=10`). Muistathan, että tällä kurssilla tavoitteena on oppia päättelytaitoa. Ota vaikka kuppi kahvia tai lasi appelsiinimehua ennen kuin jatkat. Jos kerta kaikkiaan tuntuu mahdottomalta, niin hyppää seuraavaan väliotsikkoon.
Todistamme ensin, että `10^(log x^y) =``10^(y log x)`.
Tämäkin päättely toimii muillekin ykköstä suuremmille kantaluvuille `b` kuin 10.
Toinen hyvin paljon käytetty logaritmi on luonnollinen logaritmi. Sitä merkitään monin paikoin (MathCheck mukaan lukien) ln, mutta valitettavasti mm. monet ohjelmointikielet käyttävät sille merkintää log, joka meille tarkoittaa 10-kantaista. Sekaannuksen vaara on siis ilmeinen ja on parasta aina tarkastaa, mitä `log` kulloinkin tarkoittaa, eikä luottaa siihen, että se on aina 10-kantainen.
Luonnollisen logaritmin kantalukua merkitään `e`. Siis `ln x = log_e x`. Luvun `e` arvo on likimain 2.71828. Se ei ole esitettävissä murtolukuna. Syy näin omituisen kantaluvun käyttöön on siinä, että kun käytetään `b`-kantaista logaritmia, monessa kaavassa esiintyy `ln b`. Esimerkiksi funktion `log_b x` derivaatta on `1/((ln b)x)`. Siis `ln` ikään kuin tunkeutuu kaavoihin väkisin.
Luvulla `e` on myös muita hauskoja ominaisuuksia. Jos intoa riittää, voit tutustua niihin Wikipediasta tai oppikirjoista, tai kysellä kavereilta.
Tietojenkäsittelyssä käytetään paljon kantalukua 2. Jos esimerkiksi tarvitsee suunnitella esitys `n` eri vaihtoehdolle, niin tarvitaan `|~ log_2 n ~|` bittiä. Koska viikonpäiviä maanantai, tiistai, … on seitsemän, viikonpäivän koodaamiseksi tarvitaan `|~ log_2 7 ~| = 3` bittiä. Moni algoritmi toimii jakamalla käsiteltävän datan kahdeksi suunnilleen yhtäsuureksi osaksi. Myös osat puolitetaan jne., kunnes käsiteltävänä on vain yksi tietoalkio. Siihen tarvitaan suunnilleen `log_2 n` puolitusta.
Kaksikantaista logaritmia merkitään MathCheckissä log2.
Tietoliikenteessä ja datan pakkaamisessa hyödynnetään sitä, että jotkin merkit esiintyvät harvemmin kuin toiset. Esimerkiksi z on harvinainen suomenkielisessä tekstissä. Claude Shannon osoitti, että tällöin merkin esittämiseen tarvitaan keskimäärin `-log_2 p` bittiä, missä `p` on merkin todennäköisyys eli osuus datasta. Esimerkiksi merkin ä todennäköisyys sanassa keskimäärä on `3/10`, koska se esiintyy kolmesti ja sanassa on kaikkiaan 10 merkkiä.
Algoritmien suoritusajan analyysissä ei yleensä olla kiinnostuneita tarkoista luvuista, koska lausekkeen yleinen muoto vaikuttaa yleensä paljon enemmän kuin tarkat luvut ja koska tarkat luvut ovat usein mahdottomia selvittää (ne riippuvat mm. siitä, mitä tietokonetta käytetään ja onko se virransäästötilassa). Siksi tapana on jättää kaavoissa esiintyvät vakiot pois.
Edellä nähtiin, että esimerkiksi 2-kantaisesta logaritmista päästään luonnolliseen logaritmiin kertomalla luvulla `ln 2`. Myös `ln 2` on pois jätettävä vakio. Tämä tarkoittaa, että algoritmien suoritusajan analyysissä ei yleensä ole mitään väliä sillä, mitä kantalukua käytetään (kunhan se on suurempi kuin 1).
Tämä riittäköön tällä kertaa.