Sisältö Eukleideen algoritmi Jakoyhtälö positiivisille kokonaisluvuille 2 2 Eukleideen algoritmi 2 3 Laajennettu Eukleideen algoritmi 3 2 Ketjumurtoluvut 4 2 Irrationaalilukujen ketjumurtolukukehitelmä 5 22 Ketjumurtolukukehitelmän suppeneminen 7 3 Sovellutus 8 Viitteet 9 Tämän kirjoitelman tarkoituksena on tutustuttaa lukija ketjumurtolukujen kauniiseen teoriaan Samalla se toimii Eukleideen algoritmin sovelluksena approksimaatioteoriaan Lisäksi kirjoitelma toimii LuK-aineiden ja pro gradu -tutkielmien kirjoittamisen TEXnisenä oppaana Eukleideen algoritmi Eukleideen algoritmi on kokonaislukujen jakoyhtälöä käyttävä menetelmä, jolla voidaan määrätä kahden kokonaisluvun a, b Z suurin yhteinen tekijä d = syt(a, b) Kerrattakoon määritelmiä ja eräitä merkintöjä Määritelmä Olkoot a, b, c ja d Z Sanotaan, että c jakaa a:n, jos on olemassa k Z siten, että a = kc Merkitään c a Luku c on lukujen a ja b yhteinen tekijä, jos c a ja c b Luku d on lukujen a ja b suurin yhteinen tekijä, jos d on a:n ja b:n yhteinen tekijä ja lisäksi pätee: jos c a ja c b, niin c d Huomautus 2 Lukujen jaollisuus on järjestysrelaatio joukossa N \ {0}: c a, jos c a Tällöin esimerkiksi 3 6, mutta 4 6 ja 6 4, ts lukuja 4 ja 6 ei voi tässä relaatiossa verrata keskenään Muistettakoon, että järjestysrelaatio (tarkemmin osittainen järjestys) joukossa X on on binäärinen relaatio, jolle on voimassa (i) x x kaikille x X (reeksiivisyys) (ii) jos x y ja y x, niin x = y (antisymmetrisyys) (iii) jos x y ja y z, niin x z (transitiivisuus) Järjestys on täydellinen, jos jokaiselle parille x, y X on voimassa x y tai y x (vertailtavuus) Tässä jaollisuuden avulla määritelty järjestysrelaatio on siis osittainen, mutta ei täydellinen järjestys joukossa Z Kokonaislukujen tavallinen järjestysrelaatio määritellään seuraavasti: x y, jos on olemassa z N siten, että y = x + z Tämä on täydellinen järjestys Huomattakoon, että c a = c a (mutta käänteinen implikaatio ei siis päde) Suurin yhteinen tekijä on siis jaollisuusjärjestyksen mielessä yhteisistä tekijöistä suurin Tätä dokumenttia, Ketjumurtoluvuistapdf, saa levittää vain yhdessä lähdekoodinsa Ketjumurtoluvuistatex, dokumentin KetjumurtoluvuistaKansipdf, sen lähdekoodin KetjumurtoluvuistaKansitex ja dokumentin KMLohjepdf kanssa Tarkemmat tiedot ja enemmän dokumentaatiota löytyy osoitteesta http://wwwmathjyufi/ lehtonen/texopas/
2 Jakoyhtälö positiivisille kokonaisluvuille Olkoot r 0, r N, r 0 Tällöin on olemassa yksikäsitteiset luvut q ja r 2 N siten, että r 0 = q r + r 2 ja 0 r 2 < r Luku q on lukujen r 0 ja r kokonaislukuosamäärä ja r 2 (kokonaisluku-)jakojäännös Otetaan käyttöön seuraavat funktiot: Olkoot x, y R, y 0 Asetetaan (ks [3, Ÿ24] tai [2, Ÿ3]) x := suurin kokonaisluku n siten, että n x (x:n lattia); x := pienin kokonaisluku n siten, että n x (x:n katto); x mod y := x y x/y ; x mod 0 := x Helposti nähdään, että kun y > 0, on 0 x mod y < y Jakoyhtälön osamäärä ja jakojäännös voidaan nyt ilmaista q = r 0 /r, kun r 0, ja r 2 = r 0 q r = r 0 r r 0 /r = r 0 mod r 2 Eukleideen algoritmi Kun jakoyhtälöä toistetaan, löydetään luvut l, q i, r i N, i l, siten, että 0 r i < r i, kun i l, ja r 0 = q r + r 2, () r = q 2 r 2 + r 3, r l 2 = q l r l + r l, r l = q l r l + 0 Lause 3 Eukleideen algoritmilla saatu luku r l, eli viimeinen nollasta eroava jakojäännös, on lukujen r 0 ja r suurin yhteinen tekijä, r l = syt(r 0, r ) Suurin yhteinen tekijä voidaan myös karakterisoida seuraavasti: syt(r 0, r ) on joukon {sr 0 + tr s, t Z} pienin positiivinen luku Erityisesti on olemassa s, t Z siten, että syt(r 0, r ) = sr 0 + tr Todistus Tuloksen pitäisi olla tuttu algebran kurssin käyneille Muut odottakoot seuraavaa kurssia tai vilkaiskoot kirjaa [6, ŸI] Esimerkki 4 Eukleideen algoritmi luvuille 26 ja 35: 26 = 3 35 + 2, 35 = 2 + 4, 2 = 4 + 7, 4 = 2 7 Kertoimet s ja t löydetään takaperin laskemalla: syt(26, 35) = 7 = 2 4, = 2 (35 2), = (26 3 35) (35 (26 3 35)), = 2 26 7 35
Tämä menetelmä kertoimien määräämiseksi ei ole kuitenkaan kovin käyttökelpoinen tietokoneella laskettaessa; Eukleideen algoritmista saatavat välivaiheet pitäisi tallettaa muistiin, jotta niitä voitaisiin käyttää kertoimien s ja t määräämiseen edellisen esimerkin mukaisesti Kertoimet s ja t voidaan kuitenkin määrätä suoraan käyttämällä ns laajennettua Eukleideen algoritmia 3 Laajennettu Eukleideen algoritmi Olkoot luvut l, q i ja r i kuten Eukleideen algoritmissa () Pyritään etsimään luvut s i ja t i siten, että s i r 0 + t i r = r i kaikille 0 i l Oletetaan aluksi, että tällaiset luvut ovat olemassa Kun tätä oletusta sovelletaan indekseihin i, i ja i +, saadaan Eukleideen algoritmin avulla 3 (2) r i+ = r i q i r i = (s i r 0 + t i r ) q i (s i r 0 + t i r ) = (s i q i s i )r 0 + (t i q i t i )r Toisaalta r i+ = s i+ r 0 + t i+ r Valitaan kertoimet seuraavan palautuskaavan mukaisesti (3) s i+ = s i q i s i, t i+ = t i q i t i Tällöin yhtälöstä (2) seuraa, että jos s k r 0 + t k r = r k arvoilla k = i ja k = i ja kertoimet s k ja t k on määrätty palautuskaavojen (3) avulla, niin yhtälö s k r 0 +t k r = r k on voimassa myös, kun k = i + Riittää siis löytää sopivat aloitusarvot Tällaiset ovat s 0 =, t 0 = 0, s = 0, t = Laajennetussa Eukleideen algoritmissa määrätään luvut l, q i, r i N, s i, t i Z, i l, siten, että 0 r i < r i, kun i l, ja s 0 =, t 0 = 0 (4) s = 0, t = r i = q i r i + r i+ s i = q i s i + s i+ t i = q i t i + t i+ Tällöin s i r 0 + t i r = r i kaikille 0 i l ja r l = syt(r 0, r ) Lisätietoa laajennetusta Eukleideen algoritmista löytyy kirjoista [, Ÿ32], [4, Ÿ452] Esimerkki 5 Käydään läpi edellisen esimerkin lasku laajennetulla Eukleideen algoritmilla i r i s i t i 0 26 0 35 0 2 2 3 3 4 4 4 7 2 7 5 0 5 8 Riviltä i = 4 saadaan r l = syt(r 0, r ) = s l r 0 + t l r, eli 7 = syt(26, 35) = 2 26 7 35
4 2 Ketjumurtoluvut Kun Eukleideen algoritmia sovelletaan pariin r 0, r N, saadaan (2) r 0 r = q r + r 2 r = q + r 2 r = q + r = q + q 2 + r 2 r 3 = q + q 2 + r 2 q 3 + r 4 r 3 = q + q 2 + r 3 r 2 = = q + q 2 + q 3 + + q l Viimeisenä esiintyvää murtolauseketta kutsutaan murtoluvun r 0 /r ketjumurtolukuesitykseksi tai -kehitelmäksi Yksinkertaisuuden vuoksi tätä kehitelmää merkitään [q,, q l ] Esimerkiksi murtoluvulle 26/35 on (22) 26 35 = 3 + + + 2 = [3,,, 2] Jos kaavan (2) ketjumurtokehitelmä katkaistaan k termin jälkeen, k l, ts muodostetaan ketjumurtoluku jonosta (q,, q k ), saadaan luvut (23) x k := [q,, q k ] = q + q 2 + q 3 + + q k Saatuja lukuja x k sanotaan ketjumurtoluvun r 0 /r konvergenteiksi Tarkastellaan konvergenttien jonoa (23) lähemmin Selvästi x = q N Seuraavaksi x 2 = q + q 2 = q q 2 + q 2 Merkitään (24) a = q, b =, a 2 = q q 2 +, b 2 = q 2, jolloin a, a 2, b, b 2 N ja x = a /b ja x 2 = a 2 /b 2 Seuraavalle konvergentille saadaan osoittaja a 3 ja nimittäjä b 3, eli a 3 = q 3 (q 2 q + )q, b 3 = q 3 q 2 +, a 3 = q 3 a 2 + a, b 3 = q 3 b 2 + b Induktiolla voidaan osoittaa (ks [5, Ÿ28]), että k konvergentti saadaan osamääränä x k = a k /b k, kun luvut a k ja b k määritellään palautuskaavalla (25) a k = q k a k + a k 2, b k = q k b k + b k 2, k = 2, 3,
Kun kerrotaan ensimmäinen kaavoista (25) puolittain luvulla b k ja toinen vastaavasti puolittain luvulla a k ja tulot vähennetään toisistaan, saadaan Toistamalla tätä päädytään tulokseen a k b k b k a k = (a k b k 2 b k a k 2 ) (26) a k b k b k a k = ( ) k (a 2 b b 2 a ) = ( ) k ((q q 2 + ) q 2 q ) = ( ) k Tästä saadaan tärkeä tulos: jos luvuilla a k ja b k on yhteinen tekijä c N, on c a k ja c b k, joten c (a k b k b k a k ) = ( ) k Siis c =, ts luvut a k ja b k ovat keskenään jaottomat Lause 2 Ketjumurtoluvun konvergentit (23) voidaan määrätä supistumattomassa muodossa x k = a k /b k palautuskaavojen (25) ja (24) avulla 2 Irrationaalilukujen ketjumurtolukukehitelmä Edellä todettiin, että jokainen rationaaliluku x l = r 0 /r voidaan esittää päättyvänä ketjumurtolukuna (27) x l = [q,, q l ] = q + q 2 + q 3 + + q l Kääntäen, jos on annettuna positiiviset kokonaisluvut q,, q l, on kaavan (27) määrittelemä luku rationaaliluku Entäpä, jos on annettuna päättymätön jono (q i ) i= N \ {0} ja jono (x l ) l= Q määritellään kaavan (27) mukaisesti? Jos jono (x l) l= suppenee, sanotaan jonon raja-arvoa x = lim l x l päättymättömäksi ketjumurtoluvuksi ja sitä merkitään [q, q 2, q 3, ] Lukuja x l sanotaan ketjumurtoluvun x konvergenteiksi Tarkastellaan aluksi käänteistä ongelmaa, eli miten määrätään irrationaaliluvulle ketjumurtolukukehitelmä, ts miten lukujono (q i ) i= N \ {0} määrätään tässä tapauksessa Käytetään mallina kaavaa (2), jossa merkitään x = r 0 /r ja x 2 = r 2 /r Tällöin x = q +x 2, missä q on kokonaisluku ja, koska 0 r 2 < r, on 0 x 2 < Siis q = x ja x 2 = x q Seuraava pari q 2, x 3 saadaan vastaavalla tavalla parista r, r 2, kun kaavassa (2) huomataan, että x = q + /y 2, missä y 2 := /x 2 = r /r 2 > (edellyttäen, että x 2 0; mutta jos x 2 = 0, on x Q, ja tästä tapauksesta emme ole kiinnostuneet) Siis y 2 = q 2 + x 3, missä q 2 on kokonaisluku ja 0 x 3 < Jos x Q, voidaan tätä jatkaa Saadaan jonot (q i ) i= N \ {0} ja (x l ) l= Q, q = x, y 2 = /(x q ), q i = y i, x i+ = y i q i, y i+ = /x i+, i > Esimerkki 22 Olkoon x = 5 Tällöin q = 5 = 2, ja 5 + 2 y 2 = = 5 2 ( 5 2)( 5 + 2) = 5 + 2, 5
6 joten q 2 = 5 + 2 = 4, ja y 3 = 5 + 2 4 = 5 + 2 Siis q = 2 ja q i = 4, kun i 2, joten luvun 5 viiden ensimmäisen konvergentin määräämä ketjumurtoluku on 2 + 4 + 4 + = [2, 4, 4, 4, 4] = 682 305 4 + 4 Laskemalla numeeriset likiarvot saadaan 682 305 22360656 ja 5 22360680, joten saadussa luvun 5 likiarvossa on viisi oikeaa desimaalia Nämä laskut on helppo suorittaa käsin, mutta laskemista voidaan helpottaa tietokoneohjelmien avulla Esimerkiksi Mathematica-ohjelmalla laskut voidaan hoitaa seuraavasti: aluksi ladataan paketti, jossa ketjumurtolukujen käsittely on määritelty Sitten komennolla ContinuedFraction määrätään annetun luvun ketjumurtolukukehitelmä halutulla konvergenttien määrällä In[]:= <<NumberTheory`ContinuedFractions` In[2]:= ContinuedFraction[Sqrt[5], 5] Out[2]= {2, 4, 4, 4, 4} In[3]:= Normal[ContinuedFractionForm[%]] 682 Out[3]= --- 305 Vastaavasti piin ketjumurtolukukehitelmä (28) π 3 + = 03993 3302 7 + 5 + + 292 saadaan seuraavasti (huomaa: virhe on vasta 0 desimaalissa) In[4]:= ContinuedFraction[Pi, 5] Out[4]= {3, 7, 5,, 292} In[5]:= Normal[ContinuedFractionForm[%]]
7 03993 Out[5]= ------ 3302 In[6]:= N[Pi-%] -0 Out[6]= 57789 0 22 Ketjumurtolukukehitelmän suppeneminen Palautuskaavoista (25) ja (24) voidaan päätellä, että ketjumurtoluvun konvergenttien (23) osoittajat a k ja nimittäjät b k kasvavat rajatta Kaavasta (26) saadaan (29) a k b k a k b k = a kb k b k a k b k b k = ( )k b k b k Kun tätä sovelletaan kahteen peräkkäiseen pariin, saadaan (20) a k a k 2 = ( ) k b k b k 2 = ( ) k q k b k b k 2 b k b k b k 2 b k b k 2 Kun tätä käytetään parillisille k:n arvoille, nähdään, että jono x 2k = a 2k /b 2k on vähenevä Vastaavasti nähdään, että parittomia k:n arvoja vastaava jono x 2k = a 2k /b 2k on kasvava Lisäksi a 2k /b 2k > a 2k /b 2k, joten a 2k /b 2k > a 2j /b 2j kaikille k, j N \ {0} Huomautus 23 On tärkeä huomata, että tässä yhteydessä ensimmäiseksi konvergentiksi on valittu x = q = a /b eli ketjumurtoluvun kokonaisosa Esimerkiksi kirjassa [5] ensimmäiseksi konvergentiksi on valittu x 2 = q + /q 2 = P /Q (P ja Q kirjan merkintöjen mukaiset) Tällöin edellä käytetty jako parilliset/parittomat vaihtuu, ts kirjassa [5] parillisia indeksin arvoja vastaavat konvergentit P 2k /Q 2k muodostavat kasvavan jonon, ja parittomia arvoja vastaavat muodostavat vähenevän jonon P 2k /Q 2k Lisäksi P 2k /Q 2k < P 2j /Q 2j Koska konvergenttien osajono x 2k näillä jonoilla raja-arvot on vähenevä ja osajono x 2k on kasvava, on x := lim k x 2k, Lisäksi on x x Kaavasta (29) seuraa, että x := lim k x 2k x x = lim (x 2k x 2k ) = lim = 0 k k b 2k b 2k Siis konvergenttien jonolla (x k ) k on raja-arvo x := lim k x k = x = x Edelleen, koska raja-arvo on aina lukujen x k ja x k+ välissä, saadaan kaavasta (29) virhearvio (2) x x k b k b k+
8 Huomautus 24 Ketjumurtolukuja tavanomaisempi rationaalilukuapproksimaatio on b-kantaisen kehitelmän käyttäminen (desimaalikehitelmä, kun b = 0) Tässä b N, b 2, ja jokainen x R, 0 x <, voidaan esittää muodossa x = d j b j, j= missä 0 d j < b Kun tästä summasta otetaan äärellinen osasumma, saadaan x:lle rationaalinen approksimaatio x k = k j= d jb j Approksimaatiovirhe on helppo määrätä geometrisen sarjan avulla: (22) x x k = d j b j (b )b j = b k j=k+ j=k+ Siis virhe on korkeintaan viimeisen mukaan otetun termin nimittäjä Ketjumurtoluvuille saadaan palautuskaavan (25) nojalla b k+ q k b k b k, joten epäyhtälön (2) nojalla x x k b k b k+ q k b 2 k b 2 k Virhe on siis korkeintaan viimeisen mukaan otetun termin nimittäjän neliö Vaikka ketjumurtoluvuille nimittäjien arviointi on hankalampaa kuin b-kantaisille kehitelmille, on ketjumurtoapproksimaatio parempi kuin b-kantaisilla kehitelmillä saatava Edellä olleessa piin ketjumurtolukukehitelmässä käytettiin viittä konvergenttia ja todettiin, että virhe on pienempi kuin 0 9 0-kantaisilla kehitelmillä tähän tarvittaisiin yhdeksän termiä Ketjumurtoluvuilla on toinenkin approksimaatio-ominaisuus, joka tekee niistä tarkempia rationaalilukuapproksimaatioita kuin muut Nimittäin, jos annetulle luvulle x 0 halutaan löytää murtoluku a/b siten, että b b k, missä b k on edellä määrätty x:n konvergentin x k nimittäjä, on x x k x a b kaikille a N (ks [5, Ÿ3]), ts konvergentti x k on lähempänä lukua x kuin mikään murtoluku a/b, jonka nimittäjä ei ole liian suuri: b b k 3 Sovellutus Nykyisin (Suomessa 3753 alkaen) käytössä olevan gregoriaanisen kalenterin mukainen vuoden keskimääräinen pituus on (joka neljäs vuosi on karkausvuosi; poikkeuksena täydet sataluvut; poikkeuksen poikkeuksena täydet neljäsataaluvut) 365 + 4 3 400 = 365 97 400 = 36524250 vrk Vuoden todellinen pituus on ns trooppinen vuosi 365 vrk 5 t 48 46 = 365 0463 43200 36524220 vrk Gregoriaaninen vuosi on siis 26 sekuntia liian pitkä
9 Kehitetään trooppisen vuoden pituus 365 0463 43200 ketjumurtoluvuksi 365 0463 43200 = 365 + 4 + 7 + + 3 + 5 + 64 Oheiseen taulukkoon (ks [, Ÿ47]), on koottu lasketun ketjumurtoluvun viisi ensimmäistä konvergenttia sekä trooppisen vuoden ja konvergentin erotus konvergentti virhe troop vuoteen 365 5 t 48 46 365 4 4 365 7 29 365 8 9 33 365 3 28 Taulukosta voidaan todeta, että jo neljäs konvergentti antaa vuoden pituudelle tarkemman rationaalisen likiarvon kuin gregoriaaninen kalenteri Lisäksi viides konvergentti on (tietoteknisesti) erittäin mielenkiintoinen Sen avulla saatavassa binäärisessa kalenterissa karkausvuosia ovat vuodet n, joille 4 n, mutta 28 n Binäärisen kalenterin mukaisen vuoden pituus on 365 + 4 3 = 365 28 28 vrk ja virhe trooppisen vuoteen on vain yksi sekunti Viitteet [] Joachim von zur Gathen, Jürgen Gerhard, Modern Computer Algebra Cambridge University Press, 999 [2] Ronald L Graham, Donald E Knuth, Oren Patashnik, Concrete Mathematics: A Foundation for Computer Science Addison-Wesley, 989; Second Edition, 994 [3] Donald E Knuth, The Art of Computer Programming, Vol, Fundamental Algorithms Addison-Wesley, 968; Third Edition, 997 [4] Donald E Knuth, The Art of Computer Programming, Vol 2, Seminumerical Algorithms Addison-Wesley, 969; Third Edition, 998 [5] Ernst Lindelöf, Johdatus korkeampan analyysiin Mercatorin Kirjapaino Osakeyhtiö, 92; toinen, korjattu laitos, 926 [6] Tauno Metsänkylä, Marjatta Näätänen, Algebra, Luentomoniste 44 Jyväskylän yliopisto, Matematiikan laitos, 999