STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor SOČ: 1. Matematika a statistika Aritmetika včera a dnes Arithmetics: Past and Present Autor: Škola: Konzultant: Čeněk Škarda Gymnázium Uničov Gymnazijní 257, 783 91 Uničov Ing. L ubomíra Balková, Ph.D. Uničov 2012
Prohlášení Prohlašuji, že jsem svou práci vypracoval samostatně, použil jsem pouze podklady (literaturu, SW atd.) uvedené v přiloženém seznamu a postup při zpracování a dalším nakládání s prací je v souladu se zákonem č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon) v platném znění. V Uničově dne 7. května 2012 podpis:...
Poděkování Poděkovat bych chtěl především těmto lidem. Mé vedoucí práce Ing. L ubomíře Balkové, Ph.D., za její ochotu, cenné rady a nápady. Dále bych chtěl poděkovat RNDr. Zuzaně Kopečné Voglové a Mgr. Milanu Kuxovi za jejich odborné připomínky.
ANOTACE Ačkoliv se na základních školách učíme všichni stejné algoritmy pro sčítání, odčítání, násobení a dělení přirozených čísel s tužkou a papírem, je takových algoritmů velké množství a každý z nich má své výhody a nevýhody. Stejně tak kromě algoritmů, které používá náš počítač k provádění aritmetických operací, existuje celá řada algoritmů, které se mohou hodit například ve chvíli, kdy je naší hlavní úlohou násobit obrovská čísla nebo kdy máme k dispozici počítače zapojené do sítí a s výhodou využijeme paralelní algoritmy. Tato práce poskytuje obsáhlý seznam existujících algoritmů pro základní aritmetické operace a jejich srozumitelné vysvětlení. Pro zajímavost popisujeme u historických metod i úroveň matematiky, které se na daném území v době vzniku algoritmu dosáhlo, a u významných matematiků, kteří se o zmiňované algoritmy zasloužili, uvádíme jejich medailony. Není nám známo, že by takový bohatý souhrn algoritmů aritmetických operací byl někde k dispozici, v přehledném shrnutí tedy spočívá hlavní přínos této práce. Výstupem práce je navíc www stránka http://bimbo.fjfi.cvut.cz/ soc se srozumitelným popisem algoritmů v mnoha případech doplněným programem, který algoritmus ilustruje. Část algoritmů násobení jsme popsali v článku L. Balková, Č. Škarda: Násobíme chytře?, který je přijat k publikaci v Pokrocích matematiky, fyziky a astronomie. Klíčová slova: aritmetické operace; číselné soustavy; časová složitost algoritmu; paralelní algoritmy; redundance ANNOTATION At any primary school, pupils are taught the same algorithms for addition, subtraction, multiplication, and division of natural numbers. Despite this fact, there exist a huge number of such algorithms and each of them has its advantages and disadvantages. Similarly, in addition to algorithms used by our computers for execution of arithmetical operations, there exist other methods that can be more suitable in certain cases, for instance when one wants to operate with huge numbers or in case one may use a network of computers. This work provides a comprehensive summary of existing algorithms for basic arithmetical operations and their comprehensible explanation. We place the described methods into a historical context when depicting the level of mathematical knowledge in the region where the method in question was invented and we add portraits of important mathematicians who influenced arithmetics. To our knowledge, there has not been so far such a rich summary of algorithms for arithmetical operations. Therefore, the main contribution of this work resides in the clearly arranged comprehensive summary. An additional output is a web page http://bimbo.fjfi.cvut.cz/ soc where a detailed description of algorithms is supplemented with illustrative computer programs. A part of algorithms concerning multiplication has been described in the paper L. Balková, Č. Škarda: Do we multiply in a clever way?, to appear in Pokroky matematiky, fyziky a astronomie. Key words: arithmetical operation; numeration systems; time complexity of an algorithm; parallel algorithms; redundancy
Obsah 1 Úvod 6 2 Násobení 7 2.1 Násobení zpaměti................................ 7 2.2 Násobení s tužkou a papírem.......................... 8 2.2.1 Egyptské násobení........................... 8 2.2.2 Ruské (sedlácké) násobení....................... 9 2.2.3 Indické násobení............................ 10 2.2.4 Čínské grafické násobení........................ 10 2.2.5 Čínské početní násobení........................ 11 2.2.6 Al-Chwárizmího násobení....................... 11 2.2.7 Cauchyovo komplementární násobení................. 12 2.2.8 Převod násobení na goniometrické a logaritmické funkce...... 13 2.3 Mechanické pomůcky a tabulky........................ 14 2.3.1 Soroban................................. 14 2.3.2 Násobení na linách........................... 15 2.3.3 Napierovy kosti............................. 16 2.3.4 Tabulky kvadrátů............................ 16 2.4 Počítačové násobení............................... 17 2.4.1 Binární soustava............................ 17 2.4.2 Redundantní binární soustava..................... 18 2.4.3 Klasické násobení............................ 19 2.4.4 Rychlé násobení............................. 21 3 Dělení 26 3.1 Dělení s tužkou a papírem........................... 26 3.1.1 Egyptské dělení............................. 26 3.1.2 Čínské početní dělení podle Sun Ziho................. 27 3.2 Mechanické pomůcky.............................. 28 3.2.1 Soroban................................. 28 3.2.2 Napierovy kosti............................. 28 4 Výpočet druhé odmocniny 31 4.1 Výpočet druhé odmocniny s tužkou a papírem................ 31 4.1.1 Numerický výpočet druhé odmocniny................. 31 4.1.2 Indický výpočet druhé odmocniny................... 32 4.1.3 Čínský výpočet druhé odmocniny................... 34 5
5 Sčítání 37 5.1 Sčítání s tužkou a papírem........................... 37 5.1.1 Čínské sčítání.............................. 37 5.2 Mechanické pomůcky.............................. 38 5.2.1 Soroban................................. 38 5.2.2 Sčítání na linách............................ 38 6 Úroveň matematiky starých kultur 40 6.1 Poziční a nepoziční soustavy.......................... 40 6.2 Egypt...................................... 41 6.3 Mezopotámie.................................. 42 6.4 Idiánské kmeny Ameriky............................ 42 6.5 Čína....................................... 44 6.6 Starověká Indie................................. 45 6.7 Arabský svět.................................. 46 7 Významní matematikové 47 7.1 Al-Chwárizmí.................................. 47 7.2 John Napier................................... 48 7.3 Augustin Louis Cauchy............................. 48 7.4 Jakub Filip Kulik................................ 49 7.5 Antonín Svoboda................................ 49 8 Závěr 51 6
Kapitola 1 Úvod Počítání je užitečné v každé činnosti související se světskými, védskými nebo jim podobnými náboženskými záležitostmi. Znalost početní je vysoce ceněna v znalosti lásky, v poznatcích o bohatství, v hudbě i dramatu, v kuchařském umění, v medicíně, v architektuře, v prosodii, ve veršotepectví i poesii, v logice a gramatice a v jiných věcech... Používá se jí ve spojitosti s pohyby Slunce a jiných nebeských těles, se zatměním a konjunkcemi planet a v souvislosti s hledáním směru, polohy, času a s pohybem Měsíce. Počet, průměry a obvody ostrovů, oceánů a hor, rozměry sídlišt a lidských obydlí, prostory mezi světy, svět světla, svět bohů i svět pekelných živlů a množství jiných nejrůznějších měření - lze uskutečnit jen s pomocí matematiky. Mahávíra, indický bard, 9. století n.l. ([2], str. 97) Mahávíra ve své oslavné básni hovoří o počítání a matematice a má na mysli základní aritmetické operace. Jeho óda zůstává v platnosti i dnes, stále je třeba provádět aritmetické operace, a to s čím dál tím větší rychlostí a přesností. Proto je téma naší práce - základní aritmetické operace - stále aktuální. Cílem práce je zachytit vývoj základních aritmetických operací (násobení, sčítání, dělení a výpočet druhé odmocniny) od starověku až do dnešních dnů. Je zřejmé, že jinak vypadají algoritmy pro počítání zpaměti, s tužkou a papírem, pomocí mechanických pomůcek a tabulek a algoritmy počítačové. Práce je rozdělena do kapitol věnovaných jednotlivým aritmetickým operacím a každá z kapitol je pak členěna na sekce, podle toho, zda jsou k výpočtu užity pouze prsty nebo papír s tužkou, mechanické pomůcky či dokonce počítač. Připojena je také kapitola Úroveň matematiky starých kultur popisující úroveň matematiky na územích, kde se jednotlivé algoritmy rodily, a dále kapitola Významní matematikové s medailonky matematiků, kteří aritmetiku podstatně ovlivnili. 7
Kapitola 2 Násobení Na první pohled by se mohlo zdát, že úloha vynásobit dvě přirozená čísla je nezajímavá. Známe přece už ze základní školy algoritmus, u kterého stačí umět malou násobilku a sčítat, a úloha je vyřešená. Tato kapitola by měla být důkazem, že úloha zajímavá je, protože metod řešení existuje celá řada. Egyptské a ruské násobení je založeno na binárním rozvoji násobence. Cauchyovo komplementární násobení využívá zápis čísel pomocí záporných cifer. Čínské násobení je grafické, a tedy pro žáky s vrozeným odporem k matematice možná nejpřívětivější. Zjednodušení násobení velkých čísel přinesly tabulky kvadrátů, japonský soroban a Napierovy kosti, vynález Johna Napiera, otce logaritmu. Kromě algoritmů, které urychlují násobení zpaměti a na papíře, si také ukážeme efektivní algoritmy pro počítačové násobení. Při násobení velkých čísel se vyplatí zapsat čísla v tzv. redundantní binární soustavě, kde je dovolena kromě cifer 0 a 1 i cifra 1. Moderní éru násobení velkých čísel odstartovaly ale zejména Karacubův algoritmus a modulární násobení, které taktéž představíme. Kapitolu zakončíme přehledem v současnosti nejrychlejších známých počítačových algoritmů pro násobení. 2.1 Násobení zpaměti Násobení na prstech paní učitelky na základní škole nevidí rády. Chtějí nás totiž naučit násobit do 10 krát 10 zpaměti jako když bičem mrská. Přesto je použití prstů přirozeným zjednodušením, kterým si lidé pomáhají při výpočtech odedávna. Středověcí obchodníci s oblibou využívali tzv. cikánskou násobilku, která umožňuje násobit pomocí prstů čísla x y, kde x, y {6, 7, 8, 9} (se znalostí pouhé násobilky do 5 krát 5). Princip cikánské násobilky pochopíte z 1. části obrázku 2.1. Pokud chceme násobit 8 krát 7, zeptáme se: Osm a kolik je deset? A dva. Skrčíme dva prsty na první ruce (c = 2). To samé uděláme s číslem sedm. Schováme tedy tři prsty na druhé ruce (d = 3). Na pozici desítek napíšeme součet vztyčených prstů (a+b = 3+2 = 5) a na pozici jednotek napíšeme součin skrčených prstů (c d = 2 3 = 6). A obdržíme správný výsledek 56. Bystrý čtenář si snadno rozmyslí, že algoritmus je použitelný jen k násobení čísel, která jsou obě větší než 5, a že funguje díky následujícím rovnostem (10 c)(10 d) = 100 (c + d)10 + cd = 10(10 c d) + cd = 10(a + b) + cd. Možná už čtenář postřehl, že při násobení některých čísel narazíme na úskalí. Například při násobení 7 6 je c d = 3 4 = 12, což je více než 10. V takovém případě na místě 8
Obrázek 2.1: 1. Cikánská násobilka pro výpočet 8 7. 2. Výpočet 14 9 na prstech. jednotek necháme číslo 2 a 1 přeneseme k desítkám. Násobení devíti nedělalo středověkým trhovcům problémy ani pro čísla od 12 do 19. Jejich postup naznačuje 2. část obrázku 2.1. Pokud chceme násobit 14 krát 9, skrčíme na levé ruce čtvrtý prst prsteníček. Zleva pak palec reprezentuje stovky (a = 1), zbylé prsty před prsteníčkem reprezentují desítky (b = 2) a prsty, které následují za prsteníčkem, reprezentují jednotky (c = 6). Výsledek: 126. Snadno si rozmyslíme, že algoritmus funguje díky následujícím rovnostem. Násobímeli (10 + d) krát 9, kde d = 2,..., 9, platí: (10 + d)9 = 90 + 9d = 100 + 10(d 2) + (10 d) = 100a + 10b + c. 2.2 Násobení s tužkou a papírem Máme-li za úkol vynásobit dvě přirozená čísla a k dispozici tužku a papír, většina z nás použije algoritmus, který jsme se učili na základní škole. Existuje ale celá řada alternativ. 2.2.1 Egyptské násobení 4 7 5 3 1 4 1 2 3 5 2 4 9 1 Egypt ané převzali pravděpodobně násobení od etiopských kmenů. Samotné násobení je založeno na binárním zápisu násobence. Chtěli-li Egypt ané vynásobit např. 13 krát 15, sestavili si tabulku, jejíž první sloupec tvořily mocniny dvou menší nebo rovné 13 a druhý sloupec vznikl postupným zdvojováním 9
15. V prvním sloupci si označili mocniny dvou, které se vyskytují v binárním zápisu 13. Pak již stačilo sečíst ve druhém sloupci řádky odpovídající označeným mocninám dvou (viz obrázek 2.2). Výsledek: 195. Binární zápis přirozeného čísla n, tedy zápis tvaru 13 15 1 15 2 30 4 60 8 120 195 Obrázek 2.2: Výpočet 13 15 egyptským způsobem. n = a 0 2 0 + a 1 2 1 + a 2 2 2 + + a k 2 k, kde koeficienty a 0, a 1, a 2,..., a k {0, 1}, lze získat hladovým algoritmem. Podíváme se, jakou nejvyšší mocninu dvojky číslo 13 obsahuje. To je 2 3 = 8. Poté od 13 odečteme 8 a pro získaný rozdíl 5 opět najdeme největší mocninu dvojky, kterou číslo 5 obsahuje. To je 2 2 = 4. Na závěr spočítáme rozdíl 5 4 = 1, a to je nultá mocnina dvojky. Získáme 13 = 1 + 4 + 8. 2.2.2 Ruské (sedlácké) násobení Ruské násobení se velmi podobá egyptskému. Ještě v 19. století se používalo na ruském venkově a zřejmě tak násobila většina Evropanů před prosazením indo-arabského způsobu násobení, který se dnes učíme na základní škole. Chceme-li ruským způsobem vynásobit 13 krát 15, sestavíme si tabulku, jejíž první sloupec tvoří zbytky po opakovaném celočíselném dělení násobence dvojkou a druhý sloupec vznikne postupným zdvojováním 15. Nyní stačí sečíst ve druhém sloupci řádky odpovídající jednotkovým zbytkům (viz obrázek 2.3). Výsledek: 195. 13 15 13 : 2 = 6 zbytek 1 15 6 : 2 = 3 zbytek 0 30 3 : 2 = 1 zbytek 1 60 1 : 2 = 0 zbytek 1 120 195 Obrázek 2.3: Výpočet 13 15 ruským způsobem. Uvědomte si, že pokud přirozené číslo n není dělitelné dvojkou, znamená to, že na posledním místě v jeho binárním zápisu je jednička. Pokud je dělitelné dvojkou, pak má v binárním zápisu na posledním místě nulu. Snadno si pak rozmyslíte, že binární zápis čísla n lze získat také následujícím algoritmem: 1. Vyděl číslo dvěma. 2. Je-li dělitelné, zapamatuj si nulu a číslo n/2. Není-li dělitelné, zapamatuj si jedničku a číslo (n 1)/2. 10
3. Pokud zapamatované číslo není nula, opakuj algoritmus. Pokud zapamatované číslo je nula, binární zápis získáš sepsáním nul a jedniček zleva doprava v pořadí od poslední zapamatované cifry k první. 2.2.3 Indické násobení Zde popsané násobení není jediné, které se ve staré Indii používalo. Existovalo více než osm rozličných způsobů násobení, principem se však velmi podobaly. Chceme-li indickým způsobem vynásobit 435 krát 12, namalujeme tabulku se třemi sloupci a dvěma řádky, které označíme ciframi násobence a násobitele, a každé okénko tabulky rozdělíme úhlopříčkou na dva trojúhelníky. Nyní tabulku vyplníme tak, že pro každou buňku násobíme cifry, které značí, v jakém sloupci a řádku se buňka nachází. Pokud vyjde číslo menší než deset, napíšeme jej do dolního trojúhelníku. Pokud je výsledek větší nebo roven deseti, napíšeme desítky do horního trojúhelníku a jednotky do dolního trojúhelníku. Na závěr vysčítáme zprava doleva čísla podél úhlopříček. Jednotky sepisujeme a desítky si pamatujeme a přenášíme je. Výsledek je 5220 (viz obrázek 2.4). Obrázek 2.4: Výpočet 435 12 pomocí indického násobení. 2.2.4 Čínské grafické násobení Čínské grafické násobení se nejspíše vyvinulo díky lásce Číňanů ke kaligrafii a malbě a jejím následným uplatněním v matematice při násobení menších čísel. Chceme-li tímto způsobem násobit například 123 krát 21, namalujeme za násobence ve směru z JZ na SV postupně jednu rovnoběžku za stovky, dvě rovnoběžky za desítky a tři rovnoběžky za jednotky. Poté za násobitele namalujeme ze SZ směrem na JV dvě rovnoběžky za desítky a jednu za jednotky. Poté do disjunktních obdélníků uzavřeme průsečíky odpovídající tisícovkám, stovkám, desítkám a jednotkám a zjistíme jejich počty. V našem případě máme v prvním obdélníku 2 průsečíky, ve druhém 5, ve třetím 8 a ve čtvrtém 3. Výsledek 2583 (viz obrázek 2.5 (a)). Tímto způsobem bychom postupovali i při násobení větších čísel. Pokud nám součet průsečíků v některém obdélníku vyjde větší než 9, tak klasicky přičteme cifru desítek k předcházejícímu obdélníku. Například pro 124 krát 21 nám vyjde v prvním odélníku 2, ve 11
Obrázek 2.5: Výpočet (a) 123 21 (b) 124 21 čínským grafickým způsobem. druhém 5, ve třetím 10 (jedničku přičteme k druhému obdélníku) a ve čtvrtém 4. Výsledek je tedy 2604 (viz obrázek 2.5 (b)). 2.2.5 Čínské početní násobení Početní násobení se liší od předchozích algoritmů zejména tím, že probíhá zleva doprava, tedy od cifer u nejvyšších mocnin deseti k cifrám u jednotek. Detailně je popsáno je v [2], str. 25. Algoritmus pro výpočet 3142 14 je srozumitelný z obrázku 2.6. Začíná se s násobením od nejvyšší cifry většího z čísel a jednotlivé kroky se postupně zapisují zleva doprava. K zápisu násobení se většinou používali dřevěné nebo kostěné tyčinky, my jsme použili pro zjednodušení arabské číslice. Obrázek 2.6: Výpočet 3142 14 čínským početním násobením. 2.2.6 Al-Chwárizmího násobení Al-Chwárizmího způsob násobení se v mnoha ohledech inspiruje některým z indických násobení (ne ovšem tím, které jsme zde popsali my, protože stejně jako čínské početní násobení i Al-Chwárizmího násobení funguje zleva doprava) [2], str. 190-191. Násobení si ukážeme na příkladu 23123 krát 2131 (viz obrázek 2.7). Nejdříve si napíšeme násobence a pod něj násobitele tak, aby jednotky násobitele byly pod nejvyšší cifrou násobence. Poté vezmeme nejvyšší cifru násobence (v našem případě 2) a vynásobíme násobitele. Tím dostaneme číslo 4262, které napíšeme před násobence tak, že jednotkovou cifrou nahradíme nejvyšší cifru násobence. Nakonec násobitele posuneme o jednu cifru doprava. Další násobení provedeme číslem 3, vyjde nám 6393 a toto číslo přičteme k částečnému výsledku 4262 tak, že poslední cifrou přepíšeme trojku. Násobitele posuneme o jednu cifru doprava. Dále násobíme podobně jedničkou a znovu výsledek přičteme tak, že poslední 12
2 3 1 2 3 2 1 3 1 4 2 6 2 3 1 2 3 2 1 3 1 4 9 0 1 3 1 2 3 2 1 3 1 4 9 2 2 6 1 2 3 2 1 3 1 4 9 2 6 8 7 2 3 2 1 3 1 4 9 2 7 5 1 1 3 Obrázek 2.7: Al-Chwárizmího výpočet 23123 2131. cifra nahradí jedničku. Násobitele zase posuneme o jednu cifru doprava. Nyní provedeme násobení analogicky i se zbylými ciframi násobence. Nakonec nám vyjde číslo 49275113, což je správný výsledek. 2.2.7 Cauchyovo komplementární násobení Toto násobení využívá zápis čísel pomocí záporných cifer. Všimněme si, že při použití Cauchyova komplementárního násobení si vystačíme s násobilkou do 5 krát 5! Chceme-li násobit 57 krát 17 Cauchyovým algoritmem, zapíšeme nejprve násobence i násobitele pomocí cifer od 4 do 5, tj. 57 = 14 3 = 100 40 3 a 17 = 23 = 20 3. Pruhy nad ciframi tedy znamenají, že cifry mají znaménko mínus. Poté již násobíme analogicky jako v klasické desítkové soustavě. Pouze u znamének dáváme pozor: při násobení dvou záporných cifer nebo dvou kladných cifer má výsledek znaménko plus, při násobení cifer opačného znaménka má výsledek znaménko mínus (viz obrázek 2.8). 1 4 3 2 3 2 2 9 2 8 6 1 0 4 9 9 6 9 Obrázek 2.8: Výpočet 57 17 Cauchyovým algoritmem. Abychom mohli Cauchyovo komplementární násobení používat, musíme umět převádět zápisy čísel mezi klasickou desítkovou soustavou a desítkovou soustavou s ciframi od 4 do 5. K takové konverzi slouží následující jednoduchý algoritmus: 13
1. Přičteme číslo sestavené z tolika čtyřek kolik cifer má číslo konvertované. Například chceme-li zapsat 57 v desítkové soustavě s ciframi od 4 do 5, v prvním kroku přičteme 44 57 + 44 = 101, poté odečteme od každé z posledních dvou cifer součtu číslo 4 Výsledek: 14 3. 0 4 = 4 a 1 4 = 3. 2. Chceme-li naopak převést číslo do klasické desítkové soustavy, spočteme rozdíl kladné a záporné části. Například zápis 14 3 v klasické desítkové soustavě získáme jako: 100 43 = 57. Výsledek: 57. 2.2.8 Převod násobení na goniometrické a logaritmické funkce Ve středověké Evropě bylo běžné převádění násobení na sčítání, někdy velmi zvláštním způsobem [7]. Například se využívalo funkce cosinus ve vzorci: cos α cos β = 1 (cos(α + β) + cos(α β)) 2 Pokud jsme jím chtěli vynásobit dvě čísla, např. 326 a 931, museli jsme začít upravením obou čísel vytknutím mocnin 10 a výpočtem příslušného úhlu. Poté dosadíme do vzorce: 326 10 3 = 0, 326 = cos(70, 97382931 ) 931 10 3 = 0, 931 = cos(21, 40876293 ) cos(70, 97382931 ) cos(21, 40876293 ) = = 1(cos(70, 2 97382931 + 21, 40876293 ) + cos(70, 97382931 21, 40876293 )) = 1( 0.04157209558 + 0.6485840956) = 1 0.607012 = 0.303506 2 2 Nakonec výsledek vynásobíme 10 6 a dostaneme 303506. Dokladem, že se tímto způsobem násobení provádělo, jsou obsáhlé, patnáctimístné tabulky goniometrických funkcí z roku 1613. Dalším převodem násobení na sčítání je převod pomocí logaritmů. Tento postup se ještě před nedávnem učil i na školách, dnes bohužel upadá v zapomnění. Dekadický logaritmus čísla x je exponent, na který musíme povýšit číslo 10, abychom dostali x: 10 log x = x. Při násobení mocnin se stejným základem se exponenty sčítají: a m a n = a m+n 14
a platí: a = 10 log a, b = 10 log b, ab = 10 log a 10 log b = 10 log a+log b = 10 log ab. Pokud tedy chceme vynásobit 326 931, postupujeme následovně: log(326 931) = log 326 + log 931 = 2, 5132176 + 2, 968949681 = 5, 482167281 Nyní výsledek odlogaritmujeme pomocí tabulek a dostáváme 303506. 2.3 Mechanické pomůcky a tabulky 2.3.1 Soroban Soroban je japonská varianta kuličkového počítadla. Do Japonska se dostal okolo roku 1600 z Číny, kde existuje podobné počítadlo zvané suan pan. Obrázek 2.9: Japonské počítadlo soroban - papírový model od autora SOČ. Násobení dvou čísel je totožné s čínským početním a Al-Chwárizmího násobením, tedy postupuje opět zleva doprava, pouze se jednotlivé kroky nepíší na papír, ale značí se uspořádáním kuliček na počítadle. Násobení si uvedeme na příkladu 46 krát 235. 1. Začneme znázorněním čísla 46 na počítadle. Při násobení vždy začínáme v levém krajním sloupci. Každý sloupec je rozdělen na dvě části. V horní části je jedna kulička, která má hodnotu čísla 5, a v dolní části jsou čtyři kuličky, každá o hodnotě 1. Číslo 4 tedy znázorníme posunutím 4 kuliček nahoru a číslo 6 v dalším sloupci vpravo posunutím jedné kuličky o hodnotě 5 dolů a jedné kuličky o hodnotě 1 nahoru (viz obrázek 2.10 a.). 2. Vynecháme jeden sloupec a znázorníme číslo 235 (viz obrázek 2.10 b.). 3. Vynecháme dva sloupce (obecně tolik sloupců, kolik je cifer násobence) a začneme násobením 4 krát 235. 4 krát 2 je 8, osm znázorníme na sorobanu, 4 krát 3 je 12, 2 znázorníme na dalším sloupci a 1 přičteme k 8 v sloupci předešlém. Nakonec 4 krát 5 je dvacet, 2 přičteme k předešlému sloupci. Musíme si pamatovat, že poslední sloupec je prázdný, ale znázorňuje nulu - abychom při přepisu čísla nezměnily řád jejím vynecháním! (viz obrázek 2.10 c.). 15
4. Pokračujeme obdobným násobením 6 krát 235, pouze začínáme přičítat mezivýsledky až o jeden sloupec dál, než při násobení předcházejícím, protože násobíme číslem menším o jeden řád (viz obrázek 2.10 d.). 5. Přečteme číslo na sorobanu. Výsledek je 10810. Obrázek 2.10: Násobení 46 235 na sorobanu. 2.3.2 Násobení na linách V 15. století jsou již v Evropě rozšířené písemné výpočty, ty ale stále nevytlačily počty opírající se o různorodé mechanické pomůcky. Ve 12. - 14. století bylo velmi hojně využíváno kuličkové počítadlo abakus, které se ale od 15. století ztrácí a objevují se speciální početní desky. Samotné početní desky se od sebe velmi lišily. Odrážela se v nich náročnost výpočtů i bohatství majitele, takže se setkáváme nejen s obyčejnými dřevěnými, ale i kovovými deskami. Vždy se však jednalo o desku rozdělenou svislými a horizontálními čarami na jednotlivá okna, na které se jednotlivé cifry značily kladením kamenů (anglicky countres, francouzsky jetons). Jedna část linky a okno nad ní slouží k zaznamenání jedné cifry. Kameny umístěné na lince mají hodnotu jedné, mohou zde být maximálně čtyři a v okně může být položen jeden kámen o hodnotě pěti. V jednom sloupci pak značíme jedno číslo, kde na dolní lince a v prvním okně jsou naznačeny jednotky a na každé další lince a v každém dalším okně narůstá hodnota cifry vždy o jeden řád. Násobení si předvedeme na 73 krát 95. Začneme zaznačením obou čísel v prvních dvou sloupcích. Obrázek 2.11: Znázornění čísla 73 v prvním a 95 v druhém sloupci. Nyní začínáme násobením 3 5 a mezivýsledek naznačíme v třetím sloupci, protože násobíme jednotky s jednotkami začínáme v dolním okně (viz obrázek 2.12 a.). 16
Obrázek 2.12: Násobení 73 95 na linách. Pokračujeme násobením 3 9 a výsledek vyznačíme v dalším sloupci, protože už ale násobíme jednotky desítkami začínáme o jedno okno výše (viz obrázek 2.12 b.). Dále násobíme 7 5 a výsledek opět zaznačíme v dalším sloupci, tentokrát na stejné úrovni jako předešlé násobení, protože desítky násobíme jednotkami (viz obrázek 2.12 c.). Poslední násobení 7 9 naznačíme o jedno okno výše, protože násobíme desítky desítkami. Celé násobení ukončíme sečtením jednotlivých mezivýsledků po řadách. Sčítáme od nejnižšího okna (viz obrázek 2.12 d.). Výsledek: 6935. 2.3.3 Napierovy kosti Tuto výpočetní pomůcku, jejíž pomocí můžeme jednoduše převést násobení, a jak uvidíme v následující kapitole, také dělení na sčítání, vymyslel skotský matematik John Napier na sklonku svého života. Základní Napierovy kosti se skládají z devíti samostatných sloupků, rozdělených na deset řádků. V prvním řádku je uvedeno číslo 1 až 9 a v následujících devíti jsou vzestupně uvedeny jeho násobky čísly 1 až 9, v každém řádku desítky píšeme nad diagonálu a jednotky pod ní. Název Napierovy kosti má původ v materiálu sloupků, jímž byla nejčastěji slonovina. Sloupky proto připomínaly kosti. Násobení si vysvětlíme na příkladu 4732 krát 6. Z Napierových kostí si vezmeme sloupky odpovídající cifrám násobence a seřadíme je tak, aby nám vzniklo žádané číslo (v našem případě číslo 4732). Poté si najdeme řádek odpovídající násobiteli (v našem případě řádek 6). Nyní již pouze sečteme čísla v horních a dolních částech tohoto řádku, a to tak, že je vždy sčítáme po diagonále (viz obrázek 2.13). Chceme-li násobit vícemístným číslem, vybereme řádky odpovídající cifrám násobitele a uspořádáme je nad sebe od jednotek po cifry u nejvyšší mocniny deseti. Opět sčítáme po diagonálách. 2.3.4 Tabulky kvadrátů Už staří Babyloňané znali vzorce: ab = 1 2 ( (a + b) 2 a 2 b 2), ab = 1 4 ( (a + b) 2 (a b) 2). 17
Obrázek 2.13: Výpočet 4732 6 a 4732 13 pomocí Napierových kostí. V roce 1690 uvádí Johann Hiob Ludolf ve svém díle Tetragonometrie návod, jak pomocí tabulek kvadrátů násobit přirozená čísla. Všimněte si, že právě z babylonských vzorců je zřejmé, že pro výpočet součinu jakýchkoliv přirozených čísel stačí mít k dispozici dost velkou tabulku kvadrátů přirozených čísel. V roce 1817 Antoine Voisin vydává první takové multiplikační tabulky. A poté v roce 1833 vychází Kulikovy tabulky násobení a tabulky kvadrátů, které necitují Ludolfa a Voisina, protože Jakub Filip Kulik o práci svých předchůdců zřejmě nevěděl. Kulik vytvořil tabulky součinů dvojciferných přirozených čísel. Násobení přirozených čísel se pak díky nim zjednodušilo na pouhé sčítání, viz následující ilustrace. Chceme-li násobit 1743 krát 37, stačí najít v tabulce součin 43 37 a 17 37 a výsledky správně sečíst. 43 37 = 1 5 9 1 17 37 = 6 2 9 6 4 4 9 1 2.4 Počítačové násobení Násobení v binární soustavě a redundantní binární soustavě není pro člověka běžné. Lidé totiž díky deseti prstům provádějí výpočty v soustavě desítkové, tj. čísla zapisují pomocí mocnin desítky a cifer od 0 do 9. Se soustavou binární ovšem pracuje valná většina počítačů. 2.4.1 Binární soustava Každé přirozené číslo n lze právě jedním způsobem vyjádřit ve tvaru: n = 2 k + a k 1 2 k 1 +... + a 1 2 1 + a 0 2 0, 18
kde koeficienty a k 1,..., a 1, a 0 nabývají hodnot nula nebo jedna. Tomuto řetězci koeficientů říkáme binární zápis čísla n. Připomeňme, že binární zápis se získá hladovým algoritmem: 1. Chceme-li najít binární zápis čísla 13, podíváme se, jakou nejvyšší mocninu dvojky číslo 13 obsahuje. To je 2 3 = 8. 2. Poté od 13 odečteme 8 a pro získaný rozdíl 5 opět najdeme největší mocninu dvojky, kterou číslo 5 obsahuje. To je 2 2 = 4. 3. Na závěr spočteme rozdíl 5 4 = 1, a to je nultá mocnina dvojky. 4. Získáme 13 = 2 3 + 2 2 + 2 0, a tedy číslo 13 má v binární soustavě zápis 1101. Násobení v binární soustavě je velmi podobné nám známému klasickému násobení v desítkové soustavě. Například číslo jedenáct s binárním zápisem 1011 a číslo pět s binárním zápisem 101 se vynásobí následujícím způsobem: 1 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 Výsledek je 32+16+4+2+1 = 55. Všimněme si, že rychlost násobení odpovídá počtu jedniček v binárním zápisu násobitele (v našem případě jsou dvě jedničky v binárním zápisu 5), právě tolik sčítání totiž musíme provést. 2.4.2 Redundantní binární soustava Připust me nyní v binární soustavě cifry 1, 0 a 1. Zápisy čísel už nejsou jediné možné, soustava je redundantní. Například 15 = 8+4+2+1 a taky 15 = 16 1, tedy jak 1111 tak i 10001 jsou zápisy 15 v redundantní binární soustavě. Vyberme zápis s maximálním počtem nul. K tomu stačí aplikovat následující přepisovací pravidla, dokud je co přepisovat: 01111 10001 01111 10001 11 01 11 01 Zatímco průměrný počet nul ve standardním binárním zápisu je 1/2, v redundantním binárním zápisu s maximálním možným počtem nul jsou to 2/3. Jelikož je rychlost násobení úměrná počtu nul, je jasné, že redundantní binární soustava je pro násobení velkých čísel výhodnější. Na závěr ještě poznamenejme, že násobíme analogicky jako v klasické binární soustavě. Pouze u znamének dáváme pozor: při násobení cifer stejného znaménka má výsledek znaménko plus, při násobení cifer opačného znaménka má výsledek znaménko mínus. Tedy například násobení 11 a 5 proběhne následovně: 19
Výsledek je tedy 64 8 1 = 55. 2.4.3 Klasické násobení 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 Označuje násobení dvou přirozených čísel zadaných pomocí zápisů v bázi b, kde b je přirozené číslo větší nebo rovno 2. Binární zápis (b = 2) a desítkový zápis (b = 10) jsou speciální případy zápisu čísel v bázi b s ciframi 0, 1,..., b 1. Soustava s přirozeným základem Každé přirozené číslo n lze právě jedním způsobem vyjádřit ve tvaru: n = a k b k + a k 1 b k 1 +... + a 1 b 1 + a 0 b 0, kde koeficienty a k, a k 1,..., a 1, a 0 nabývají hodnot 0, 1,..., b 1 a a k 0. Řetězci a k a k 1...a 1 a 0 říkáme zápis čísla n v soustavě s bází (se základem) b. Podobně jako ve speciálním případě binární soustavy lze takový zápis získat hladovým algoritmem: 1. Chceme-li najít zápis čísla n v bázi b, podíváme se, jakou nejvyšší mocninu b k číslo n obsahuje a kolikrát ji obsahuje. To bude koeficient a k, který je jistě menší než b (jinak by n obsahovalo b k+1 ). 2. Poté od n odečteme a k b k a pro získaný rozdíl opět najdeme největší mocninu b j, kterou obsahuje, a jako a j označíme počet výskytů b j v rozdílu. 3. Všechny koeficienty mezi a j a a k (pokud nějaké takové jsou, tj. pokud je j menší než k 1) jsou nulové. Analogicky pokračujeme dále. Popišme nejprve algoritmus klasického násobení tak, jak by jej provedl počítač, a poté jej porovnejme s algoritmem tužky a papíru [6]. Algoritmus M (multiplication) Násobíme přirozená čísla U, V, kde u n 1...u 1 u 0 je zápis U v bázi b a v m 1...v 1 v 0 je zápis V v bázi b. Označme W = U V. Snadno si rozmyslíme, že délka zápisu W v bázi b bude maximálně m + n. Označme w m+n 1...w 1 w 0 zápis W. 1. Inicializace W a i, j Polož w n 1 =... = w 1 = w 0 = 0 a i = 0 a j = 0. 2. Násobení nulou Pokud v j = 0, pak polož w i+j = 0 a jdi na krok 6. 3. Inicializace i Polož i = 0, k = 0. 20
4. Násob a sečti Polož t = u i v j + w i+j + k. Pak polož w i+j = t mod b a k = [t/b], kde [x] je největší celé číslo, které je menší nebo rovno x a t mod b = t b[t/b] (zbytek po celočíselném dělení). 5. Cyklus na i Polož i := i + 1. Pokud i < n, jdi na krok 4. Jinak polož w i+j = k. 6. Cyklus na j Polož j := j + 1. Pokud j < m, jdi na krok 2. Jinak konec. Ilustrujme algoritmus M pro b = 10 a W = U V, kde U = 914 = u 2 u 1 u 0 a V = 84 = v 1 v 0 : 1. bod w 2 = w 1 = w 0 := 0 a i := 0 a j := 0. 3. bod k := 0. 4.+5. bod t := u 0 v 0 + w 0 + k = 4 4 = 16, w 0 := 6, k := 1, i := 1. 4.+5. bod t := u 1 v 0 + w 1 + k = 1 4 + 0 + 1 = 5, w 1 := 5, k := 0, i := 2. 4.+5. bod t := u 2 v 0 + w 2 + k = 9 4 = 36, w 2 := 6, k := 3, i := 3, w 3 := 3 (až sem shodný postup s násobením v ruce). 6.+3. bod j := 1, i := 0, k := 0. 4.+5. bod t := u 0 v 1 + w 1 + k = 4 8 + 5 = 37, w 1 := 7, k := 3, i := 1. 4.+5. bod t := u 1 v 1 + w 2 + k = 1 8 + 6 + 3 = 17, w 2 := 7, k := 1, i := 2. 4.+5. bod t := u 2 v 1 + w 3 + k = 9 8 + 3 + 1 = 76, w 3 := 6, k := 7, i := 3, w 4 := 7. 6.+3. bod j := 2 a konec. Výsledek: W = w 4 w 3 w 2 w 1 w 0 = 76776. Algoritmus M versus násobení s tužkou a papírem Při násobení na papíře tvoříme částečné součiny, které příslušně posunuté vlevo sepisujeme pod sebe a na závěr vysčítáme. Na počítači je výhodnější provádět násobení a sčítání současně - tak postupuje algoritmus M. Není těžké si rozmyslet, že t nabývá hodnot 0, 1,..., b 2 1 a přenos (carry) k nabývá hodnot 0, 1,..., b 1, proto víme, jak velké registry potřebujeme pro implementaci. Počítače navíc pracují s bází 2, bod 2. tedy ušetří práci, nastává průměrně v polovině případů. (Už z předchozí sekce víme, že v binární soustavě je rychlost násobení úměrná počtu nul v binárním zápisu násobitele.) Nevýhodou klasického algoritmu je jeho pomalost. Už pro m = n = 4 je možné násobit U V rychleji. Složitost algoritmu M Definujme nejprve elementární operace: 1. součet a rozdíl 1-místných čísel a případně přenos, 2. součin dvou 1-místných čísel s 2-místným výsledkem, 3. celočíselné dělení 2-místného čísla 1-místným za předpokladu, že kvocient i zbytek výsledku jsou 1-místné. 21
Počet takových operací udává složitost algoritmu. V případě algoritmu M lze dokázat, že složitost násobení čísel, jejichž rozvoje v bázi b mají délky m a n, je O(m n), tj. existuje kladná konstanta K taková, že pro libovolná dvě přirozená čísla je složitost jejich násobení algoritmem M menší než K m n. 2.4.4 Rychlé násobení Rychlé násobení je násobení se složitostí menší než násobení klasické. Snaha o zrychlení algoritmů se zesiluje ruku v ruce s rozvojem počítačů a speciálně snaha o maximální zrychlení násobení je dána potřebami kryptografie, kde je nutné násobit v přijatelném čase ohromná čísla (řádově 10 100 ). My popíšeme dvě rychlá násobení - Karacubovo násobení a Schönhageovo násobení v modulární aritmetice - založená na důvtipných myšlenkách a poměrně jednoduše popsatelná. Mezi rychlými algoritmy patří k těm nejstarším, ovšem algoritmy ještě rychlejší už jsou příliš technické. Zmiňme proto jen stručně, jaké jsou v dnešní době nejrychlejší algoritmy pro násobení přirozených čísel. V praxi se využívá Schönhageův Strassenův algoritmus (založený na rychlé Fourierově transformaci) z roku 1971. Tento algoritmus je rychlejší než Karacubův pro čísla mající řád alespoň 10 4. V roce 2007 převzal teoretické prvenství v rychlosti Fürerův algoritmus. V praxi se ale Fürerův algoritmus nevyužívá, protože začíná být rychlejší než Schönhageův Strassenův algoritmus až pro astronomicky velká čísla. Podobně je to s algoritmem autorů De, Saha, Kurur a Saptharishi z roku 2008. Zájemce si dohledá podrobnosti na internetu a v knize Donalda E. Knutha [6]. Poznamenejme, že jde o jednu z nejrespektovanějších publikací v oboru programování. Donald E. Knuth je průkopníkem oboru matematické algoritmické analýzy a významnou osobností v mnoha dalších oborech teoretické počítačové vědy. Karacubovo násobení Karacubovo násobení vyvrátilo domněnku, že složitost násobení dvou přirozených čísel s binárním rozvojem délky n je O(n 2 ). Tento názor razil ještě v roce 1960 na semináři moskevské univerzity zakladatel teorie složitosti algoritmů Andrej N. Kolmogorov. Semináře se účastnil i jeho student Anatolij A. Karacuba, který navrhl důvtipný algoritmus s nižší složitostí [4, 3]. Popíšeme algoritmus, který je založen na stejné myšlence jako původní Karacubův, ale je ještě trochu jednodušší. Chceme násobit dvě 2n-bitová čísla U s binárním zápisem u 2n 1... u 1 u 0 a V s binárním zápisem v 2n 1... v 1 v 0. Zapíšeme U, V následujícím způsobem U = 2 n U 1 + U 0 a V = 2 n V 1 + V 0. Platí tedy, že U 1 má binární zápis u 2n 1... u n a U 0 má zápis u n 1... u 1 u 0, podobně V 1 má binární zápis v 2n 1... v n a V 0 má zápis v n 1... v 1 v 0. Následující formule redukuje problém na 3 násobení n-bitových čísel, několik sčítání, resp. odečítání a posouvání binární čárky: U V = (2 2n + 2 n )U 1 V 1 + 2 n (U 1 U 0 )(V 0 V 1 ) + (2 n + 1)U 0 V 0. Ilustrujme Karacubův algoritmus pro U V, kde U = 210 a V = 119. Binární zápis U je 11010010 a binární zápis V je 01110111. 210 = U = 2 4 U 1 + U 0 = 2 4 13 + 2, 119 = V = 2 4 V 1 + V 0 = 2 4 7 + 7, kde U 1 = 13 má binární zápis 1101 a U 0 = 2 má binární zápis 0010, V 1 = V 0 = 7 mají zápis 0111. 22
Nyní určíme 3 součiny nejvýše 4-bitových čísel: U 1 V 1, (U 1 U 0 )(V 0 V 1 ), U 0 V 0. V tomto konkrétním případě je V 0 = V 1, a tedy prostřední součin je nulový. U 1 V 1 : 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 U 0 V 0 : 1 1 1 1 0 1 1 1 0 Na závěr zbývá provést násobení 2 8 a 2 4, což znamená přidání osmi, resp. čtyř nul na konec zápisu čísla, a sčítání. U V : U V = 2 8 U 1 V 1 + 2 4 U 1 V 1 + 2 4 U 0 V 0 + U 0 V 0. 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 Po konverzi do desítkové soustavy máme správný výsledek 210 119 = 2 14 + 2 13 + 2 8 + 2 7 + 2 4 + 2 3 + 2 2 + 2 1 = 24990. Není těžké dokázat, že složitost Karacubova násobení je O(n log 2 3 ). Číslo log 2 3 je přibližně rovno 1, 585, což je číslo menší než 2, a tedy jde skutečně o rychlé násobení podle naší definice. Adaptací na desítkovou soustavu lze převést násobení 8-místných čísel na násobení čísel 4-místných, které už dobří počtáři zvládnou zpaměti. Nezdá se však, že by takovou metodu používali zázrační počtáři, kteří v minulosti bavili obecenstvo násobením obrovských čísel zpaměti. Schönhageovo násobení v modulární aritmetice Schönhageovo násobení v modulární aritmetice sice není rychlejší než Karacubův algoritmus, ale je založeno na odlišných myšlenkách a na neobvyklé reprezentaci čísel, takže je rozhodně zajímavé do jeho tajů proniknout. Jeho základním stavebním kamenem je modulární aritmetika, u jejíhož zrodu stáli čeští vědci Antonín Svoboda (tvůrce prvního československého počítače SAPO a velmi významný průkopník informatiky nejen u nás) a Miroslav Valach. Nezávisle na nich přišel se stejnou myšlenkou také L. H. Garner. Modulární zápis Dosud jsme se seznámili jen se zápisy přirozených čísel v pozičních soustavách s přirozenou bází (případně jsme připustili záporné cifry). Nyní přijde naprosto odlišný zápis přirozených čísel. Necht jsou dána přirozená čísla m 1, m 2,..., m r. Pak modulárním zápisem nezáporného celého čísla U nazveme (u 1, u 2,..., u r ), kde u i je rovno U mod m i pro každé i od 1 do r. Připomeňme, že mod k znamená zbytek po celočíselném dělení číslem k a nabývá hodnot od 0 do k 1. Například 13 = 3 4 + 1, a tedy 13 mod 4 = 1. Ukažme si na příkladu takovou modulární reprezentaci. 23
Necht U = 26, r = 3 a m 1 = 2, m 2 = 3, m 3 = 5. Pak u 1 = 26 mod 2 = 0, u 2 = 26 mod 3 = 2, u 3 = 26 mod 5 = 1. Proto (0, 2, 1) je modulárním zápisem čísla 26. Aby takový zápis měl smysl, mělo by být možné původní číslo ze znalosti modulární reprezentace zrekonstruovat. To bez dodatečných podmínek možné není. Všimněme si, že čísla 56 a 26 mají stejný modulární zápis (0, 2, 1). Naštěstí platí následující známá Čínská zbytková věta: Necht a, u 1, u 2,..., u r jsou nezáporná celá čísla a necht m 1, m 2,..., m r jsou přirozená po dvou nesoudělná čísla. Pak existuje právě jedno U, které splňuje: 1. a U < a + m = a + m 1 m 2 m r, 2. (u 1, u 2,..., u r ) je modulární reprezentace U. Z této věty plyne, že když se omezíme na čísla od 0 do 2 3 5 = 30, pak mezi nimi právě jen číslo 26 má modulární reprezentaci (0, 2, 1). Modulární aritmetika V modulární aritmetice je možné paralelizovat sčítání a násobení. 1 Platí totiž, že pokud U a V jsou přirozená čísla s modulárními reprezentacemi (u 1, u 2,..., u r ) a (v 1, v 2,..., v r ) a obě leží mezi 0 a m = m 1 m 2 m r, pak U + V má modulární reprezentaci ((u 1 + v 1 ) mod m 1, (u 2 + v 2 ) mod m 2,..., (u r + v r ) mod m r ), U V má modulární reprezentaci ((u 1 v 1 ) mod m 1, (u 2 v 2 ) mod m 2,..., (u r v r ) mod m r ). Nevýhodou je, že nepoznáme, zda výsledek operace nevypadl z intervalu 0 až m. Navíc při pohledu na modulární reprezentace nepoznáme, které z čísel je větší. Proto potřebujeme rychlou konverzi, která číslům přiřazuje modulární zápis a zejména z modulárního zápisu rychle vyrábí zpět reprezentovaná čísla. Binární modulární aritmetika Jak uvidíme, takovou rychlou konverzi poskytuje vhodná volba modul m 1, m 2,..., m r. Následující nápad se zrodil v hlavě A. S. Fraenkela. Volme modula m i = 2 e i 1, kde e 1 < e 2 < < e r jsou po dvou nesoudělná. Nesoudělnost takových modulí je zaručena následující větou: Necht e, f jsou přirozená čísla. Pak 2 e 1 a 2 f 1 jsou nesoudělná, právě když e a f jsou nesoudělná. Konverze U na (u 1, u 2,..., u r ) Zapišme U ve tvaru U = a t A t + a t 1 A t 1 + + a 1 A + a 0, kde A = 2 e i. Uvědomme si, že binární zápis a 0 získáme tak, že vezmeme posledních e i bitů v binárním zápisu U, pro získání a 1 vezmeme předposledních e i bitů atd. Vlastně jen nasekáme binární zápis U od konce po e i bitech. Protože A = 1 mod (2 e i 1), dostaneme u i = (a t + a t 1 + + a 0 ) 1 To znamená, že máme-li k dispozici dostatek počítačových jednotek, můžeme výpočty provádět pro každou pozici modulární reprezentace na jedné z těchto jednotek, aniž bychom potřebovali informaci od ostatních jednotek. Uvědomte si, že toto u klasického sčítání a násobení nejde, dochází totiž k přenosu. 24
mod (2 e i 1). V desítkové soustavě máme analogii - tzv. casting out nines - vyloučení devítek. Například 789 mod 9 = 7 + 8 + 9 mod 9 = 6, což skutečně platí, protože 789 = 87 9 + 6. Ilustrujme tento algoritmus opět na příkladu. Necht U = 437, r = 3 a m 1 = 2 2 1 = 3, m 2 = 2 3 1 = 7, m 3 = 2 5 1 = 31. Zřejmě tedy e 1 = 2, e 2 = 3, e 3 = 5. Snadno ověříte, že binární zápis U je 110110101. 1. Pro získání u 1 rozsekáme binární zápis U po blocích délky 2 (musíme jej vpředu doplnit nulou, aby měl sudou délku), tj. 01, 10, 11, 01, 01. To znamená, že a 4 = 1, a 3 = 2, a 2 = 3, a 1 = 1, a 0 = 1. Dostáváme, že u 1 = 1 + 2 + 3 + 1 + 1 mod 3 = 2. 2. Pro získání u 2 rozsekáme binární zápis U po blocích délky 3, tj. 110, 110, 101. To znamená, že a 2 = 6, a 1 = 6, a 0 = 5. Dostáváme, že u 2 = 6 + 6 + 5 mod 7 = 3. 3. Pro získání u 3 rozsekáme binární zápis U po blocích délky 5 (musíme jej vpředu doplnit nulou, aby měl délku 10), tj. 01101, 10101. To znamená, že a 1 = 13, a 0 = 21. Dostáváme, že u 3 = 13 + 21 mod 31 = 3. Modulární reprezentace 437 je tedy (2, 3, 3). (Samozřejmě, že počítač sčítá binární, nikoliv desítkové, zápisy čísel a t, a t 1,..., a 0.) Konverze (u 1, u 2,..., u r ) na U Je o něco složitější. Probíhá ve dvou krocích: Nejprve je třeba najít r(r 1)/2 konstant c ij, kde indexy i, j nabývají hodnot od 1 do r, i < j a platí c ij m i = 1 mod m j. K tomu využijeme následující algoritmus. Pokud b e i mod e j = 1, pak (1 + 2 e i + 2 2e i + + 2 (b 1)e i ) (2 ei 1) = 1 mod (2 ej 1) }{{}}{{}}{{} c ij m i m j. Poté položíme U = v r m r 1... m 2 m 1 + + v 3 m 2 m 1 + v 2 m 1 + v 1, kde v 1 = u 1 mod m 1 v 2 = (u 2 v 1 )c 12 mod m 2 v 3 = ((u 3 v 1 )c 13 v 2 )c 23 mod m 3... v r = (((u r v 1 )c 1r v 2 )c 2r... )c (r 1)r mod m r Snadno se přesvědčíme, že takto spočtené U splňuje: 1. U je nezáporné číslo menší než m, 2. U mod m i = u i pro každé i od 1 do r. Ilustrujme i tento algoritmus na příkladu. Necht jsou dána modula m 1 = 2 2 1 = 3, m 2 = 2 3 1 = 7, m 3 = 2 5 1 = 31. Hledáme U s modulární reprezentací (2, 3, 3) takové, že 0 U < 3 7 31 = 651. 1. Nejprve najdeme konstanty c 12, c 13, c 23 takové, že (a) c 12 3 = 1 mod 7, (b) c 13 3 = 1 mod 31, 25
(c) c 23 7 = 1 mod 31. K tomu potřebujeme určit b N splňující: (a) b 2 mod 3 = 1 b = 2, (b) b 2 mod 5 = 1 b = 3, (c) b 3 mod 5 = 1 b = 2. Z algoritmu pro výpočet c ij pak víme, že 2. Odtud již snadno spočteme c 12 = 1 + 2 2 = 5, c 13 = 1 + 2 2 + 2 4 = 21, c 23 = 1 + 2 3 = 9. v 1 = 2 mod 3 = 2, v 2 = (3 2)5 mod 7 = 5, v 3 = ((3 2)21 5)9 mod 31 = 20. A na závěr U = 20 7 3 + 5 3 + 2 = 437. Schönhageovo násobení Nyní máme vše připraveno k tomu, abychom pochopili fungování algoritmu, který Arnold Schönhage v roce 1966 navrhl. Nejprve si všimněme, jak šikovně volí 6 modulí, která budou v jeho algoritmu vystupovat. m 1 = 2 6qk 1 1 m 2 = 2 6qk+1 1 m 3 = 2 6qk+2 1 m 4 = 2 6qk+3 1 m 5 = 2 6qk+5 1 m 6 = 2 6qk+7 1. Pro posloupnost q 0 = 1 a q k = 3q k 1 1, tj. q k = (3 k + 1)/2 pro každé k přirozené, jsou modula po dvou nesoudělná. Navíc platí, že při násobení p k = (18q k + 8)-bitových čísel nedojde k přetečení, tj. zůstaneme mezi 0 a m = m 1 m 2 m 6, protože m je větší než 2 2p k. Ted již samotný Schönhageův algoritmus. Chceme násobit přirozená čísla U a V, označme W = U V. Najdeme nejmenší p k tak, že násobená čísla jsou nejvýše p k -bitová. K p k najdeme příslušná modula. 1. Spočti u 1 = U mod m 1,..., u 6 = U mod m 6, v 1 = V mod m 1,..., v 6 = V mod m 6. 2. Vynásob u 1 v 1,..., u 6 v 6. 3. Spočti w 1 = u 1 v 1 mod m 1,..., w 6 = u 6 v 6 mod m 6. 4. Najdi 0 W < m takové, že W = w 1 mod m 1,..., W = w 6 mod m 6. Všimněme si, že každé z čísel u i, v i má maximálně 6q k +7 = 18q k 1 +1 < p k 1 bitů, a tedy že algoritmus převádí úlohu násobit p k -bitová čísla na násobení p k 1 -bitových čísel. To je podobná myšlenka jako v Karacubově násobení vedoucí ke snížení složitosti. Tentokrát je možné - i když pracné - dokázat, že složitost Schönhageova násobení je O(n log 3 6 ). Jelikož log 3 6 je přibližně 1, 63 < 2, jde opět o rychlé násobení, tj. se složitostí menší než O(n 2 ). 26
Kapitola 3 Dělení 3.1 Dělení s tužkou a papírem 3.1.1 Egyptské dělení Je stejně jako egyptské násobení založené na binárním zápisu, tentokrát ale podílu. Dělíme-li např. číslo 187 číslem 24, začneme vytvořením tabulky. V levém sloupci vypisujeme mocniny dvojky a v pravém jim náležející hodnoty vzniklé zdvojováním dělitele, než najdeme číslo nejbližší k dělenci, které je zároveň menší než dělenec. V našem případě je to číslo 96. Dál navíc v tabulce vypisujeme převrácené hodnoty mocnin dvojky a jim náležející hodnoty dělitele. Nyní se díváme na nejbližší násobek dělitele k číslu 187 a odečteme ho od něj. Zároveň mocninu dvojky jemu náležející vyznačíme. S číslem vzniklým odečtením postupujeme stejně. Na závěr sečteme všechny zakroužkované násobky dvojky a sečteme je. 187 : 24 1 24 187-96=91 + zakroužkujeme 4 2 48 91-48=43 + zakroužkujeme 2 4 96 43-24=19 + zakroužkujeme 1 1/2 12 19-12=7 + zakroužkujeme 1/2 1/4 6 7-6=1 + zakroužkujeme 1/4 1/8 3 1-0,75=0,25 + zakroužkujeme 1/32 1/16 1, 5 1/32 0, 75 Nyní zakroužkované mocniny dvojky sečteme a tím získáme přibližný podíl: 4 + 2 + 1 + 1/2 + 1/4 + 1/32 = 7 + 25/32. U čísel s omezeným rozvojem nakonec číslo zjistíme přesně. U čísel s neomezeným rozvojem ho můžeme jen upřesňovat tím, že budeme pokračovat v algoritmu. Pro počítání v běžném životě však zaokrouhlujeme a nepotřebujeme stoprocentně přesné číslo. Egypt ané si oblíbili počítání s tzv. kmenovými zlomky, což jsou zlomky s jedničkou v čitateli. Z výše popsaného způsobu dělení je jasné, že podíl získávali ve tvaru celého čísla a součtu kmenových zlomků. 27
3.1.2 Čínské početní dělení podle Sun Ziho Tento způsob dělení popisuje ve své tvorbě čínký matematik Sun Zi, žijící okolo 400 n. l. Velmi se podobá způsobu dělení, které se dnes učíme ve školách. Dělení, stejně jako čínské početní násobení, je založeno na postupném dělení a stálém přepisování jednotlivých kroků. Na ukázku budeme dělit číslo 47978 sedmi (uvádíme v čínských a arabských číslicích). 1. Začneme zapsáním dělence v jednom řádku a dělitele o řádek níže pod nejvyšší cifru dělence. Pokud nemůžeme cifru, pod kterou máme napsaného dělitelejím dělit, posuneme ho o jednu cifru vpravo. To děláme, dokud nemůžeme danou skupinu cifer dělit. V našem případě posuneme 7 o jedno místo a naznačíme tím dělení 47/7 (viz obrázek 3.1 a.). 2. Celočíselně vydělíme 47/7 a výsledek napíšeme o řádek nad dělence v úrovni dělitele (viz obrázek 3.1 b.). 3. Od 47 odetečme 6 7 a dělitele posuneme o další cifru vpravo (viz obrázek 3.1 c.). 4. Pokračujeme dělením 59/7 a výsledek napíšeme do horního řádku za 6, poté opět zjistíme zbytek po dělení a dělitele posuneme o další cifru vpravo (viz obrázek 3.1 d.). 5. Takto pokračujeme až do ukončení dělení (viz obrázek 3.1 e., f.). V našem případě bylo dělení celočíselné, pokud by nebylo, zapsal by se zbytek a dělení se ukončilo. Obrázek 3.1: Čínské početní dělení 47978 : 7. 28
3.2 Mechanické pomůcky 3.2.1 Soroban Při dělení na sorobanu musíme začít znázorněním dělence a dělitele. Z levé strany nejdříve znázorníme dělitele, necháme alespoň 2 sloupce volné a poté znázorníme dělence (viz sekce 2.3.1). Pokud tedy chceme dělit například 68947 číslem 73, měl by soroban vypadat, jak je znázorněno na obrázku 3.2. Obrázek 3.2: Znázornění čísel 73 a 68947 před dělením. Nyní již přejdeme k samotnému dělení. 1. Začneme celočíselným dělením 68 děleno 7, což je 9. Devítku znázorníme na sloupci před dělencem (viz obrázek 3.3 a.). 2. Nyní vynásobíme 7 krát 9 a výsledek odečteme od 68 (viz obrázek 3.3 b.). 3. Nakonec vynásobíme 3 krát 9, tj. 27, a odečteme od 59. Odečítáme o jednu cifru níže, než u předešlého, protože nyní odečítáme násobek jednotek (viz obrázek 3.3 c.). 4. Pokračujeme stejným způsobem dál, takže za 9 napíšeme 4 a poté odečteme 7 krát 4, tj. 28, od dělence (viz obrázek 3.3 d.). 5. Vynásobíme 3 krát 4 a odečteme od 44 (viz obrázek 3.3 e.). 6. Nyní opakujeme tento postup, dokud se nedostaneme na číslo, které už dále nemůžeme dělit, tj. na zbytek, který je menší než dělitel. V našem případě je výsledek 944 a zbytek 35, neboli 944 a 35/73 (viz obrázek 3.3 f.). Existuje jisté úskalí. Například při dělení 64947 číslem 73 bychom v 1. kroku dostali, že 1. cifra podílu je 9, po odečtení 7 9 od 64 by zbyla jednička, tj. v dalším kroku bychom 3 9 odečítali od 19 a dostali bychom záporné číslo! Řešení problému ale není složité. Ve chvíli, kdy by vyšla záporná cifra, bychom se vrátili o krok zpět a místo 9 zvolili číslo o jedničku menší, tj. 8. 3.2.2 Napierovy kosti Dělení pomocí Napierových kostí (popsány v sekci 2.3.3) je v mnoha ohledech velmi podobné našemu dělení. Pokud například chceme vydělit číslo 256436 číslem 47, vybereme si z Napierových kostí kosti násobků čtyř a sedmi. 29
Obrázek 3.3: Dělení 68947 : 73 na sorobanu. Obrázek 3.4: Dělení 256436 : 47 pomocí Napierových kostí. 30
2 5 6 4 3 6 : 47 = 5456 + 4/47 2 3 5 2 1 4 3 6 1 8 8 2 6 3 6 2 3 5 2 8 6 2 8 2 4 1. Vedle tabulky si vypíšeme násobky 47. 2. Od nejvyšších cifer vždy odečítáme co největší násobek 47, koeficient násobku zapíšeme do výsledku. 3. Opakujeme tento postup, dokud se nedostaneme na číslo menší než dělitel. Zbytek zapíšeme jako zlomek. 31
Kapitola 4 Výpočet druhé odmocniny 4.1 Výpočet druhé odmocniny s tužkou a papírem 4.1.1 Numerický výpočet druhé odmocniny Výpočet druhé odmocniny byl před několika lety součástí základního vzdělání na školách. Nyní se však více než na svou hlavu spoléháme na kalkulačku a tento jednoduchý numerický výpočet založený na násobení a odečítání upadá v zapomnění. Výpočet si ukážeme na odmocnění čísla 35217261. 1. Začneme rozdělením čísla na dvojice cifer. 2. Podíváme se na první dvojici a přemýšlíme, jaká největší druhá mocnina nějakého čísla se do ní vejde. V našem případě je to 5 2. 3. 25 odečteme od 35 a číslo 5 napíšeme do mezivýsledku. 4. Pokračujeme opsáním další dvojice. Za toto číslo napíšeme oddělující značku : a dvojnásobek našeho mezivýsledku. 5. Druhou cifru odmocniny hledáme jako maximální z splňující což zjednodušíme na tvar (5z) 2 = (50 + z) 2 3521, 100 z + z 2 = 10z z 1021. 6. V našem případě je maximální takové z = 9. Číslo 9 tedy napíšeme za 5 do mezivýsledku a za naše číslo po znaménku dělení. 7. Dále vynásobíme 109 9 a odečteme od 1021. 8. Pokračujeme opět opsáním další dvojice, tedy za 40 píšeme 72. Za toto číslo napíšeme oddělující značku a dvojnásobek našeho mezivýsledku, tedy 118. 9. Třetí cifru odmocninu dostaneme jako maximální z splňující což zjednodušíme na tvar (59z) 2 = (590 + z) 2 352172, 1180 z + z 2 = 118z z 4072. 32
10. V tomto případě je maximální z = 3. Číslo 3 tedy napíšeme za 59 do mezivýsledku a za číslo za oddělovacím znaménkem. 11. Pokračujeme stejně jako v minulých krocích. 12. Pokud bychom chtěli dostat ještě přesnější hodnotu odmocniny, nic nám nebrání pokračovat dál. Za mezivýsledek by se napsala desetinná čárka a za zbytek dvě nuly, tj. 490500, a pokračovali bychom analogicky dále. 3 5 2 1 7 2 6 1 = 5 9 3 4 2 5 1 0 2 1 : 109 9 9 8 1 4 0 7 2 : 1183 3 3 5 4 9 5 2 3 6 1 : 11864 4 4 7 4 5 6 4 9 0 5 Tento algoritmus si ještě předvedeme na výpočtu druhé odmocniny ze 3. 0 3 = 1, 7 3 2 1 2 0 0 : 27 7 1 8 9 1 1 0 0 : 343 3 1 0 2 9 7 1 0 0 : 3462 2 6 9 2 4 1 7 6 Tímto algoritmem můžeme teoreticky pokračovat až do nekonečna, pokud se jedná o odmocniny s neomezeným desetinným rozvojem. 4.1.2 Indický výpočet druhé odmocniny Většina indických matematických pravidel a návodů je velmi stručná, u výpočtu odmocniny je však návod velmi krátký i na indickou úroveň. Poučka podle Šrídhary zní (originál je bez doplňujícího textu v závorkách): Odečti (největší možný) čtverec od (posledního) lichého místa, vyděl zbytek zdvojnásobenou (pod nejbližší místo) posunutou odmocninou; podíl umísti na řádce (zdvojnásobené odmocniny) a po odečtení jeho čtverce zdvojnásob (podíl). Potom posuň obdržené (v řádku zdvojnásobené odmocniny) číslo o jedno místo kupředu a děl jím jako dříve. (Po opakování operace do konce) vezmi polovinu zdvojnásobeného čísla. ([2], str. 119). My si výpočet odmocniny předvedeme na výpočtu 325142. 33
1. 3 2 5 1 4 2 2. 7 5 1 4 2 1 0 3. 5 1 4 2 1 0 7 4. 2 4 2 1 1 4 5. 2 4 2 1 1 4 6. 2 4 2 1 1 4 0 1. Začneme znázorněním lichých a sudých čísel pomocí a. 2. Hledáme největší druhou mocninu menší než 32, v našem případě to je 25. 25 odečteme od 32 a zdvojnásobenou odmocninu (tedy 10) zapíšeme pod zbytek hned zkraje, v našem případě pod 75. 3. Nyní 75 vydělíme 10, výsledek zapíšeme za 10 a 75 nahradíme 5, tj. zbytkem po dělení. 4. Od 51 odečteme mocninu podílu, tj. 49, a samotný podíl zdvojnásobíme na 14. 5. Mezivýsledek posuneme o jedno místo doprava. 6. Dělíme 24 číslem 114, což je 0. Nulu napíšeme za 114. Nyní bychom měli opakovat body 4. a 5., vyšla nám ale nula, a tak bychom posunuli mezivýsledek o další místo doprava. Tím bychom se ale dostali za desetinnou čárku, což Indové nedělali, nýbrž ukončili výpočet odmocniny vydělením mezivýsledku dvěma. Výsledek: 570. Ukončení výpočtu před desetinnou čárkou neznamená, že tento postup nadále neplatí. Pokračovali bychom totožným postupem teoreticky do nekonečna nebo do ukončeného rozvoje, pozor pouze na desetinnou čárku: 34
2 4 2 0 1 1 4 0 1 4 0 0 1 1 4 0, 2 1 4 9 6 1 1 4 0, 4 1 4 9 6 0 1 1 4 0, 4 Dostáváme tedy lepší odhad odmocniny 570, 2 atd. Všimněme si drobného úskalí indického postupu. Při hledání druhé cifry z (a podobně i dalších cifer) odmocniny Indové nevychází z podmínky 10z z 751, ale ze slabší podmínky 10 z 75. Proto jejich postup selže např. při výpočtu 324142. 1. 3 2 4 1 4 2 2. 7 4 1 4 2 1 0 3. 4 1 4 2 1 0 7 4. 8 4 2 1 1 4 Nápravu ale zjednáme snadno, vrátíme se do předchozího 3. kroku a místo 7 zvolíme číslo o jedničku menší, tedy 6. 4.1.3 Čínský výpočet druhé odmocniny Výpočet pro zjištění druhé odmocniny se v Číně podobal numerickému výpočtu druhé odmocniny. Původní čínské pravidlo zní (bez doplňujícího textu v závorkách): Stanov obsah (čtverce) jako dělenec. Vezmi jednu počítací tyčinku a jdi přes jeden (sloupec). Posuň suo-te. První (vybranou číslici odmocniny) násob číslem t ien-suan, to je dělitel. Rozděl (jím). Po dělení zdvojnásob dělitel, to je stálý dělitel. Vrat ho (o jeden dílek, dostaneš) příslušný (pevný) dělitel. Dále vrat umístěnou počítací tyčinku o krok. (Pokračuj) jako dříve. Jednu vybranou (cifru) tím násob. Suo-te přičti k (příslušnému) pevnému děliteli jako dříve. Jednu vybranou (cifru) tím násob. Suo-te přičti k (příslušnému) pevnému děliteli a děl. Dále jako dříve. ([2], str. 51) 35
Nyní si celý algoritmus předvedeme podrobněji na příkladu 173212. Řekněme si ještě, že všechny výpočty byly prováděny na tzv. počítací desce (viz sekce 6.5). fang 1 7 3 2 1 2 š fa 1 0 0 0 0 t ien suan 4 fang 1 7 3 2 1 2 š 4 0 0 0 0 fa 1 0 0 0 0 t ien suan 4 fang 1 3 2 1 2 š 8 0 0 0 fa 1 0 0 t ien suan 4 1 fang 1 3 2 1 2 š 8 1 0 0 fa 1 0 0 t ien suan 4 1 fang 5 1 1 2 š 8 2 0 fa 1 t ien suan 4 1 6 fang 5 1 1 2 š 8 2 6 fa 1 t ien suan 4 1 6 fang 1 5 6 š 8 3 2 fa 1 t ien suan 1. Napíšeme odmocňované číslo do řádku š. Na řádku t ien suan zaznačíme číslo 10000, kterým naznačíme největší lichou cifru dělence a které nám pouze ukazuje aktuální pozici ve výpočtu, jinak je k výpočtu nepotřebujeme. 2. Nyní hledáme největší možné číslo, jehož mocnina je menší nebo rovna 17, což je 4. 4 napíšeme do řádku fang a fa na úroveň t ien suan. 3. Dále vydělíme 173212 číslem fa (tj. 40000) a na řádek š napíšeme zbytek po dělení. Nakonec f a zdvojnásobíme a posuneme o jedno místo doprava. Posuneme t ien suan o dvě místa doprava. 36
4. Dělíme š číslem fa. Výsledek, tj. jednička, napíšeme do řádku fa za čtyřku a do řádku fang za osmičku. 5. Vydělíme š číslem fa a zbytek po dělení napíšeme do řádku š. F a posuneme o jedno místo a t ien suan o dvě místa doprava. Nakonec jedničku v řádku fa zdvojnásobíme. 6. Postupujeme totožně podle kroků 4. a 5. napíšeme do řádku fang a fa. Š vydělíme fa a dostáváme šestku. Tu 7. Nakonec znovu vydělíme š číslem fa a zbytek po dělení napíšeme do řádku fa. 8. Teoreticky bychom mohli pokračovat ve výpočtu posunutím fa o jedno místo a t ien suan o dvě místa doprava. To však Číňané nedělali a ukončili výpočet zaokrouhlením. 37
Kapitola 5 Sčítání 5.1 Sčítání s tužkou a papírem 5.1.1 Čínské sčítání Při sčítání si Číňané nejprve poskládali obě čísla vedle sebe a poté postupně sčítali čísla od nejvyšších cifer po nejmenší tak, že od jednoho čísla cifry odečítali a k druhému je přičítali. Sčítání zapisovali zdola nahoru a v nejvyšším řádku měli konečný výsledek. Tento postup si předvedeme na sečtení čísel 9762 a 8423. Uvádíme ho v čínských číslicích poskládaných z jednotlivých tyčinek a v přepisu pomocí arabských číslic ([2], str. 25). Výsledek: 18185. Obrázek 5.1: Výpočet 9762 + 8423 čínským způsobem. 38
5.2 Mechanické pomůcky 5.2.1 Soroban Pokud chceme pomocí sorobanu sečíst dvě čísla, musíme si nejdříve jedno z nich na sorobanu znázornit. Chceme-li sečíst 4862 a 8359, znázorníme na sorobanu 4862 (viz obrázek 5.2 a.). Obrázek 5.2: Sčítání 4862 + 8359 na sorobanu. Nyní chceme k 4862 přičíst číslo 8359. 1. Přičteme 8 k 4 a získáme 12. Na místo 4 dáme 2 a ve sloupci nalevo znázorníme 1 (viz obrázek 5.2 b.). 2. Pokračujeme přičtením 3 k 8, získáme 11. Jednu jedničku dáme na místo 8 a druhou přičteme ke dvojce ve sloupci nalevo, takže získáme 3 (viz obrázek 5.2 c.). 3. Tímto způsobem pokračujeme u zbylých cifer. Výsledek: 13221 (viz obrázek 5.2 d.). Takto můžeme sčítat čísla až do 10 18. Soroban je v Japonsku stále velmi oblíben a učí se na něm počítat většina dětí na základních školách. Používá jej ale i dost dospělých, kteří na něm často počítají rychleji než na kalkulačce ([18], [16]). 5.2.2 Sčítání na linách Je totožné s naším nynějším, běžně používaným sčítáním pod sebou, pouze papír a tužka jsou nahrazeny deskou a kameny (viz popis lin v sekci 2.3.2). Sčítání zahájíme znázorněním čísel v jednotlivých sloupcích. Například sečteme čísla 457, 236 a 7512 (viz obrázek 5.3). Sčítání začneme od jednotek. Sečteme 7 + 6 + 2 = 15. Pětku znázorníme v okně jednotek a jedničku si zapamatujeme (viz obrázek 5.3 a.). Poté sčítáme další řádek, nyní desítek, a nezapomeneme na jedničku z předchozího mezivýsledku. Získáme 10, druhé políčko tedy zůstane prázdné a jedničku si zapamatujeme. Tímto způsobem pokračujeme až k výsledku: 8205 (viz obrázek 5.3 b.). 39
Obrázek 5.3: V horní části je zaznačení čísel 457, 236 a 7512 na početní desce. V dolní části je sčítání 457 + 236 + 7512 na linách. 40
Kapitola 6 Úroveň matematiky starých kultur Již od dob, kdy člověk začal vnímat sám sebe a začal přemýšlet o tom, co je kolem něj, musel neodmyslitelně dojít k potřebě říci, kolik čeho je, kolik co váží a měří. A když poprvé někdo vyškrabal na zed tři mamuty, již můžeme říci: Ano, tady jsou začátky matematiky, tedy snahy zachytit nějakou skutečnost pomocí čísel. Rozvoj matematiky probíhal nerovnoměrně po celé Zemi. Matematika vždy šla ruku v ruce s pokrokem a žádná velká civilizace se bez ní neobešla. Od 6. tisíciletí př.n.l. se na území od Egypta přes Mezopotámii až po Čínu rozpadá prvotně pospolná společnost. Vznikají zde otrokářské společnosti, které můžeme později pozorovat v Americe u Inků, Aztéků a Mayů. Tato novější forma vlády vznikala tam, kde byly lepší klimatické a přírodní podmínky, tedy tam, kde je možnost produkce více jídla než pro zemědělce samotné. Řemeslná výroba se odděluje od zemědělství, půda je rozdělována do soukromého vlastnictví, obchod stoupá na důležitosti. Celá společnost se stává od tohoto období závislá na matematice a na čím dál složitějších výpočtech. Musí se přece vědět, kolik je třeba odvést na daních, kolik co stojí a kolik si čeho kupuji nebo mám. 6.1 Poziční a nepoziční soustavy V celé práci byly používány všechny zápisy výpočtů v desítkové poziční soustavě, tj. v námi nejpoužívanější soustavě. Málokdo si dnes připustí práci či vůbec existenci jiné soustavy než naší desítkové poziční nebo přinejhorším dvojkové používané ve výpočetní technice. Právě nepřipouštění si jiné soustavy souvisí s naší výukou, ve které se o jiných soustavách nic nedozvídáme. Trvalo ale dlouhou, často přerušovanou dobu, než naše číselná soustava spatřila světlo světa. V nepozičních soustavách musel existovat speciální znak pro každou mocninu desíti, tedy za předpokladu, že byla využívána desítková soustava. Používaly se například i čtyřkové, pětkové nebo šedesátkové soustavy. V těchto soustavách také chyběl symbol pro nulu, jednotlivá čísla pak vznikala kladením jednotlivých symbolů za sebe, aniž by bylo nutné dbát na jejich vzájemné pořadí. Základním předpokladem pro poziční soustavy byl objev nuly. K tomu dochází kolem roku 628 indickým učencem Brahmaguptou. S poziční nulou má v zápisu čísla každá číslice specifické postavení k ostatním číslicím, protože na pozici číslice závisí její násobek s mocninami desítek, tj. jedna cifra znamená jednotky (tedy cifra 10 0 ), další v pořadí desítky (cifra 10 1 ), další tisíce (cifra 10 2 ), atd. Pokud některá mocnina chybí, vyplní se její místo v zápisu nulou. Poziční zápis čísel má obrovskou výhodu: stačí nám deset 41
symbolů (včetně nuly) pro zápis libovolně velkého čísla a práce v této soustavě je mnohem snazší než v nepozičních soustavách. 6.2 Egypt Pyramidy, postavené již okolo let 3600-2700 př.n.l., jsou pomníky a nespornými důkazy úrovně egyptské matematiky. Ke stavbě takových objektů bylo zapotřebí počtů s velkými čísly a jednodušších geometrických operací. V Egyptě se tyto znalosti využívaly také při stavbě zavlažovacích kanálů, měst, přehrad a vodních nádrží. Také bylo třeba sčítat obyvatelstvo, polnosti a veškerý majetek, protože zde existovala centralizovaná vláda pod záštitou faraona, které se odváděly daně. Velkou roli hrál také přesný kalendář, podle kterého se určovalo období rozvodňování Nilu. Obrázek 6.1: Symbolický zápis čísla 21623. Egypt ané již znali nepoziční desítkovou číselnou soustavu. Měli speciální symbol pro číslo 1 a pro mocniny 10 až po 10 7 (např. milión se značil symbolem praboha Hh, který nese oblohu nad zemí). Ostatní čísla se značila opakováním znaků pro mocniny deseti a jejich kladením za sebe. Egypt ané psali zprava doleva, stejné symboly kladli za sebe maximálně čtyři, poté udělali mezeru. Učenci Egypta byli písaři, kteří zastávali většinu důležitých světských funkcí. Právě proto to bylo jedno z nejlukrativnějších zaměstnání. Naučení Chetiho Písařskému umění se věnuj s láskou! Věz, že není nad písařské umění. Písařské umění musíš milovat víc než svou matku. Před tvým pohledem bude krása. Toto umění je větší než každý jiný úřad a v zemi nemá obdoby. Věz, každé povolání má představeného. Jen písař je představený sám sobě. Věz, že není písaře, kterému by se nedostávalo jídla, statků z královského domu, života, blahobytu, zdraví... Jeho otec a matka velebí boha, že ho postavil na cestu života ([1], str. 171). Egypt ané jistě znali základní čtyři aritmetické operace, které si ulehčovali skládáním kamínků. Kromě toho byli zběhlí v počítání se zlomky. Jejich rozvoj si vynutila potřeba počítání kalendáře. Měsíc rozdělili na třicet třicetin - dnů. Složitější zlomky skládali z tzv. kmenových zlomků (zlomků s čitatelem rovným jedné), z nichž nejstarší byly zlomky 1/2, 1/4, 1/8, 1/16,..., tedy zlomky, v jejichž jmenovateli byly mocniny dvou. Egyptská a stejně tak i všechny ostatní starověké civilizace neznaly symboliku. Egypt ané sice řešili mnohé úlohy podobné těm našim, měli ale zadání i výpočet ve slovní podobě. V úlohách hospodářského charakteru se objevovaly objemy i povrchy těles a mnohé geometrické otázky. Celkově byla egyptská matematika na obstojné úrovni. Neexistovaly sice žádné obecné vzorce a k mnohým výsledkům se docházelo čistě empirickou cestou, pro nejčastější typy 42
příkladů ale existovaly vzory řešení. Ty by se mohly považovat za prapůvodní počátky algebraických metod. Egyptská matematika používala podobné výpočetní metody jako matematika babylonská, z čehož lze usuzovat, že spolu měly obě kultury styky. Později měla egyptská matematika vliv na formování matematiky řecké ([5]). 6.3 Mezopotámie Již okolo 4. tisíciletí př.n.l. se na území nížin řek Eufrat a Tigris nacházely dva silné otrokářské státy s rozvinutým zemědělstvím a řemeslnou výrobou. Zemědělství se opíralo o umělé zavlažování a o pluh. Při výstavbě měst se používaly přímé, na sebe kolmé ulice. Stupňovité chrámy vzdáleně připomínaly pyramidy. Kolem 2. tisíciletí př.n.l. byly národy na tomto území podmaněny Babyloňany. Novým kulturním, obchodním a administrativním centrem se stal Babylon. Administrativní oporou Babylonu byli opět písaři, největší světští vzdělanci. Psali na hliněné tabulky vymačkáváním jednotlivých symbolů. Poté se tabulky vysušily na slunci. Babyloňané většinou využívali šedesátkovou soustavu, znali ale i soustavu desítkovou. Psali klínovým písmem. Jednotlivé znaky se často lišily pouze velikostí symbolu či podle okolních znaků. Celkově platila nejednotnost zápisu, což nám nyní velmi ztěžuje práci při překladu tabulek s matematickými či astronomickými texty. Matematika Babylonu byla pokročilejší než matematika egyptská. Dochovaly se tisíce tabulek s matematickými texty, bohužel je zatím přeložena jen nepatrná část z nich. Víme, že znali čtyři základní aritmetické operace, řešili kvadratické rovnice, využívali zlomky. Pro zlomky měli speciální pomocné tabulky se základními násobky zlomků. Právě při počtech se zlomky dávali přednost soustavě šedesátkové. Taktéž se počítalo s procenty a dochovaly se tabulky s příklady, které bychom nyní řešili pomocí algoritmů, Babyloňané je ale nejspíše neznali a řešili je postupným zkoušením a přibližováním se k výsledku. Zpočátku se zdálo, že geometrie nebyla v Mezopotámii na vysoké úrovni. To se však změnilo v roce 1939, kdy byly v Suzách objeveny nové klínopisné tabulky. Z nich se dozvídáme, že geometrie v Babylonu rozvinutá byla. Počítaly se poloměry opsaných a vepsaných kružnic, například do trojúhelníků. Hodnota π byla určena jako 3 + 7/60 + 30/60 2 = 3, 125 (tj. s odchylkou menší než 1, 7%) Mezi matematikou Egypta a Babylonu můžeme najít mnoho společného ze dvou důvodů. Prvním je, jak již jsme zmiňovali, že spolu byly nejspíše obě země v kontaktu, druhým je podobná forma vlády, která požadovala řešení stejných úloh - tvorba kalendáře, vyměřování pozemků, daní apod. Dá se také předpokládat, že mnohé matematické principy Babylonu a Egypta převzali i Indové a Řekové, možná i Číňané, později pak Arabové a Evropané ([5]). 6.4 Idiánské kmeny Ameriky Populace na americkém kontinentu byla dlouho oddělena od vývoje Asie a Evropy. První otrokářské státy zde vznikají až na počátku našeho letopočtu. Největšího rozkvětu pak dosáhly okolo 4.-6. stol. n.l. Vládu říší drželi ve svých rukou velekněží. Mayové již od 4. stol. př. n. l. používají poziční číselnou soustavu se znaky pro čísla 0 19 a se základem 20. Čísla psali jako ostatní text do sloupců. 43
Obrázek 6.2: Mayská číselná soustava. Většina matematických textů Mayů se nedochovala v důsledku kolonizace Španěly, kteří spálili všechny původní spisy. Můžeme se ale domnívat, že matematika byla na vysoké úrovni. Počítali velmi přesně kalendář. Rok byl tvořen z 18 20 = 360 dní a 5 závěrečných dní. Rozdíl poté dorovnávali přestupnými roky jako dnes my. Znali také mnohá souhvězdí, Polárku, počítali budoucí zatmění slunce, velmi přesně popsali pohyby Venuše ([5]). Aztékové a Inkové na území Mexika a Peru měli podobné znalosti matematiky jako Mayové. Aztékové využívali dvacítkovou nepoziční soustavu. Obrázek 6.3: Aztécká číselná soustava. 44
Inkové měli uzlové písmo zvané kipu. Tím zapisovali jak kalendář, tak i účetnictví a daně. Po Aztécích a Incích se dochovaly pouze hmotné památky, pozoruhodná architektura, zavlažovací systémy, silnice. Španělé počátkem 16. století zničili vše, co se dalo. 6.5 Čína První zmínky o čínské matematice týkající se především sestavování kalendáře máme už z období kolem poloviny 2. tisíciletí př. n. l. Již v tomto období bylo hlavní obživou obyvatelstva zemědělství a s ním spojená potřeba kalendáře. Výpočty při tvorbě kalendářů dokazují dobré aritmetické znalosti Číňanů, přesto nemáme žádné hmatatelné důkazy o vývoji matematiky téměř do počátku našeho letopočtu. První dochované dílo Matematika v devíti kapitolách již obsahuje souhrn mnoha znalostí. Kolem roku 800 n. l. za vlády dynastie Tchang byla Čína největší říší. Astronomická pozorování v té době dosahují vysoké přesnosti. Například oběh planety Saturn kolem Slunce byl určen na 28,51 let, což je jen o 0,05 roku větší hodnota než skutečná. V 7. století byl vynalezen knihtisk a ve stejném století je také zahájena stavba velkého kanálu spojujícího sever země s jihem. Tento kanál byl dokončen až v 18. stol. v délce 1700 km. Vyučování matematiky se v Číně přikládal velký význam. Již od 10 stol. př. n. l. se vyučovala matematika u dětí od 6 let. Obtížné matematické vzdělání a s ním spojené státní zkoušky získaly na vážnosti od 5. stol. n. l. Od 10. stol. př. n. l. se objevují číslice na keramických a bronzových předmětech či na mincích. Již v této době se používá desítková poziční soustava. Číslice znamenající hodnotu jednotek byly psány svisle, desítky poté horizontálně. Cifry stovek se psaly jako cifry jednotek a cifry tisíců opět jako cifry desítek. Obrázek 6.4: Čínská číselná soustava. 45
Matematické úkony Číňané většinou zaznamenávali kladením tyčinek na počítací desku. Tyčinky byly velké do 15 centimetrů, vyráběly se ze dřeva, kovu či slonoviny. Čínské číslice mají původ právě v kladení tyčinek. Počítací deska nebyla ničím výjimečná, jednalo se pouze o dostatečně velkou rovnou plochu. Znalost malé násobilky se stala součástí základního matematického vzdělání. Byla objevena řada tabulek, které obsahovaly jednotlivé součiny. V Číně také bylo hojně využíváno kuličkové počítadlo suan-pchan podobné evropskému abaku, které nejspíše posloužilo za předlohu japonskému sorobanu. Právě obliba počítadla nejspíše zapříčinila pozdní zavedení znaku pro nulu, která se poprvé objevuje až ve 13. století. Čínská matematika na přelomu tisíciletí již počítala celou řadu úloh. V knize Matematika v devíti kapitolách nalézáme úlohy s poměry, lineárními rovnicemi a jejich soustavami, zlomky, výpočty objemů a obsahů ([2], od str. 18). 6.6 Starověká Indie Již ve 3. tisíciletí př.n.l. nacházíme v okolí Indu památky o rozvinuté společnosti. V blízkosti vrchoviny Mohendžo-daro se nacházelo na svou dobu překvapivě velké a dobře řešené město. Kolmé ulice, kanalizace, zavlažovací systémy, to vše nasvědčuje tomu, že tehedejší společnost měla dobré znalosti matematiky a nejspíše i astronomie. Bohužel se však žádné matematické texty nenašly a objevené piktografické nápisy na předmětech nejsou doposud vyluštěny. Celé město bylo z nám neznámých důvodů opuštěno kolem poloviny 2. tisíciletí př.n.l. a na uvolněná území přichází kmeny árijců (v jejich jazyce urození ). Počátkem 1. tisíciletí př.n.l. bylo hlavní obživou obyvatel zemědělství s čímž souvisí výstavba zavlažovacích systémů a astronomie pro určení každoročně se opakujících záplav. O století později nacházíme první zmínky o stycích s Asyrií a Babylonií. Později pak kolem 6. století př.n.l. i s rychle se rozvíjející antickou Evropou. Kolem 1. století př. n. l. se indičtí vyslanci dostávají do Říma a Číny, v této době se také nejspíše dostává buddhismus z Indie do Číny. Největší rozkvět vědy nastává od 4. století, kdy již fungují v několika městech univerzity a řada nižších škol. Vzniká celá řada anstronimických děl, které se částečně zmiňují i o matematických výpočtech. Mimo to jsou proslulé školy humanitních věd, teologie, filozofie i přírodních věd. Matematika měla v Indii vždy velkou vážnost, dokonce se ji podle pověstí začal učit Buddha v osmi letech. Dochoval se nám dokonce chvalozpěv na matematiku z 9. století od barda Mahávíra. Matematické texty nalézáme přibližně od 6. století. n.l. Kromě základních operací běžně používali zlomky, znaly výpočet druhé odmocniny a přibližný výpočet třetí odmocniny. Také se řešily různé druhy rovnic, jejichž zadání většinou vycházelo z geometrických úloh. Například byla známa i Pythagorova věta. Největším přínosem indické matematiky nejspíše bylo zavedení desítkové poziční soustavy a její pozdější rozšíření do světa. Již od 2. století př.n.l. existovaly speciální symboly pro číslice 1 9. Prozatím ale stále existovaly speciální symboly pro čísla 10, 20, 30, 40... a čísla se většinou tvořila součtem jednotlivých čísel napsaných za sebou (stejně jako v římském zápisu čísel). V tomto období vedle sebe existovalo několik typů zápisů čísel, ve kterých byla velká nesourodost, čemuž napomáhalo i částečné prolínání jednotlivých zápisů. Například ze zápisu indických číslic kharóšthí (nepoziční desítková soustava) si lze uvědomit, že původní číselné soustavy v Indii musely být čtverkové. 46
Obrázek 6.5: Indická číselná soustava kharóšthí. Kolem 6. století n.l. se objevují první zápisy nuly v matematických textech, což je jeden z nejdůležitějších okamžiků ve vývoji matematiky, protože objevení nuly přímo vede k pozičním soustavám. Ta se v Indii objevuje kolem 9. století, kdy dochází k dovršení vývoje desítkové poziční soustavy. 6.7 Arabský svět S rozpadem Římské říše a nástupem nové, netolerantní křest anské víry hledají řečtí i římští učenci azyl mimo Evropu. Ten nejdříve nacházejí v Byzantské říši, ovšem i zde časem posiluje křest ansntví a nepřátelství proti jiným vírám a myšlenkovým proudům. V roce 529 nechává byzantský císař Justinián zavřít athénskou školu platoniků, kteří nacházejí azyl v rychle se rozvíjející Arabské říši. Do 8. století n.l. Arabové ovládli Malou Asii, Kavkaz, Střední Asii, Severní Afriku a Pyrenejský poloostrov. Ke konci 8. století se mnoho evropských, ale i indických či babylonských učenců soustřed uje do Bagdádu. Právě na znalostech těchto zahraničních učenců se tvoří základy a další rozvoj arabské vědy. V Bagdádu se zakládá velká knihovna obsahující opisy děl až z Byzance, kam byla pod záštitou chalífa poslána skupina písařů. V době největšího rozkvětu obsahovala okolo 400 000 svazků. Ve městě také existovala celá řada menších knihoven a knižních obchodů. Zatímco Evropa prožívala dobu temna, arabský svět prohluboval vědomosti ve všech rovinách. Nejinak tomu bylo i u matematiky. Je ironií, že mnoho děl se dostalo do arabské říše po překladu z řečtiny či latiny a znovu se do Evropy vrací jako překlady z arabštiny do latiny. Dlouhou dobu byla využívána šedesátková soustava, která se zde udržela až do 9. století. První dílo, které popisovalo desítkovou soustavu a operace v ní, byl Al-Chwárizmího aritmetický traktát. Ten se bohužel dochoval pouze v neúplném latinském překladu z poloviny 12. století. Přepis také obsahuje mnohé chyby a nové číslice jsou prostě vynechány. Spis je uložen v univerzitní knihovně v Cambridge, a ačkoli není pojmenován, díky Katalogu věd, soupisu knih někdejší bagdádské knihovny, se podařilo najít původní název knihy - Kniha o sčítání a odečítání podle indického způsobu. Z tohoto názvu je zřejmé, že předlohou arabské desítkové soustavy byla číselná soustava indická. Arabské matematice se již před 1. tisíciletím n.l. podařilo něco do té doby nevídaného. Díky své otevřenosti učencům a vědění bez rozdílů víry nebo původu se zde poprvé za dobu existence lidstva propojilo vědění celého tehdy známého světa a později posloužila jako pokladnice vědomostí pro nadcházející zlatý věk objevů a rozvoje Evropy ([2], od str. 177). 47
Kapitola 7 Významní matematikové 7.1 Al-Chwárizmí Al-Chwárizmí byl matematik arabského původu žijící okolo let 780 850. Na obrázku 7.1 je známka vydaná v SSSR u příležitosti 1200. výročí narození Al-Chwárizmího, ačkoliv datum narození ani úmrtí není přesně známo. Obrázek 7.1: Al-Chwárizmí na ruské známce. Z jeho díla se dochovalo pět částečně přepracovaných opisů, které jsou věnovány algebře, astronomii, geografii a výpočtům kalendáře. Jeho práce v oblasti aritmetiky a algebry měly velký vliv na další rozvoj matematiky. Části jeho práce byly později přebírány a komentovány v pracích následujících desítek generací. Al-Chwárizmího aritmetický traktát je první známou arabskou prací, v níž je vyložena indická desítková poziční soustava a objasněny matematické úkony v této soustavě. Tato jeho práce se dochovala pouze v jediném latinském překladu z poloviny 13. století, který však není plně dokončený a začíná slovy: Algorizmi pravil.... Právě z této zkomoleniny Al-Chwárizmího jména pochází slovo algoritmus. Z Al-Chwárizmího algebraického traktátu zase pochází slovo al-džebr, v němž má původ dnešní termín algebra, které označovalo sečtení dvou rovnic s cílem zbavit se neznámé. Další latinské spisy jako např. Algorizmova kniha o praxi aritmetiky (1135 1153) nebo Kniha uvedení Algorizma do umění astronomického, sestavená mistrem A. (kolem r. 1143) se částečně odvolávají na Al-Chwárizmího a jeho díla ([2]). 48
7.2 John Napier John Napier z Merchistonu (1550 1617) byl skotský matematik, fyzik, astronom a astrolog. Do paměti se zapsal jako vynálezce logaritmu, proto se na jeho počest přirozenému logaritmu (tedy logaritmu o základu e) říká Napierův logaritmus. Obrázek 7.2: John Napier. Jeho otec byl biskupem v Orkney a silná víra se přenesla i na syna. Napier ovšem pojal víru po svém a na základě studia Zjevení Janova, poslední knihy Nového zákona, předpověděl apokalypsu a dokázal, že papež je antikrist. Odtud je již jen krůček k jeho dalšímu zájmu - okultním vědám (alchymii a astrologii). Není divu, že byl svými sousedy považován za čaroděje. Traduje se historka, že Napierův černý kohout uměl odhalit mezi sluhy zloděje. Zřejmě to ale bylo tak, že každý ze sluhů byl Napierem vyzván, aby se kohouta dotkl. A jelikož byl kohout pomazán sazemi, měli pak nevinní sluhové černé ruce, zatímco viník se dotknout bál, a jeho ruce tedy zůstaly čisté. 7.3 Augustin Louis Cauchy Augustin Louis Cauchy (1789 1857) byl matematik francouzského původu, průkopník matematické analýzy a Napoleonův inženýr. Byl silný katolík a přívrženec královské rodiny, což ho přivedlo do několika konfliktů po Francouzské revoluci. Nejdříve studoval na École Centrale du Panthéon, kde se naučil hlavně latinu. Poté v roce 1804 vstoupil na školu École Polytechnique se zaměřením na stavbu mostů a cest. Již po dvou letech studia patřil k nejlepším studentům. Po roce 1810 byl nejdříve povolán na stavbu Port Napoléon v Cherbourg, po pádu Napoleona se stal profesorem na École Polytechnique. Po dalším převratu ve Francii roku 1830, kdy byl sesazen Karel X. a na trůn usedl král Louis Philippe, odešel Cauchy jako učitel vnuka Karla X. do exilu a pobýval chvíli i v Praze. Roku 1839 se Cauchy znovu vrací do Paříže, protože však nesložil přísahu nové vládě, byl sice profesorem, ale nedostával plat. Poslední dny dožil v rodinném kruhu ve vesničce Sceaux blízko Paříže. Od roku 1839 do roku 1848 vydal přes 300 odborných statí, tj. téměř jednu za týden. Spolu s Leonhardem Eulerem, Arthurem Cayleym a Paulem Erdősem patří mezi nejplodnější autory matematických článků všech dob. 49
Obrázek 7.3: Augustin Louis Cauchy. 7.4 Jakub Filip Kulik Jelikož je Kulikovo jméno v dějinách české matematiky významné, řekneme si o něm alespoň pár základních informací. Jakub Filip Kulik (1793 1863) se narodil ve Lvově a studoval filozofii a práva na tamní univerzitě, brzy však začal tíhnout k matematice. V roce 1914 se přihlásil do konkurzu na místo profesora olomouckého lycea a téhož roku tam byl jmenován řádným profesorem. O dva roky později byl jmenován profesorem fyziky na univerzitě ve Štýrském Hradci. Na této univerzitě složil roku 1822 doktorské zkoušky a o rok později byl zvolen jejím rektorem. V roce 1826 byl jmenován profesorem vyšší matematiky na univerzitě v Praze. Vedle podrobných učebnic vyšší analýzy a mechaniky jsou nejvýznamnější jeho díla tabulková (tabulky násobení, druhých a třetích mocnin, logaritmické, trigonometrických a hyperbolických funkcí a jejich logaritmů, tabulky k výpočtu obsahu válcových a kuželových nádob, dělitelů čísel, primitivních kořenů). Kromě toho Kulik sestavil známé Kulikovy tabulky dělitelů čísel od 3 do 100 milionů, které byly uloženy do knihovny Vídeňské císařské akademie věd a na kterých Kulik pracoval dvacet let. Poznamenejme, že při ručním sestavování tak obsáhlých tabulek se Kulik samozřejmě nevyhnul chybám. Navíc v dnešní době počítačů jeho dílo přirozeně upadlo v zapomnění. 7.5 Antonín Svoboda Antonín Svoboda (1907 1980) byl jeden z nejvýznamějších novodobých českých matematiků a průkopníků výpočetní techniky. Narodil se v Praze jako syn profesora českého jazyka. Vystudoval dvě vysoké školy, nejdříve elektrotechnické a strojní inženýrství na ČVUT, poté fyziku na Karlově Univerzitě. Po obsazení Československa nacisty utíká i se svou manželkou a kolegou Vladimírem Vandem ze země nejdříve do Francie odkud se jim později po téměř neuvěřitelných cestách podaří vycestovat do USA. V Americe spolupracoval na vývoji samočinných počítačů pro vojenský projekt protiletadlového zaměřovacího systému MARK 46, který se používal na letadlových lodích dalších 50 let. V roce 1946 se vrací zpátky do Československa a vydává knihu o mechanických počítacích zařízeních, která o dva roky později vychází i v USA, kde ve stejný rok obdrží ocenění Naval Ordance Development Award. I proto měl v následujících letech problematičtější 50