čtvrtek 30. září 2021

O číslech, část 7: Čísla vícerozměrná

V minulých kapitolách jsme se setkali s rozličnými číselnými množinami, které měly různé zajímavé vlastnosti, ale všechny z nich byly buď konečné, nebo byly součástí reálných čísel. Až na samém konci minulého článku se objevila myšlenka, že bychom mohli skládat nové číselné množiny z již existujících čísel a třeba by mohl být výsledek nějak užitečný.

Napřed je však potřeba si ujasnit, proč bychom vůbec měli výtvorům, které uvidíme, říkat čísla. V předchozí kapitole bylo rigorózně definováno něco, čemu se v algebře říká lineárně uspořádané těleso. Ve zkratce se jedná o něco, co se chová víceméně jako klasické číselné množiny, např. racionální nebo reálná čísla. Je ovšem potřeba dodat, že tato definice není zdaleka ultimátní: je spousta dalších axiomů, které splňují racionální i reálná čísla, ale ne jiná tělesa (koneckonců díky tomu je můžeme vůbec odlišit), a naopak narazíme na věci, kterým bychom mohli říkat čísla, přestože některé axiomy tělesa nesplňují.

Co je tedy vícerozměrné číslo? Obecně se jedná o nějakou uspořádanou skupinu čísel, tedy třeba dvojici, trojici, čtveřici atd. (tomu se v algebře obvykle říká vektor, například množina všech dvojic reálných čísel se značí ℝ×ℝ nebo ℝ²). Tohle samotné ještě samozřejmě nestačí – potřebujeme definovat základní číselné operace.

Sčítání jde ještě lehce, dejme tomu (a, b) + (c, d) = (a + c, b + d). Z toho vyplývá, že −(a, b) = (−a, −b) a tedy nulový prvek musí být (0, 0). Takhle se chovají i vektory v kartézské soustavě souřadnic, které mají ještě navíc i vlastnost ve vztahu k násobení: k(a, b) = (ka, kb).

Co násobení? První nápad každého, kdo se s tímto setká, je určitě zkusit (a, b)⋅(c, d) = (ac, bd), z čehož vyplývá (a, b)/(c, d) = (a/c, b/d). Na takovéto definici v principu není nic špatného, používají ji třeba procesory pro zrychlení hromadných operací s čísly, ale matematikům se moc nehodí. První problém je ten, že dělení je problematické, ať je napravo nula kdekoliv, takže výsledek už není těleso. Druhý problém je trochu praktičtější – obě složky nemají už žádnou možnost, jak spolu interagovat, a výsledek tím pádem zůstane navěky jen seskupením dvou čísel, což matematiku nijak neobohatí.

Ne, musíme na to jít chytřeji. Můžeme se třeba inspirovat vektory, které umožňují ještě k(a, b), jenomže k je číslo, ne dvojice! Potřebujeme způsob, jak „povýšit“ nějaké reálné číslo do naší nové množiny, dejme tomu třeba jako (k, 0), a tedy chceme (k, 0)⋅(a, b) = (ka, kb). Z toho vyplývá, že (a, b)⋅(c, d) musí být ve tvaru (ac + d⋅něco, bc + d⋅něco) nebo (ac + b⋅něco, ad + b⋅něco), aby to pořád odpovídalo předchozímu případu, pokud by b nebo d bylo 0.

Vypadá to, že i tak máme spoustu možností, jak pokračovat, ale nepředbíhejme. Pokud se omezíme jen na součty násobků dvou proměnných v doplňovaných výrazech (to je rozumné omezení, protože by jinak neseděly jednotky, pokud by se nějaké používaly) a započítáme do toho klasické zákony násobení (komutativní, asociativní, distributivní), nakonec se celý výraz zredukuje jen na (ac + kbd, ad + b(c + ld)).

Vypadá to tedy, že možností, jak by mohlo fungovat násobení dvojrozměrných čísel, není zase tolik, stačí nám jen parametry k a l na jejich popsání. Pořád ale ten vzorec pro součin vypadá trochu složitě, nešlo by to nějak zjednodušit či vyjádřit intuitivněji? Šlo, ale potřebujeme na to malý algebraický trik.

Pokud potřebujeme pracovat s nějakou veličinou, ale neznáme její hodnotu, použijeme proměnnou, třeba x. Výraz a + bx je v mnoha ohledech podobný dvojici (a, b), protože obě entity jsou prvky nějakého vektorového prostoru. Zatímco však násobit vektory obecně nemusí jít, násobení výrazů jde: (a + bx)⋅(c + dx) = ac + (ad + bc)x + bdx². Na vyjádření tohoto výrazu však potřebujeme tři složky, jednu navíc pro x². Co kdybychom ale mohli x² vyjádřit jen pomocí dvou složek, tedy ve tvaru k + lx? Pokud si toto zkusíte do vzorce dosadit, vyjde přesně ten samý výraz, ke kterému jsme došli po zjednodušení násobení.

Tím jsme ukázali, že není potřeba pracovat s komplikovanými výrazy, protože ať se budeme snažit jakkoliv, násobení dvojrozměrných čísel bude vždy fungovat jako násobení výrazů (a platí to i pro vyšší rozměry), pokud se půjde zbavit x². Sice nám to teoreticky dává celou rovinu číselných systémů, ale matematika je někdy potvora: parametr l na strukturu množiny moc vliv nemá, ve skutečnosti jen způsobuje jakési zkosení celé roviny, takže ho řešit nemusíme. Parametr k určuje, jak moc se do první složky započítá složka druhá, ale ve skutečnosti je důležité opět jen jeho znaménko, protože to ostatní ovlivňuje jen zvětšení celé roviny.

Pro praktické zkoumání existují tedy jen 3 možnosti, čemu se bude rovnat x²: 0, 1 a −1. Zároveň se nám bude hodit ještě jedna nová operace a sice sdružené číslo (a, −b). Tato operace je užitečná, neboť společně s násobením nám umožní dostat z nějakého dvojrozměrného čísla zpět reálné číslo, které určuje jeho velikost, jako (a + bx)⋅(abx) = a² − b²x² (a odmocnina z této veličiny je absolutní hodnota).

Čísla duální

Dejme tomu, že x² = 0. Moment, ale pak platí x = 0, ne? Platilo by, kdybychom řešili rovnici v reálných číslech, ale my se snažíme reálná čísla rozšířit pomocí výrazů – x² = 0 je definice, ne rovnice, navíc samotný výraz x² je vlastně (0, 1)², ne (0, 0)² a x je jednotka, ne proměnná.

Takováto definice násobení znamená, že první složka takového čísla je naprosto nezávislá na druhé, ať je budeme sčítat nebo násobit, jak budeme chtít. I to má určité výhody, protože pokud druhou složku skryjeme, aritmetika může fungovat pořád stejně, ale můžeme si nechávat stranou užitečné informace. Zatím možná není patrné jaké, ale možná trochu napoví, že jednotka x se v tomto číselném systému značí ε.

Máme tedy ε² = 0 (a ε 0) a násobení (a + )⋅(c + ) = ac + (ad + bc)ε. U ε se nám tedy hromadí násobky první složky s druhou, ale násobky čistě jen druhé složky už nejsou významné. Tento systém připomíná praxi známou ve fyzice, kde se často, pro zjednodušení, pracuje s nějakou velmi malou hodnotou ε, která je na hranici zanedbatelnosti, což ovšem znamená, že ε² je opravdu zanedbatelné. V tomto případě se náš systém chová podobně a můžeme to tedy chápat tak, že ε reprezentuje nějaké neznámé číslo, které ale bude vždy menší než to nejmenší, se kterým pracujeme.

Čísla duální se skládají ze dvou složek, standardní části a infinitesimální (nekonečně malé) části. Můžeme je hezky lineárně uspořádat, na což stačí klasické uspořádání s prioritami, tedy první složka má prioritu a pokud je stejná, pořadí určuje druhá. Okolo každého reálného čísla nám tím vzniká jakési nekonečně malé okolí duálních čísel se stejnou standardní částí, ale nenulovou infinitesimální částí. Tu můžeme odstranit jakýmsi „zaokrouhlením“, které vezme jen standardní část, nebo absolutní hodnotou, která pro duální čísla je prostě absolutní hodnota standardní části.

Tvoří duální čísla těleso? Bohužel netvoří, což je patrné třeba z faktu, že existuje více „nul“ než jen 0; jsou to všechny násobky ε (tzn. 1/ε apod. není definováno). Musíme být v tomto světě tedy obezřetní, protože se mohou vyskytnout další anomálie.

Jedna z anomálií je třeba spjata s faktem, že se nám ztrácí při násobení informace, takže odmocnina z ε² může být zároveň 0, ε i −ε. Navíc neexistuje ani odmocnina z žádného násobku ε (pokud by existovala, musela by mít nulovou standardní část, ale druhá mocnina každého takového čísla je 0). Na nulu si tady prostě musíme dávat velký pozor.

Mají duální čísla nějaké využití, přestože nejsou těleso? Ve skutečnosti mají, protože infinitesimální složka se dá chápat jako určitý sklon či směr v okolí standardní části. Proč? Zkusme vzít třeba (1 + ε)² = 1 + 2ε. Základ si můžeme představit jako okolí bodu (1, 1) na funkci y = x; umocněním na druhou nám vznikne x². Pro ni je výsledek sice pořád 1, ale v okolí toho bodu roste dvakrát více. Je to tedy derivace, která se u infinitesimální jednotky ukládá. Pomocí Taylorovy řady navíc můžeme vyjádřit (pro rozumné funkce) pro okolí libovolného bodu tvar té křivky jen pomocí součtů a součinů, takže tento trik funguje pro libovolnou funkci, kde dává smysl mluvit o derivaci.

I když to tak na první pohled možná není vidět, tímto způsobem se dá spočítat i druhá (a další) derivace, ovšem jejich počet musí být předem omezený. Stačí kromě ε přidat ještě třeba φ, tedy další infinitesimální jednotku, čímž se zvýší dimenze systému na 4 a koeficient εφ bude uchovávat druhou derivaci.

Duální čísla představují skvělý nástroj, pokud potřebujeme spočítat zároveň hodnotu funkce i její první derivace, pokud je to funkce složená z jiných funkcí, jejichž derivace známe, což se hodí jak při praktických výpočtech, tak v nějakém specializovaném softwaru, i když pokud je takových bodů víc, získat derivaci jako funkci přímo se možná vyplatí víc.

Čísla hyperbolická

Další možnost pro x² je 1. V takovém případě značíme jednotku j (opět to není 1) a vzniknou čísla známá pod různými názvy, v češtině nejlépe jako hyperbolická. Důvod tohoto označení je prostý: každé absolutní hodnotě odpovídá hyperbola, na níž mají všechna čísla stejnou absolutní hodnotu.

V extrémním případě nulové absolutní hodnoty tomu odpovídá hyperbola zdegenerovaná do dvou diagonálních přímek, které zároveň představují všechny nulové body. Z toho vyplývá, že hyperbolická čísla opět netvoří těleso. Absolutní hodnota má taky jeden problém, a sice že výraz a² − b² z důvodu záporných čísel (která odpovídají o 90 ° otočené hyperbole) nemá smysluplnou odmocninu a tím pádem je jeho použití trochu problematické (třeba musíme odmocninu ignorovat, ovšem pak už to nemá vlastnosti jiných absolutních hodnot).

Pro pohyb po hyperbole se používají takzvané hyperbolické funkce (obdoba goniometrických funkcí), které mají uplatnění i tady. Hyperbolické číslo se díky nim dá vyjádřit též pomocí polárních souřadnic, tedy jeho absolutní hodnoty a hyperbolického úhlu, což je další způsob, jak lze takové číslo zapisovat (a některé operace to může zjednodušovat). Kromě toho se též používá tzv. diagonální báze, kde se místo základních jednotek (1, 0) a (0, 1) používají jednotky (½, ½) a (½, −½) a nový souřadnicový systém používá jejich lineární kombinace (součet jejich násobků), což může být užitečné, neboť pak se obě hyperboly dají vyjádřit klasickou lineární lomenou funkcí.

Diagonální jednotky mají tu hezkou vlastnost, že jejich násobení je idempotentní, tedy že umocňování takové jednotky její hodnotu nijak nezmění, což se pro jednotku určitě hodí (a toto je taky jediný takový systém, kde se dají najít dvě takové jednotky). Ve skutečnosti tento systém aritmetiku s takovými čísly značně zjednoduší, protože násobení dvou hyperbolických čísel je prosté násobení po složkách, stejně jako sčítání, a z toho vyplývá, že i dělení funguje po složkách (všechny nulové body mají 0 v jedné ze souřadnic), stejně tak umocňování přirozenými čísly, a absolutní hodnota takového čísla je prostě součin jeho souřadnic.

To celé znamená, že tento systém je izomorfní s oněmi dvojicemi reálných čísel, které jsme zkusili na začátku, alespoň co se týče klasických operací. Můžeme převádět libovolně mezi oběma způsoby a vybrat si ten, který je lepší. Pokud potřebujeme zjistit hodnotu nějaké operace pro hyperbolické číslo, stačí jej převést do jeho „nezávislé“ diagonální podoby, kde spolu jeho složky nijak neinteragují a můžeme operace aplikovat nezávisle. Pokud potřebujeme řešit transformace nebo operovat s výrazy či neznámými, základní tvar se naopak může hodit více.

Jak jsem zmínil na začátku, samotné dvojice čísel nejsou tak užitečné, a přestože hyperbolická čísla přidávají najíc způsob, jak je algebraicky propojit, nemají zase tolik využití. Přesto však mají některé užitečné aplikace, které vycházejí z jejich schopnosti algebraicky reprezentovat rovinu způsobem, který obě osy staví na stejnou úroveň. Tato vlastnost totiž neplatí pro jejich kolegu z této skupiny čísel, kterým jsou mnohem známější...

Čísla komplexní

Po malém protahování jsme se dostali nakonec k tomu, co pro mnohé studenty představuje vrchol putování matematickým univerzem. Pokud jste doteď namítali, že uvedené číselné množiny jsou zbytečné, sice pravdu nemáte, ale ve srovnání s čísly komplexními opravdu blednou. Proč? Zde nazývaná imaginární jednotka je i a i² je −1. Rozdíl je už patrný: zatímco v předchozích případech nebyla nová jednotka jediným řešením své definice, pokud bychom ji chápali jako rovnici, v tomto případě potřebujeme i, pokud chceme mít záporné mocniny. Zatímco předtím nám nová jednotka umožňovala elegantně spojit více informací, zde nám umožní vůbec popsat něco, pro jehož popsání doposud neexistoval jazyk.

Máme odmocninu z −1, ovšem samozřejmě ne jednu – kromě i to taky splňuje i −i. Podobně jako u hyperbolických čísel tu je jakási symetrie, protože i a −i jsou v podstatě zaměnitelné. Jak si je vůbec může člověk představit? Samozřejmě se vyskytujeme pořád v rovině, ale zatímco hyperbolická čísla měla hyperbolu, hyperbolické funkce a e, komplexní čísla mají kružnici, goniometrické funkce a π, aniž bych to s tou paralelou musel přehánět.

Co zde tedy znamenají kružnice? Inu čísla 1, i, −1 a −i jako vektory samozřejmě leží na kružnici, ale zároveň představují posun po kružnici v nějakém (předem dohodnutém) směru, podobně jako hyperbolická čísla představují posun po hyperbole. Tento posun se ukrývá v násobení: násobení číslem 1 hodnotu nezmění (otočení o 0 °), násobení číslem −1 je otočení o 180 °, takže i a −i musí být otočení o 90 ° a −90 °. Teď už je jasné, proč tato a jen tato čísla jsou odmocninami z −1, z hlediska pohybu po kružnici jsou na půli cesty mezi 1 a −1, jsou jakýmsi jejich geometrickým průměrem.

Komplexní čísla jsou navíc (navzdory jejich názvu) trochu lépe uchopitelná než hyperbolická, především díky jejich jasnějšímu vztahu s geometrií a reálným světem. Pohyb po kružnici je přece jenom trochu jednodušší než po hyperbole, kde musíme dvakrát navštívit nekonečno, byť z hlediska numerického je lépe vyjádřitelný (hyperbolické funkce potřebují jen mocniny e, zatímco goniometrickým funkcím π nestačí).

Komplexní čísla mají mnoho využití v matematice i fyzice. V matematice jsou potřeba, pokud musíme rozložit na součin jinak nerozložitelné mnohočleny, např. x² + 1 = (x + i)⋅(x − i), což využívá algebra i analýza. Ve fyzice se hodí pro popis jakéhokoliv jevu, kde dochází k pohybu po kružnici nejenom fyzicky, ale i virtuálně v různých veličinách, např. při popisu oscilace a tedy třeba elektřiny.

Zbývá vyřešit poslední otázku: tvoří komplexní čísla těleso? Ano, protože nulovým prvkem je zde pouze a jedině 0. Ostatní čísla mají kladnou absolutní hodnotu a lze je vesele násobit i dělit. Komplexní čísla tedy představují ten nejlogičtější stupeň, který si zvolit, pokud si chceme zachovat co nejvíc vlasností.

Problém ovšem nastává u uspořádání. Asi je to jasné z logiky věci, ale narozdíl od reálných čísel zde pojmy „větší“ a „menší“ nedávají dobrý smysl, protože se už pohybujeme v mnoha dalších směrech než jen dvou. Ačkoliv dokážeme najít lineární uspořádání (třeba lexikograficky po složkách), nikdy z toho uspořádané těleso nebude (bude-li 0 ≤ i, neplatí 0 ≤ i²; bude-li 0 ≤ −i, neplatí 0 ≤ (−i)², ale právě jedno z toho platit musí, abychom tomu mohli říkat uspořádané těleso).

 

Díky dobrému algebraickému použití všech těchto čísel nám nic nebrání je zkombinovat, tedy vytvořit systém, kde bude libovolný počet infinitesimálních, hyperbolických i imaginárních jednotek, například tzv. bikomplexní čísla, kde se v principu nachází j a i, a samozřejmě ani nikde není stanoveno, že základem musí být čísla reálná.  Ve všech těchto situacích jsme však museli něco obětovat, abychom se dostali dál – výsledek nikdy nebylo uspořádané těleso v žádném z těchto případů, a bohužel není obecně tak jednoduché takové těleso dostat. Tenhle problém v principu nemusí vadit, ale s každou ztracenou vlastností dostáváme něco, co je méně a méně „číselné“.

Budiž, dejme tomu, že jsme připraveni zahodit další vlastnosti. Můžeme jít výš? Samozřejmě, tam najdeme kvaterniony, které představují rozšíření komplexních čísel s jednotkami i, j, k. Nejen druhá mocnina každé z těchto jednotek je −1, ale i součin všech tří. Kvaterniony reprezentují podíl dvou prostorových vektorů a tedy se dají dobře použít např. k reprezentaci rotace v prostoru. Jejich algebraickou nevýhodou je ovšem to, že násobení není komutativní. Půjdeme-li ještě výše, narazíme na oktoniony, kde násobení už ani není asociativní, a ještě dále jsou 16rozměrné sedeniony, 32rozměrné trigintaduoniony a další a další systémy bez konce. Paralelně s tímto systémem můžeme místo −1 u některých jednotek vzít 1 a najdeme tak ještě další konstrukce.

Tak to vypadá, že nám zde vznikla nehorázná změť matematických objektů, s libovolným množstvím exotických jednotek na jedné straně a hierarchií poločíselných objektů na straně druhé, které se mohou libovolně kombinovat mezi sebou. Tím vzniká systém hyperčísel o nekonečném rozměru, který je ale zároveň nesmírně komplikovaný, aby se s ním dalo něco rozumného dělat. Neexistuje tu však něco, co se chová trochu pravidelněji, ale přesto by zahrnovalo jednotlivé systémy?

Matice

Matice (a obecně tenzory) jsou tabulky čísel. Sčítání funguje stejně jako u předchozích systémů, ale násobení mezi sebou kombinuje řádky jedné a sloupce druhé matice (pomocí skalárního součinu), čímž mezi sebou mohou interagovat.

S touto znalostí můžeme definovat 1 = (
10
01
), ε = (
01
00
), j = (
01
10
), i = (
0−1
10
). Samozřejmě není možné používat všechny nové jednotky vedle sebe ve stejné matici 2×2; na to musíme její rozměry zdvojnásobovat. Koncept absolutní hodnoty též existuje i zde, kde jeho analogií je determinant matice (a pro jednotky výše koresponduje s absolutní hodnotou jednotlivých systémů). Matice mají jistou symetrii vzhledem k hlavní diagonále, která se taky projevuje v chování jednotlivých jednotek.

Násobení matic obecně není komutativní (ale je distributivní), tím pádem matice netvoří těleso, a navíc ne všechny prvky mají převrácenou hodnotu (jen tzv. regulární, kde determinant není 0), tím pádem dělení matic není zrovna jednoduché. Přesto však můžeme s některými maticemi pracovat jako s čísly a pak spočítat třeba sinus matice. Postup je následující:

  1. Matici musíme diagonalizovat. Tato operace z ní vytáhne dvě další matice R a D, přičemž D má prvky pouze na hlavní diagonále a R je regulární. Původní matice se dá zapsat jako RDR−1. Toto lze provést jen u některých matic.
  2. Tento postup nám umožní spočítat libovolnou mocninu původní matice. Důvod je ten, že (RDR−1)⋅(RDR−1) = RDDR−1 atd., tedy stačí umocňovat jen prostřední matici D.
  3. Podobně jako u diagonální báze hyperbolických čísel je v tomto tvaru mocnina matice D velmi jednoduchá, protože stačí umocnit jednotlivé prvky diagonály.
  4. Taylorova řada pro danou funkci nám dá nekonečnou řadu přirozených mocnin celé matice. Díky distributivitě můžeme matice R a R−1 přenést mimo řadu a tím pádem stačí danou funkci aplikovat pouze na prvky diagonály, tedy vznikne Rf(D)R−1.

Pokud matice není diagonalizovatelná (třeba jako matice duálních čísel), tento postup aplikovat nelze, přesto však může existovat (analyticky rozšířená) funkce takové matice, pokud daná Taylorova řada konverguje.


Nyní již máme dobrou představu o tom, jaké různé objekty se dají zkonstruovat z již existujících čísel, a zároveň jsme mohli zabrouzdat trochu dále, do oblastí, kde už nám známé číselné zákony neplatí. Není jednoduché snažit se představit si nové číselné množiny ve světě, který jsem se doteď snažil vykreslit, přesto se však o to pokusím: každé reálné číslo, každý bod našeho vesmíru, se dotýká velmi malé dimenze, která jím proniká. V případě duálních čísel má taková dimenze tvar přímky, v případě hyperbolických čísel tvar hyperboly a v případě komplexních čísel tvar kružnice. Každý bod má svoji vlastní dimenzi, kromě posledních dvou případů (zde je ta dimenze sdílena mezi bodem a a jeho obrazem −a). Pokud se budeme snažit touto dimenzí projít, narazíme na samé identické kopie našeho vesmíru, až se nakonec vrátíme do toho, ze kterého jsme vyšli.

Toto však zdaleka není konec všech podivností, se kterými se setkáme. Uvidíte příště.

pondělí 2. srpna 2021

O číslech, část 6: Algebraické vlastnosti čísel a modulární aritmetika

Už jsme prošli hodně příkladů číselných množin, a přestože zatím všechny byly obsažené v reálných číslech, mají určité společné vlastnosti, které je umožňují v některých situacích zaměňovat. Matematický obor, který tyto vlastnosti zkoumá, se jmenuje univerzální algebra. Ta se snaží všechny důležité vlastnosti seskupovat a pomocí nich klasifikovat rozličné matematické objekty. Z pohledu programování by se dalo říct, že popisuje soustavu „rozhraní“, která jsou podporována konkrétními matematickými objekty či množinami.

Nejdůležitějším pojmem je těleso, což je množina, která se algebraicky chová nejvíc jako čísla. Není úplně přesné říkat, že těleso je množina, protože kromě samotných prvků nějaké množiny potřebujeme i operace, které s nimi můžeme dělat. V tomto případě jsou ty operace dvě, tedy těleso je formálně trojice tří entit: nosné množiny a dvou operací, kterým budeme říkat sčítání a násobení. Není nutné, aby se jednalo o čísla a klasické číselné operace, protože jediné, co je potřeba, je splnit určité podmínky.

Pro množinu Ƒ (z angl. field) a operace + a ⋅ na ní musí platit:

  • Ƒ je uzavřená na + a ⋅, tedy výsledky těchto operací jsou vždy v Ƒ.
  • + a ⋅ jsou komutativní, tedy a + b = b + a a ab = ba.
  • + a ⋅ jsou asociativní, tedy a + (b + c) = (a + b) + c a a ⋅ (bc) = (ab) ⋅ c.
  • + a ⋅ jsou navzájem distributivní, tedy a ⋅ (b + c) = (ab) + (ac).
  • + i ⋅ mají obě vlastní neutrální prvek, 0 a 1, tedy a + 0 = a ⋅ 1 = a.
  • Každý prvek má inverzní prvek vůči +, kterému říkáme opačná hodnota, −a. a + (−a) = 0.
  • Každý prvek kromě 0 má inverzní prvek vůči ⋅, kterému říkáme převrácená hodnota, a−1. aa−1 = 1.

Formálně bývá zvykem pak takovou trojici značit tučně, tedy Ƒ = (Ƒ, +, ⋅). Tímto opouštíme oblast konkrétních objektů a přesouváme se do axiomatického světa, kde jsou pro nás konkrétní entity zajímavé jen společnými vlastnostmi a jen z nich můžeme vyvozovat další fakta. Tak například jdou odvodit tyto vlastnosti:

  • Když ab = 0, pak musí platit a = 0 nebo b = 0,
  • −0 = 0,
  • 1−1 = 1,
  • apod.

Které nám doposud známé číselné množiny tvoří těleso? Racionální čísla, konstruovatelná čísla, algebraická čísla, spočitatelná čísla, definovatelná čísla a samozřejmě i celá reálná čísla. Navíc všechna tato čísla jsou uspořádaná (toto uspořádání značíme ≤) a jedná se o lineární uspořádání, tedy splňuje tyto podmínky:

  • aa (reflexivita).
  • Z ab a ba vyplývá a = b (antisymetrie).
  • Z ab a bc vyplývá ac (tranzitivita).
  • Každé dva prvky jsou porovnatelné, tedy ab nebo ba.

Název lineární uspořádání sám o sobě naznačuje, že je možné si každou takovou množinu představit jako přímku, číselnou osu či nějakou jinou linii nebo klidně i křivku, ale musí být bez smyček.

Aby toho nebylo málo, ne každé uspořádání v nějakém tělese je zajímavé. Když klasickou relaci ≤ otočím, bude to pořád lineární uspořádání, ale nebude se chovat intuitivně ve vztahu ke známým operacím. Proto je potřeba ještě rozlišovat uspořádaná tělesa, pro něž platí navíc:

  • Z ab vyplývá a + cb + c.
  • Z 0 ≤ a a 0 ≤ b vyplývá 0 ≤ ab.

Díky těmto vlastnostem můžeme v uspořádaném tělese od sebe odlišit kladné a záporné prvky (a přecházet mezi nimi přes opačný prvek), protože se chovají jinak vzhledem k násobení, a taky můžeme řešit nerovnice nám známými úpravami. Uspořádané těleso je tím pádem to nejlepší, s čím můžeme pracovat, a prvky každého takového tělesa si nejvíce zasluhují být nazývány čísly, a dokonce se dá ukázat, že každé uspořádané těleso v podstatě obsahuje racionální čísla v nějaké formě.

Každá podmnožina reálných čísel je lineárně uspořádaná, ale ne každá z nich tvoří těleso. Přirozená ani celá čísla těleso netvoří, protože žádná z nich nesplňuje existenci inverzního prvku pro násobení a přirozená čísla nemají ani inverzní prvek pro sčítání. Svým způsobem tím ztrácejí právo říkat si čísla, ale na druhou stranu jsou obsažena v racionálních číslech, takže společně s nimi to právo stále mají.

Jaké další množiny tvoří tělesa? Každé těleso musí mít alespoň dva prvky, postačuje tedy dvouprvková množina jen s 0 a 1? Zkusme se podívat třeba na sudá a lichá přirozená čísla. Sečteme-li dvě sudá, dostaneme opět sudé, sečteme-li dvě lichá, dostaneme taky sudé. Součin lichých čísel je lichý, ale součin čehokoliv a sudého čísla je sudý.

Sudá čísla jsou vlastně 0, lichá čísla jsou vlastně 1. Už nám zbývá jen určit inverzní hodnoty. Tady nemáme na výběr, −1 = 1 (a 1−1 = 1, jak známe z pravidel), ovšem ani to není tak překvapivé, protože odečtení i přičtení 1 k sudému číslu určitě dá liché. Takováto struktura tvoří těleso, ovšem v tomto případě chybí uspořádání, protože přičtení něčeho ne vždy zvýší pozorovatelnou hodnotu. Tento systém tedy není zase tolik číselný jako jiné.

Kolik různých těles může být a jaké mají velikosti? Už máme těleso velikosti 2, co takhle velikosti 3? Stačí postupovat podobně a uvědomit, že informace, jestli je číslo sudé nebo liché je vlastně zbytek po dělení dvěma. Můžeme tak tedy pokračovat v tom, co jsme ukázali v kapitole o racionálních číslech, a použít čísla 0, 1 a 2 jako všechny možné zbytky po dělení třemi. Obě operace fungují vlastně stejně, akorát vždy z výsledku vezmeme jen zbytek po dělení (modulus). Zde platí třeba 2 + 1 = 0 a 2 + 2 = 1 a jedná se tedy o modulární aritmetiku. 2 zde má i inverzní prvek, sama sebe, protože 2 ⋅ 2 = 1.

Můžeme tak pokračovat dále? Ne úplně: obdobně vytvořená množina velikosti 4 není těleso, protože třeba 2 zde inverzní prvek nemá.

Takovéto množiny značíme ℤ/nℤ, čímž je myšleno, že se jedná o zbytkové třídy při dělení n. Číslo 0 v takové množině tedy vlastně označuje všechny násobky n, jako jsme měli definovaná i celá nebo racionální čísla pomocí tříd ekvivalence. Důležitý fakt ovšem je ten, že taková množina tvoří těleso jen v situaci, kdy n je prvočíslo.

Co pro jiné hodnoty n? Existuje ještě jedna možnost a to vzít polynom xnx. Pokud by šel rozložit na součet lineárních členů, právě ty tvoří prvky tělesa o velikosti n. Třeba x4x se dá rozložit na (x + 1)(x − 1)(x + i)(xi), kde i² je −1 (to nám umožní komplexní čísla, ale to už bych se předbíhal). Toto ovšem jde jen za předpokladu, že n je mocnina nějakého prvočísla, takže tolik nových možností jsme zase nezískali. Další možnosti už nejsou a navíc pro prvočíselné velikosti se oba typy množin chovají stejně, takže z pohledu používaných operací jsou izomorfní.

Nekonečných těles samozřejmě existuje velké množství, přinejmenším klasické číselné množiny, které jsem už ukázal. Zajímavá ovšem může být konstrukce některých dalších možností.

Příkladem budiž takzvaná algebraická číselná tělesa, která vzniknou přidáním nějakých speciálních nových prvků do ℚ. Jak ale taková čísla zkonstruovat? Algebraicky si je můžeme představit jako dvojice a + bc, kde c je nějaké pevné nové číslo mimo ℚ. Taková čísla jsou vlastně dvojice (a, b), ale opravdu mohou tvořit těleso? Musíme požadovat, aby c² bylo něco z ℚ, protože pak nám to umožní definovat součin i podíl takových dvojic pomocí nové dvojice (u součtu to šlo už předtím) a tím pádem vzniknou dvojrozměrná čísla.

Součin (a + bc) ⋅ (x + yc) se dá algebraicky pronásobit a vznikne ax + (ay + bx) ⋅ c + byc². Kdyby c² nebylo takhle definováno, nemohl by celý výsledek být opět vyjádřen jako dvojice (i když stačí, aby c² bylo aspoň něco vyjádřitelné v nové množině).

Příkladem takovýchto těles jsou třeba kvadratická tělesa, označována jako ℚ(√d). Každé takové číslo je vlastně složené z nějakého běžného racionálního čísla a násobku odmocniny z d, a tak to i zůstane po aplikování dostupných operací. Výsledná množina je trochu bohatší, ale i tak nedosahuje na nejjednodušší konstruovatelná čísla. Tento proces můžeme opakovat i vícekrát, třeba ℚ(√2)(√3) zahrnuje všechny násobky odmocniny 2, 3, ale i 6 a jsou to tím pádem čtyřrozměrná čísla.

Něco takového může být užitečné, když potřebujeme třeba strojově reprezentovat reálná čísla trochu přesněji, než jak to obvykle bývá zvykem. Můžeme třeba přidat odmocninu z 5 a reprezentovat pak zlatý řez φ jako (0,5; 0,5), pokud bychom s ním potřebovali často pracovat. Bohužel takový postup se stává hodně rychle nepraktickým, pokud chceme víc odmocnin, protože výsledná dimenze roste exponenciálně, a stejně tak nemůžeme přidat jakékoliv libovolné číslo mimo ℚ (třeba π), protože vždy potřebujeme definovat druhou mocninu jako něco, co už dokážeme reprezentovat. Přesto však by bylo zajímavé v nějakém programovacím jazyce pracovat s číselnými typy, které toto umožňují, jak pro pevný počet odmocnin, tak i pro dynamický, měnící se podle potřeby.

Takto algebraicky vytvořená tělesa se dají vytvořit z čehokoliv, nejen z ℚ. Můžeme třeba vzít ℝ a snažit se dosáhnout za hranice toho, co známe, a tímto způsobem můžeme lehce vytvářet další zajímavé množiny. Nejznámější z nich jsou komplexní čísla, kde je použita odmocnina z −1, ale existují i další podobné množiny. Na ně se podíváme příště.

úterý 27. července 2021

O číslech, část 5: Čísla konstruovatelná, algebraická, spočitatelná, definovatelná a normální

V tomto článku si ukážeme několik číselných množin, které už jdou za hranice školních znalostí matematiky, ale přesto nejsou nijak obtížné a pomůžou nám rozšířit naše znalosti o podstatě čísel. Všechny číselné obory mají společnou vlastnost, že jsou podmnožinou reálných čísel a protínají iracionální čísla, tudíž si je můžeme představit jako různá další členění reálných čísel. Jelikož všechna tato čísla už existují (jsou reálná a ta už v našem pojetí existují), vyhneme se tentokrát zdlouhavému konstruování a postačíme si s popisem.

Čísla konstruovatelná

Tato podmnožina reálných čísel představuje drtivou většinu toho, s čím se v matematice běžně pracuje, neboť označuje množinu všech reálných čísel, která lze zkonstruovat pomocí nějakého konečného opakování operací, tedy je lze vyjádřit nějakým výrazem využívajícím určité povolené operace. Obvykle se pod tímto pojmem myslí jedna konkrétní podmnožina, ale určitě neškodí ukázat si napřed, co je tím myšleno, na jednodušších podmnožinách, které omezíme různými operacemi:

  • Konstruovatelná pomocí 0, 1 a operace sčítání: přirozená čísla.
  • Konstruovatelná pomocí 1 a operace odčítání: celá čísla.
  • Konstruovatelná pomocí výše uvedeného a operace dělení deseti (decimace): desetinná čísla, tedy racionální čísla, kde ve jmenovateli je pouze mocnina 10 (lze je zapsat pomocí konečného množství desetinných číslic).
  • Konstruovatelná pomocí 1, operace odčítání a operace převrácené hodnoty (1/n): racionální čísla.

První otázkou je, zdali by se pomocí vhodného výběru operací nedala pokrýt všechna reálná čísla. Bez dlouhých okolků prozradím, že to nejde – výrazů s takovými operacemi je mnohem méně než všech reálných čísel (je jich stejně jako přirozených čísel, např. stačí takový výraz převést na bajty v nějakém kódování a ty bajty pak interpretovat jako přirozené číslo). Tím pádem sice můžeme vymýšlet lepší a lepší operace, ale reálná čísla jimi nikdy celá nepokryjeme.

Standardní operace, které se u konstruovatelných čísel používají, umožňují definovat racionální čísla, ale ještě některá další iracionální. Jejich výběr je čistě historický: antičtí Řekové byli fascinováni geometrií a konstruovatelností geometrických útvarů, přičemž se všeho snažili dosáhnout pomocí pravítka a kružítka. Zasekli se však na několika problémech:

  • Kvadratura kruhu – sestrojení čtverce, který by měl stejný obsah jako nějaký kruh.
  • Zdvojení krychle – sestrojení krychle s dvojnásobným objemem ku jiné krychli (nezapomeňte, že zdvojnásobení délky hrany zvětší objem osmkrát).
  • Trisekce úhlu – sestrojení úhlu s třetinovou velikostí k jinému.

Z hlediska geometrické konstruovatelnosti jsou čísla, která vzniknou konstrukcí geometrických útvarů, prostě poměry různých délek ku nějaké předem dané jednotkové délce. Které operace navíc tedy musíme povolit, abychom dokázali popsat čísla geometricky konstruovatelná jen pomocí pravítka a kružítka? Pouze druhou odmocninu. Ta se dá geometricky sestrojit jednoduše jako přepona pravoúhlého trojúhelníku a to z jakéhokoliv čísla. Z toho už je patrné, proč antické geometrické problémy jsou nejen těžké, ale naprosto nemožné:

  • Kvadratura kruhu vyžaduje sestrojit čtverec o obsahu násobku π, tedy o straně √π. Pokud by ten kruh byl válec a my měli provázek, dokážeme sestrojit π, ale bez provázku ne.
  • Zdvojení krychle vyžaduje délku jako třetí odmocninu, ale my dokážeme sestrojit jen druhou. Oproti tomu třeba v origami lze sestrojit třetí odmocninu, takže tam je takový problém řešitelný.
  • Trisekce úhlu vyžaduje umět konstruovat různé úhly za předpokladu, že umíme konstruovat jejich trojnásobky. To lze obecně pomocí funkce kosinus, ale tu nemáme k dispozici, takže to obecně nejde (třeba úhel 20 ° nejde zkonstruovat). I tento problém je řešitelný s pomocí origami.

Kromě těchto problémů nejsou konstruovatelná čísla zase až tak zajímavá, ale pokud by bylo zapotřebí vytvořit nějakou přesnou strojovou matematickou reprezentaci nám užitečných čísel, bylo by to asi to nejpřirozenější, po čem sáhnout. Musel by se ale trochu rozšířit obor operací, například na libovolné mocniny (a tedy i odmocniny), logaritmus, goniometrické a cyklometrické funkce a konstanty π a e. Obvykle se takto rozšířeným číselným oborům říká analytická čísla.

Čísla algebraická

Zatímco u čísel konstruovatelných jsme začínali na několika konstantách a pomocí opakovaného používání operací jsme se snažili dostat k danému číslu, jde to i v opačném směru, tedy začít na testovaném čísle a snažit se ho transformovat na nějakou konstantu, třeba na nulu. Povolíme při tom pouze sčítání a násobení, dále budeme moci použít všechna celá čísla a navíc to testované číslo můžeme použít vícekrát. Ještě musíme zakázat operace, které by dokázaly na nulu dostat cokoliv, tedy násobení nulou nebo odečítání sebe sama.

Pro ilustraci mějme třeba pátou odmocninu ze dvou. Umocňování jsme sice jako operaci nepovolili, ale stačí takových pátych odmocnin ze dvou vedle sebe vynásobit 5 a dostaneme číslo 2, které už odečtením dvou dostaneme na nulu lehce.

Zatímco konstruovatelná čísla odpovídala nějakému výrazu, tato čísla odpovídají nějakému polynomu (mnohočlenu). Obvykle to testované číslo označíme jako x; máme povoleno ho umocnit na nějaké přirozené číslo (nejvyšší takové je řád polynomu) a tyto členy můžeme sčítat a odčítat, případně násobit konstantami.

Takový polynom může být například 7x³ + 2x² − 1. Chceme-li, aby výsledek byl 0, hledáme tím kořeny polynomu a řešení rovnice 7x³ + 2x² − 1 = 0.

Řád polynomu bývá zpravidla neomezený, ale opět může být zajímavé podívat se, co získáme, pokud ho omezíme:

  • Řád 1 umožňuje pouze lineární rovnice, tedy ve tvaru ax + b = 0. Tím lze reprezentovat všechna racionální čísla.
  • Řád 2 umožňuje klasické kvadratické rovnice ve tvaru ax² + bx + c = 0. Tím pokryjeme klasická konstruovatelná čísla s druhou odmocninou.
  • Řád 4 je nejvyšší řád, kde výsledek stále ještě lze vyjádřit pomocí (libovolné) odmocniny.

Zajímavé zjištění, které kombinuje poznatky několika matematických oborů, je fakt, že algebraická čísla vyšších řádů už někdy nejdou vyjádřit jen pomocí výrazu s odmocninami. V případě kvintických rovnic (řádu 5) je možno řešení vyjádřit pomocí jedné operace navíc („ultrakořene“ a, tedy jediného řešení rovnice x⁵ + x + a = 0) a pro některé vyšší řády existují ještě podobné metody, ale jsou stále složitější a složitější (a v mnoha případech je potřeba jít mimo reálná čísla).

Asi už není tak překvapivé, že algebraických čísel je stále stejně jako přirozených. Vyplývá to opět z faktu, že každý polynom je konečný, všechny se dají lehce seřadit a očíslovat, a tedy je pokrývají přirozená čísla.

Opět tedy existují reálná čísla, která nejsou algebraická. Těm se říká transcendentní a vyplňují zbytek reálných čísel, tedy jsou stejně monstrózní jako celá reálná čísla. Důkazy, jestli je dané číslo transcendentní nebo ne, jsou asi nejdůležitější a zároveň nejobtížnější poznatky matematiky; sice stav mnoha důležitých konstant už známe, ale některé nám stále unikají.

První objevené transcendetní číslo byla tzv. Liouvillova konstanta; číslo, které v desetinném zápisu mělo všude nuly až na pozice s hodnotami faktoriálů, kde byly jedničky. Trochu komprimovanější varianta je tzv. Fredholmova konstanta 0,1101000100000001..., kde jedničky jsou na pozicích mocnin 2. Ani jedno z těchto čísel nejde vyjádřit jako kořen polynomu, ale jejich důležitost je stejně omezená – tato čísla byla zkonstruována právě proto, aby byla dokázána existence transcendentních čísel.

Zajímavější je zjišťovat transcendentalitu už známých (a užitečných čísel). Tady v mnoha případech platí něco podobného, co jsme už u viděli: odmocnina přirozeného čísla je buď přirozená, nebo iracionální. V tomto případě jsme na tom podobně a do algebraických čísel se bohužel moc dalších funkcí mimo odmocniny netrefuje: až na triviální případy jsou transcendentní logaritmy, exponenciace i goniometrické funkce, pokud je argument algebraické číslo. Dále víme, že i důležité konstanty jako π i e jsou transcendentní (a taky eπ), ale pak je tu velké množství jejich kombinací, například e + π, eπ apod., u nichž si nejsme jistí (součet transcendentních čísel nemusí být nutně transcendentní taky, např. π a −π hovoří za vše), a dokonce existuje velké množství konstant, u nichž ani nevíme, zdali jsou iracionální (a možná to ani dokázat nejde).

Summa summarum jsou algebraická čísla asi podobně užitečná jako konstruovatelná – pomáhají nám klasifikovat záhadné konstanty a odhalovat jejich podstatu. To je důležité v situaci, kdy potřebujeme znát přesnou hodnotu takové konstanty na libovolný počet desetinných číslic, protože můžeme použít jeden z obecných (a zpravidla dobře optimalizovaných) algoritmů a netvořit nějaký speciální.

Další stupeň algebraických čísel jsou takzvaná elementární čísla, která kromě klasických operací povolují v rovnicích i exponenciaci a logaritmy, a samozřejmě bychom si mohli vymyslet i další evoluce s dalšími operacemi jako to bylo u čísel konstruovatelných.

Čísla spočitatelná

Zatímco v předchozích dvou případech jsme se do doposud neprobádaných vod jen trochu ponořili, v tomto případě je začneme vesele brázdit. Spočitatelná čísla jsou nám programátorům z těchto číselných množin asi nejmilejší, neboť mají docela přívětivou definici:

Spočitatelné číslo je každé reálné číslo, které lze vypočítat nějakým algoritmem za konečný čas v libovolné přesnosti. Alternativní definice takového algoritmu může být například program, který generuje desetinné číslice takového čísla tak dlouho, dokud ho uživatel nezastaví, a takový program se jinak nikdy nezasekne. Zároveň nejsou kladeny nároky na zdroje, které takový program bude potřebovat, například na paměť či čas pro nalezení další číslice (pokud by takové nároky byly přidány, může to výslednou množinu zúžit).

Ve skutečnosti v podstatě všechna pro nás užitečná čísla jsou spočitatelná. Patří mezi ně čísla konstruovatelná i algebraická i jejich rozšíření pomocí klasických funkcí, a dokonce i konstanty jako e a π. Vše, co stačí nalézt, je algoritmus, který bude spolehlivě vypisovat jejich číslice, a s použitím aproximačních metod se dá takový algoritmus najít i u jinak těžko uchopitelných konstant či funkcí.

Pokud by definice pomocí algoritmu přišla někomu příliš nejednoznačná, je potřeba dodat, že se jedná o algoritmus pro takzvaný Turingův stroj. To je výpočetní model, kterému odpovídá většina programovacích jazyků, zároveň to je momentálně to nejlepší, co dokážeme realizovat (když nepočítám kvantové počítače) a možná to je i to nejlepší, co jde v našem vesmíru. Klidně bych místo Turingova stroje mohl použít klasické programovací jazyky jako C# nebo Luu, nebo třeba lambda kalkulus, ale výsledek bude ekvivalentní a nikdo tak nebude moct nic namítnout.

Spočitatelná čísla jsou z určitého hlediska maximum, co dokážou počítače reprezentovat a s čím dokážou numericky pracovat, protože každé takové číslo je vlastně algoritmus. Cokoliv složitějšího by už muselo být reprezentováno jen symbolicky.

Už asi není tak velkým zklamáním, že spočitatelná čísla, byť v praxi téměř nahrazující reálná, jsou stále stejně velká jako přirozená, protože opět pro definici takového čísla stačí nějaký algoritmus a ten lze reprezentovat přirozeným číslem. Možná to něco vypovídá o zbytku reálných čísel: jejich existence je nutná, ale jejich užitečnost minimální.

Dokážeme najít nějaké nespočitatelné číslo? Ano! Ve skutečnosti nejdůležitější vlastností nějakého programu není jeho výsledek, ale informace, zdali se zastaví nebo poběží navěky (a pokud je pro nás důležitá jiná informace, můžeme ji zakódovat tak, že se nový program v nějakém případě zacyklí a v jiném ne). Taková informace u každého programu nesporně existuje, ale není možné ji nějak spočítat. Jedná se o takzvaný problém zastavení a ten je algoritmicky nerozhodnutelný, takže to nejlepší, co můžeme udělat, je spustit takový program a doufat, že se zastaví.

S touto znalostí můžeme vymyslet číslo, které nějak kóduje tuto informaci o všech programech. Už víme, že každý program má nějaké svoje vlastní přirozené číslo, takže je můžeme pomocí něj seřadit a informaci, jestli se takový program zastaví nebo ne, kódovat jako 0 nebo 1 v desetinném rozvoji našeho čísla.

Podobný přístup využívá tzv. Chaitinova konstanta, což je pravděpodobnost, že se náhodně zkonstruovaný program zastaví. Ani jedno z těchto čísel nelze spočítat, protože takový program by musel rozhodnout problém zastavení a to nejde. Můžeme ho jen změřit (byť to závisí na použitém kódování a jazyce) nebo doufat, že nám ho sdělí Bůh, a pokud bychom ho znali celé, dokázali bychom tím vyřešit v podstatě všechny existující výpočetní problémy.

Čísla definovatelná

Pokud se nemůžeme spolehnout na algoritmus, zbývá nám už jen logika, pomocí které můžeme definovat další čísla. Ve skutečnosti všechny předchozí množiny jsme vlastně pomocí logiky definovali taky, protože jsme stanovili různé termíny, určili kontext, ve kterém se pohybujeme, a našli entity, které vyplývají z nějakých axiomů. Jazyk výrazů nám umožnil definovat konstruovatelná čísla, jazyk polynomů umožnil definovat algebraická čísla a jazyk Turingových strojů umožnil definovat spočitatelná čísla.

Důležité je vždy stanovit, v logice jakého typu se pohybujeme a jaký jazyk používáme. V opačném případě bychom mohli totiž začít definovat věci jako „nejmenší číslo, které nelze definovat pomocí 60 znaků“ (Berryho paradox), protože jsme zaměnili jazyk a metajazyk.

Definovatelnost nějakého čísla se intuitivně dá vyjádřit nějakým pravidlem, kterému vyhovuje pouze to konkrétní reálné číslo a žádné jiné. To, jakou logiku použijeme, ovlivňuje zbytek.

Pokud použijeme logiku 1. řádu a jazyk Peanovy aritmetiky (to je v podstatě axiomatický způsob definování přirozených čísel s operacemi sčítání a násobení), můžeme tak definovat některá reálná čísla, když se nám podaří definovat množinu, na jejíž hranici leží. Těm se říká aritmetická (nebo aritmeticky definovatelná) čísla. Pokud použijeme logiku 2. řádu (ta nám umožní mluvit o množinách prvků jako entitách) a stejný jazyk, dostaneme analytická (či analyticky definovatelná) čísla.

Tento způsob definování ve skutečnosti tvoří hierarchie, podle složitosti kvantifikátorů použitých uvnitř formulí v daných logikách. Už nejnižší úrovně zahrnují vše, co jsme viděli doposud, a zbytek jsou stále složitější úrovně čísel definovaných pomocí stále složitějších úrovní logik konečných i nekonečných řádů, zasahující dál a dál do reálných čísel, ale přesto stále spočetných.

Znamená to, že nikdy nebudeme schopni definovat každé jednotlivé číslo? Z pohledu výše uvedené definice tomu možná tak je, ale pokud je každé reálné číslo jen množina, co takhle se ho pokusit definovat pomocí samotné teorie množin a jejího jazyka? Pokud se budeme pohybovat uvnitř teorie množin, už víme, že nemůžeme definovat všechny prvky nespočetné množiny pomocí spočetné množiny konečných formulí, ale co když se přesuneme mimo teorii množin?

Pokud tak učiníme, potřebujeme napřed určit, v jakém modelu teorie množin se pohybujeme, tedy potřebujeme nějak zkonstruovat interní entity dané teorie z objektů externího světa. A tady narazíme na Skolemův paradox, jeden z nejpozoruhodnějších závěrů teorie množin, který tvrdí, že existuje model teorie množin, který je spočetný. Když se na teorii množin díváme zvenčí, máme plné právo zvolit si, jaký model použijeme, a tedy můžeme použít nějaký spočetný. To ovšem znamená, že každá (interní) množina v takovém modelu má nějaké vlastní přirozené číslo a dá se pomocí něj (externě) identifikovat. Když si tedy sundáme brýle v barvě teorie množin, přes které jsme viděli reálná čísla jako prvky nějaké nespočetné množiny, najednou se z nich stanou pouze prvky jednoho spočetného univerza, dostanou vlastní přirozené číslo a budou definovatelné.

Tento závěr je možná matoucí, ale jen ilustruje, že otázka definovatelnosti není tak jednoduchá, jak by se mohlo zdát, a naznačuje určité neúplnosti, které se dotýkají samotné podstaty matematiky.

Čísla normální

Doposud jsme se snažili posunout hranice známých čísel směrem do ryze reálných, ale co to zkusit obráceně? Když už máme jednou reálná čísla, můžeme zkusit zjistit, co všechno v nich vlastně je?

Je spoustu způsobů, jak reálná čísla členit, ale nejzajímavější z nich je pomocí číslic. Už od doby, kdy šlo spočítat všechny číslice různých iracionálních čísel, si všimli lidé, že v mnoha z nich zdánlivě nejsou žádné vzory, žádné obrazce, a říká se, že třeba v číslicích π se vyskytuje jakákoliv konečná posloupnost číslic, kterou chceme (třeba vaše rodné číslo), ať má jakoukoliv délku (ovšem zatím se to opravdu pouze jen říká).

Normální čísla představují množinu čísel, která je charakterizována trochu silněji: pro jakýkoliv číselný základ platí, že desetinný rozvoj těchto čísel obsahuje každou konečnou posloupnost číslic se stejnou četností, tedy že žádná skupina číslic nepřevažuje nad jinou.

Kupříkladu číslo 0,1234567891011121314151617181920... (Champernownova konstanta), složené z posloupnosti všech přirozených čísel, je normální při základu 10, ale při jiných základech normální není a tedy není (absolutně) normální. Ve skutečnosti jsou normální čísla asi ta nejhorší, která se můžeme snažit najít – vyplňují téměř celá reálná čísla a to takovým způsobem, že nebude přehnané říct, že ostatních čísel je jen 0 % ze všech reálných, ale zároveň se nám ještě nepovedlo žádné zkonstruovat.

S jistotou víme, že racionální čísla nejsou normální. Jejich desetinný rozvoj je buď ukončený (a pak začnou prevažovat nuly), nebo periodický, a tím pádem tam některé posloupnosti nebudou vůbec. Dál už je ale naše neznalost obrovská: víme s jistotou, že existují transcendentální i nespočitatelná čísla, která normální nejsou (třeba Liouvillova konstanta nebo moje zakódování problému zastavení), ale to je tak všechno. Nevíme, zdali π a e jsou normální, i když se to tak jeví. Stejně tak to vypadá, že i všechna iracionální algebraická čísla jsou normální, ale ani v tomto případě zatím žádné důkazy neexistují. Je zajímavé, že u čísel, jichž dokážeme vygenerovat miliony číslic, jsme zatím nebyli schopni dokázat nic o jejich rozložení, zatímco Chaitinova konstanta, nespočitatelné a ve své podstatě nepoznatelné číslo, má číslice naprosto náhodné a je to jediné mě známé normální číslo.

To jsme tedy moc nepochodili ve své snaze zjistit něco víc o reálných číslech. Drtivou většinu tvoří naprosto náhodná a nepopsatelná čísla, která tam musí být, ale jejich exempláře se skoro nedají najít a nevíme ani, jestli něco z toho, co známe, mezi ně patří. Taková už je podstata kontinua.


Tímto přehledem definitivně opouštíme reálná čísla a vydáváme se jinými směry, za hledáním nových číselných oborů a nových způsobů počítání, i když většina z nich i tak bude obsahovat v nějaké formě reálná čísla nebo jejich části, a pokud nějaký z takových systémů bude obsahovat reálná čísla, občas i v něm bude platit rozdělení, které jsme si ukázali, a bude aplikovatelné na všechny prvky takového systému.

Číselný svět, který jsem doteď vytvářel, konečně nabyl finální podoby, protože všechny další jeho podoby budou vzájemně nekompatibilní. Původní les racionálních čísel, mezi nimiž jsme našli čísla reálná, má své hranice. Za nimi je pláž, která postupně přechází do moře. Tam začínají algebraická čísla, pak spočitatelná a nakonec definovatelná a všechny jejich hierarchie. A dál už je jen moře normálních čísel, nestálé a chaotické. Na některých místech je pláž strmá, ale příboj klidný, tam jsou ta spočitatelná čísla, která nejsou normální. Zbytek pobřeží pokrývá mlha, která nám znemožňuje určit, jestli je moře klidné nebo rozbouřené, tam jsou zatím nejistá iracionální algebraická čísla. A jen v dáli, kde už je voda docela hluboká, se houpe na vlnách jedna osamělá bójka: Chaitinova konstanta.

Jsme na ostrově. Ostrově obklopeném nekonečným oceánem chaotických a nepoznatelných čísel.

pondělí 19. července 2021

O číslech, část 4: Čísla reálná

Do tého chvíle jsme se snažili rozšiřovat číselné množiny z praktických důvodů, abychom se zbavili omezení, která s sebou nesly operace sčítání a násobení. Pro rekapitulaci:

  • Začali jsme množinou přirozených čísel, ℕ. Můžeme jim též říkat „počítací“ čísla, neboť je lze využít pro reprezentaci počtu nějakých objektů. Zahrnuli jsme do nich i číslo 0.
  • Ať už chceme použít přirozená čísla pro vyjádření počtu množiny nebo třeba pro pozici pixelu na obrazovce, bylo by užitečné umět vyjádřit i změnu v takové hodnotě či posun v pozici. V jednom směru to jde, v druhém musíme přidat čísla opačná ke kladným přirozeným. Vzniknou tak „znaménková“ čísla ℤ, obvykle známá jako čísla celá.
  • Absolutní změna se sice hodí, ale jakmile potřebujeme používat nějaké jednotky, potřebujeme i relativní změnu. Přidáním poměrů mezi celými čísly vznikají čísla „zlomková“ či racionální, ℚ.

Tohle by se mohlo zdát jako vše, co existuje a co je potřeba; a opravdu pro většinu počítání, vážení a měření nic jiného potřeba není a i kdyby se objevilo číslo, které do našeho systému nezapadá, přinejmenším místo něj v praxi můžeme použít nějaký zlomek. Někteří by mohli tvrdit, že nic dalšího už existovat nemůže; pojďme ale hledat dál...

Doposud jsem popisoval hlavně číselné operace, díky kterým bylo potřeba naše číselné univerzum rozšiřovat. Co ale relace? Porovnávání dvou čísel šlo už od začátku – u přirozených čísel to bylo prosté zjištění toho, ke kterému číslu se od počátku (0) dostaneme dřív. Celá a racionální čísla už takto popsat nejde, ale pořád je klasické porovnávání jediné možné: chceme, aby určité pravdy o operacích ve vztahu k porovnání zůstaly nezměněny, například aby přičtení jakéhokoliv čísla nemělo vliv na výsledek, stejně tak vynásobení kladným číslem (a vynásobením záporným číslem ho otočilo).

A tak, aniž bychom to zpozorovali, vyplnily nové číselné množiny „díry“, chybějící nezabraná místa v tom, co jsme měli do té doby. Neexistovalo nic menšího než 0, ale přidání záporných čísel to vyřešilo a díky tomu vždy najdeme větší i menší číslo k nějakému existujícímu. Neměli jsme záruku, že mezi dvěma danými čísly existuje nějaké jiné, ale racionální čísla nám to garantují (stačí sečíst čitatele a jmenovatele a vytvořit z toho nový zlomek, ten bude ležet někde mezi oběma původními).

Povšimněme si, že existence nových číselných množin uspokojila tvrzení ve stylu „pro každé číslo“ nebo „pro každé dvě čísla“ atd. To jsou tvrzení v takzvané logice 1. řádu (predikátové logice), která tvoří věty vztahující se na omezený počet (libovolných) proměnných. Logika 1. řádu však stačí jenom na dosažení racionálních čísel; na dosažení dalších množin potřebujeme něco silnějšího, potřebujeme umět spojovat (potenciálně nekonečné) množiny čísel.

Díky tomu rychle nalezneme díry tam, kde předtím nebyly. Zkusme třeba vzít dvě množiny racionálních čísel, z nichž všechny prvky v druhé jsou větší než všechny prvky v první. Podobně jako předtím u racionálních čísel se nyní zeptáme, jestli existuje číslo mezi nimi, tedy větší než vše z první množiny, ale menší než vše z druhé. Je jasné, že tohle nemusí vždy platit, třeba v jedné množině bude jen číslo 2 a v druhé vše větší než 2, tam nová čísla hledat nechceme. Chceme dvojice množin ve tvaru „všechna čísla menší než x“ a „všechna čísla větší než y“, tedy kde obě množiny jsou otevřené (umožňují nám libovolně se blížit k něčemu, co v nich ale neleží).

V situaci, kdy máme vedle sebe dvě množiny bez krajních bodů, intuitivně musí nastat dva možné případy: buď je mezi nimi nekonečně mnoho čísel (třeba „vše menší než 1“ a „vše větší než 2“) a nebo ten krajní bod sdílejí, tedy x = y a je mezi nimi tedy jen jedno racionální číslo. Je to vše, co může nastat? Není...

Vezměme množiny „všechna kladná racionální čísla, jejichž druhá mocnina je menší/větší než 2“. Takové množiny evidentně existují a nepřekrývají se, neboť druhá mocnina kladných čísel nijak nemění jejich pořadí. Když vezmeme nějaký exemplář z jedné z množin, vždy můžeme najít další, který se druhou mocninou blíží ke 2 ještě víc, obě množiny jsou tedy otevřené.

Asi není překvapivé, že pokud ona společná hranice obou množin existuje, musí to být číslo, jehož druhá mocnina je 2, tedy odmocnina ze 2. Existuje takové číslo? Zatím známe jen zlomky, musí to být tedy zlomek a určitě musí existovat v základním tvaru (tedy čitatel a jmenovatel nemají společného dělitele krom 1). Druhá mocnina takového zlomku musí být rovna 2, tedy čitatel musí být dvojnásobek jmenovatele. Dvojnásobek přirozeného čísla je evidentně sudé číslo a druhá mocnina podílu je podíl druhých mocnin, tedy pokud je odmocnina ze dvou zlomek, druhá mocnina čitatele je sudé číslo a tím pádem i čitatel musí být sudé číslo (druhá mocnina lichého čísla určitě sudá nebude). Pokud je čitatel takového zlomku sudé číslo, je dělitelný dvěma, ale pak jeho druhá mocnina musí být dělitelná čtyřmi. Druhá mocnina jmenovatele ale musí být polovina druhé mocniny čitatele, tedy když je čitatel dělitelný čtyřmi, musí být dělitelná aspoň dvěma. To znamená, že i druhá mocnina jmenovatele je sudé číslo a jmenovatel samotný musí být sudé číslo taky. To je ale v rozporu s úvodním předpokladem, že obě čísla jsou nesoudělná, protože když je čitatel i jmenovatel sudý, oba jsou dělitelné dvěma a zlomek by měl jít zkrátit. Právě jsme ale dokázali, že by takový zlomek měl jít zkrátit vždy, tedy neexistuje v základním tvaru a nemůže tím pádem existovat vůbec.

Proč jsme si ale museli projít touto exkurzí v hledání děr, když to stejně jen skončilo u podobného problému jako minule, a sice že neumíme odmocniny? Důvod je ten, že kromě odmocnin neumíme i logaritmy, siny a další operace, mnohé jejich výsledky nejsou racionální čísla, i když by dávalo smysl o nich mluvit. Sice se můžeme snažit použít stejný trik jako minule, ale ať přidáme kolik operací chceme (tím vzniknou tzv. konstruovatelná čísla), pořád to nebude stačit. Ačkoliv existují množiny, které tím přeskočíme, teď už si můžeme dovolit vyjádřit všechno a menší množiny už identifikovat jen jako části celku.

Chybějící čísla, tedy čísla iracionální, zkonstruujeme lehce – jsou to prostě ony díry a navíc stačí jen jedna z těch množin, pokud sahá až do nekonečna. Stejným způsobem můžeme vyjádřit i původní racionální čísla, a dohromady tak vzniknou reálná čísla, ℝ. Každé reálné číslo je vlastně vyjádřeno množinou všech menších zlomků a naopak, díky tomu i každá množina racionálních i reálných čísel má supremum (nejmenší horní ohraničení).

Z tohoto hlediska jsme vyplnili všechny díry v racionálních číslech a vytvořili spojitý nekonečný pás čísel: kontinuum. Numericky zde už máme opravdu vše, zde leží všechny zajímavé číselné konstanty i všechny nezajímavé, všechny výsledky různých výpočtů a vše mezi nimi.

Kolik toho vlastně všeho je? Po minulých zkušenostech se může zdát, že jsme se opět nikam neposunuli, protože stále nová čísla definujeme jako množiny čísel předchozích. Jedna věc nám ale přece jen může naznačit, že se něco změnilo: doposud se z každé množiny (třídy ekvivalence) mohl vybrat nějaký exemplář, prototyp, který ji dokáže zastupovat. To zde už neplatí; iracionální číslo nemůžeme vyjádřit jedním racionálním, ani dvěma, ani jakýmkoliv jiným konečným počtem zlomků – potřebujeme jich mít nekonečno a jen tak můžeme ohraničit reálné číslo.

Faktem je, že reálných čísel je mnohem, mnohem více než racionálních. Ačkoliv by to mohlo vypadat, že ta výplň, kterou jsme museli přidat, je jen pár chybějících míst, ve skutečnosti to je drtivá většina; skoro všechna reálná čísla jsou iracionální.

Pro rekapitulaci z minula, v případě nekonečných množin je nějaká množina větší, pokud neexistuje žádný způsob, jak ji pokrýt prvky jiné množiny, tedy nelze žádným způsobem přiřadit každý prvek oné množiny k prvkům té, která má být menší. Důkaz, že reálných čísel je víc než přirozených, není zase tak těžký: i kdybychom měli nějakou posloupnost reálných čísel (tedy zobrazení přirozených čísel na reálná) a tvrdili, že je pokrývá všechny, vždy půjde zkonstruovat z celé té posloupnosti nové reálné číslo, které v ní nutně nebude. Stačí zajistit, aby bylo odlišné od všech čísel v té posloupnosti, což půjde prostě tak, že n-tá desetinná číslice onoho čísla bude odlišná od n-té číslice čísla v posloupnosti na pozici n (stačí vybrat nějakou jinou). Reálné číslo je možné určit pomocí posloupnosti desetinných číslic a výsledek tím pádem existuje, ale byl v naší posloupnosti opomenut. Tak to půjde vždy, takže nikdy nebude stačit nějaké takové nové číslo prostě zahrnout do nové posloupnosti, protože ani ta nebude úplná.

Jedna nekonečná posloupnost na reálná čísla nestačí; je potřeba nekonečné množství takových posloupností. Shodou okolností to je i velikost množiny všech podmnožin (tzv. potenční množiny) přirozených čísel, taková množina musí být totiž vždy větší než množiny původní, což platí u konečných i nekonečných množin bez rozdílu. Existuje tím pádem i způsob, jak každé podmnožině přirozených čísel přiřadit nějaké reálné, ale už není tak důležité takový způsob ukazovat.

Reálná čísla tvoří v našem imaginárním světě prostor samotný, je to půda pod nohama i vzduch okolo nás. Nejsou ani tak zajímavá svojí velikosti jako spíš jemností a precizností; vyplňují prostor mezi všemi ostatními body. Každé reálné číslo se dá přičítáním nebo odčítáním 1 dostat do intervalu mezi 0 a 1, takže jenom jeho desetinné číslice jsou opravdu důležité. Stejně jako u racionálních čísel nemusíme kopírovat celou věž přirozených čísel ke každému dalšímu číslu, protože to její charakter v podstatě nezmění; je to stále jediný zdroj velikosti. Ani záporná reálná čísla nejsou tak zajímavá, jsou to stále jen odrazy kladných čísel. A nulou se stále nedá dělit.

Z numerického hlediska jsme se tak opravdu dostali k maximu, kde můžeme vykonávat všechny možné konečné i nekonečné výpočty. Zde také obvykle končí středoškolský výklad o číselných množinách, ale to neznamená, že nemůžeme najít další. Stále máme mnoho možností, jak postupovat:

  • Iracionální čísla představují stále obrovskou a do velké míry neprozkoumanou množinu (už existujících) čísel. Tímto postupem sice nenalezneme nic nového, ale objevení dalších číselných množin pod reálnými čísly nám pomůže lépe poznat svět okolo.
  • Axiomatická metoda. Už máme snad hodně exemplářů čísel, abychom dokázali odvodit nějaké vlastnosti, které by měla splňovat, tedy různé axiomy. Třeba nalezneme další systémy, které se chovají podobně, i když nemusejí být nutně rozšířením reálných čísel (nebo naopak).
  • Množinově teoretická metoda. Doposud jsme s množinami pracovali jako už s existujícími koncepty, ale i ty je potřeba nějak ukotvit a přesně popsat. Spousta dalších objektů, které se dají chápat jako čísla, závisí na takovémto popisu.
  • Konstrukční metoda. Matematika skýtá spoustu dalších objektů, které na první pohled nevypadají číselně, ale třeba by se s nimi tak dalo nakládat. Minimálně stačí, aby v nich byla nějak obsažena reálná čísla a byly zachovány víceméně stejné vlastnosti.
  • Algebraická metoda. Stále máme některé operace, které nejsou vždy možné. Můžeme se snažit chápat některé výrazy jako čísla, identifikovat nové objekty a dodefinovat, co pro ně znamenají doposud známé operace.

To vše jsou směry, kterými se vydáme příště. Je ještě mnoho objektů, které se dají nazývat čísly, i když z číslic už většina z nich nebude. To pro nás však nepředstavuje žádnou překážku; číslice jsou jen užitečná notace, a i když se pomocí nich dá definovat vše, co jsme si doposud ukázali, nepředstavují samotnou podstatu číselých množin, stejně jako znaménko + nepředstavuje samotnou podstatu sčítání.

Uvidíme tedy příště, kam nás vítr číselného univerza zavane.

úterý 6. července 2021

O číslech, část 3: Čísla racionální

V minulém článku jsme poprvé rozšířili přirozená čísla a dostali jsme čísla celá. Naše motivace i dnes bude doplnění toho, co máme, aby se s tím lépe pracovalo, a zároveň se tím přiblížíme našemu vnímání světa okolo nás. Napřed ale krátké shrnutí.

Máme celá čísla, dokážeme je sčítat, odčítat a násobit a vše z toho jsou operace. Sčítání a násobení je komutativní, asociativní a distributivní, jak by se asi dalo očekávat. Každé číslo má inverzní prvek vůči sčítání, to je číslo opačné. Inverzní prvek složen s prvkem původním dá prvek neutrální, tedy každé číslo sečtené s číslem opačným dá 0.

Asi je patrné, že vůči násobení zatím nemáme inverzní prvek. Řečeno slovy smrtelníků, neumíme dělit. To se na základních školách obvykle řeší tak, že se žáci napřed naučí dělení se zbytkem. Není to ideální, ale zpočátku to stačí, a proto by možná bylo zajímavé se tomu chvíli věnovat a třeba díky tomu narazíme i na něco zajímavého.

Dělení se zbytkem není operace, má totiž dva výstupy. Při běžném dělení přirozených čísel si můžeme všimnout, že i když výsledek zatím neexistuje, přesto o něm můžeme hovořit. Výsledek 7÷2 musí být evidentně číslo, které vynásobeno 2 dává 7 (to je asi jasné), ale ačkoliv zatím neexistuje, můžeme se mu přiblížit. Násobení nějakým číslem je totiž monotonní (násobení větším číslem dává větší výsledek), takže kdyby číslo 7÷2 existovalo, nutně musí být mezi 3 a 4. 3 je totiž málo (2×3 = 6) a 4 je už moc (2×4 = 8). Proto dává smysl vzít jedno z těchto čísel, uznat, že jsme se do výsledku netrefili, a spočíst chybu. Na výběr máme „2 zb. 1“ a „3 zb. −1“; v praxi by asi bylo nejlepší mít oba výsledky kladné (a nebo aspoň zbytek kladný, ale zde už panují neshody).

Co vlastně takovýto zápis označuje? Vynásobení normálním číslem odpovídá vynásobení podílu a přičtení zbytku, tedy musíme obě operace kombinovat. To je ale zároveň vše, co můžeme s tímto výsledkem dělat; přičtení nedává smysl a dokonce ani porovnání (7÷2 a 15÷7 dávají stejný výsledek, ale poměry jsou jiné). Je to slepá ulička, můžeme se z ní vydat pouze tím směrem, kterým jsme přišli (ale slouží to jako ilustrace, že ne každé doplnění je dokonalé). Důvod všech problémů je ten, že onen výsledek není úplný, protože zbytek nám o výsledku neřekne nic, pokud neznáme dělitel.

Ale i z tohoto systému vycházejí existující použitelné techniky. První je prosté celočíselné dělení, kdy zbytek jednoduše zahodíme. Evidentně to už není matematicky hezké, ale počítače to stále ještě používají a mnoho programovacích jazyků to umožňuje, protože to v mnoha případech stačí a je to rychlé.

Druhý systém je takzvaná modulární aritmetika, kde zbytek po dělení (modulus) je aplikován na výsledek každé operace a dělitel je pevný, například 8 je totéž co 2 (mod 6) a každý násobek 6 je vlastně 0 (mod 6). Tím se nám přirozená čísla zredukovala do konečné cyklické množiny, ale má to překvapivý důsledek: pokud je velikost takové množiny prvočíslo, můžeme dělit! Například 1÷3 je 5 (mod 7), protože 3×5 je vlastně 1 (mod 7). To nám sice nezapadá do plánu, protože se těžko může jednat o rozšíření celých čísel, ale někdy se k tomu ještě možná vrátíme.

Když tedy podíl se zbytkem není funkční, co zkusit stejnou taktiku jako minule? Z teď už celých čísel sestavíme dvojice a každá z nich bude ukazovat účinek násobení jiným číslem. Třeba (1, 2), (2, 4), (4, 8), (8, 16) atd. reprezentují účinek násobení 2 a budeme je považovat za rovné 2. Stačí dvojice otočit a voilà, máme ½ = (2, 1), (4, 2), (8, 4), ...

Dostáváme zlomky, dokonce jsou patrné přímo z toho zápisu: a/b = (b, a). Ale něco je přesto odminula jinak – ekvivalence mezi zlomky nejsou tak „velké“ jako u celých čísel. Každé záporné celé číslo bylo jen odrazem přirozeného čísla, bylo jednoduché je očíslovat, ale zde vznikají čísla, která nejsou odrazem, dokonce takových čísel je většina. Jenom zlomky ve tvaru 1/n jsou odrazem n, ale jakmile je začneme sčítat nebo násobit, otevře se nám celá košatá struktura racionálních čísel, ℚ.

Slovo „racionální“ pochází s latinského rationalis s významem „rozumný“, „rozumový“, ale i „poměrový“ (podle všeho společným rysem je něco pochopitelného, spočitatelného). Racionální čísla tedy reflektují poměry mezi celými čísly. V případě celých čísel jsme dokázali ke každé třídě ekvivalence najít přirozeného reprezentanta (dvojice, kde jednou složkou byla 0), zatímco zde je reprezentant dvojice nesoudělných čísel (čísel, která nemají společného kladného dělitele kromě 1). Zároveň můžeme vyžadovat, aby jmenovatel byl kladný, protože z nám známé aritmetiky stačí mít znaménko u čitatele.

Povšimněme si, že zatím se snažím vyhýbat definici pomocí jakékoliv notace, například pomocí desetinné čárky. Je to sice taky validní možnost, ale stejně jako u celých čísel je dobré znát podstatu a smysl každé nové číselné množiny, ne jen zápis. Na druhou stranu zlomky mají nevýhodu v tom, že jich je hodně ekvivalentních; můžeme je rozšiřovat a krátit bez změny hodnoty. Totéž platilo u ekvivalencí celých čísel, ale tam není potřeba mít dvojice. Násobení zlomků je stejně lehké jako sčítání celých čísel, ale sčítání zlomků už vyžaduje jisté přemýšlení.

Zároveň tu nastává první obtíž v naší cestě matematickým univerzem a sice situace, kdy ve jmenovateli je 0. Když pomineme všechny poučky o dělení nulou, může se to zpočátku zdát jako rozumné číslo a můžeme se pokusit ho analyzovat. Takové číslo jde evidentně rozšířit, takže čitatel může být cokoliv a hodnota se nezmění, všechny tyto zlomky můžeme tedy označovat třeba jako nekonečno, . Též evidentně + = a −∞ = . Dál však už následují jen anomálie: přičtení čehokoliv k dá opět , a tak nám vznikla černá díra, která pohlcuje vše, co se do ní přidá, bez možnosti návratu.

Stojíme tedy před dvěma možnostmi: buď připustíme nekonečno jako validní objekt, ale budeme si muset dávat pozor při každé operaci, aby se tam nevyskytlo, nebo preventivně zakážeme dělení nulou. Vyjadřovací síla obou možností je stejná, ale s tou druhou se lépe pracuje, a tak se matematici dohodli, že dělit nulou nebudou. A tak to zůstává doposud, i když se k tomu občas z různých směrů můžeme přiblížit.

Jaké jsou další vlastnosti racionálních čísel? Dají se výborně použít na vzdálenosti a jiné míry z reálného světa, kde se používají praktické jednotky. Pomocí celých čísel bychom dokázali uchopit jen celé násobky nějaké základní jednotky, ale racionální čísla nám umožňují vzít libovolně malý zlomek jednotky jako novou jednotku a s tou pracovat. Díky tomu se jedná o matematicky hustou množinu: mezi každými dvěma racionálními čísly lze vždy najít další (a tím pádem nekonečně mnoho) a jednomu číslu se můžeme blížit tak moc, jak jen chceme.

Kam bychom měli racionální čísla v našem světě umístit? Podle mě představují hustý les okolo naší věže. Mezi každými dvěma stromy najdeme další strom, keř, kapradinu či jen stéblo trávy, ale vždy tam něco bude. Přesto je ten les relativně rovný, protože racionální čísla nepřidávají žádný nový koncept mohutnosti navíc; vše již reprezentuje nekonečně vysoká věž uprostřed, a skutečně zajímavé jsou jen kladné zlomky mezi 0 a 1.

Kolik rostlin ale v našem lese roste? Může se zdát, že to musí být minimálně nekonečněkrát víc, než kolik bylo celých čísel, ale ve skutečnosti jsme se stále vůbec nepohnuli. Dvojic celých čísel (ℤ×ℤ) je překvapivě stále stejně jako přirozených čísel; můžeme je totiž uspořádat do tabulky (každý řádek odpovídá první složce a každý sloupec druhé složce, každá buňka je pak jedna dvojice) a projít celou tabulku z rohu po stále se zvětšujících úhlopříčkách. Už je jedno, že jen některé dvojice odpovídají prvkům z ℚ, ty nevyhovující prostě přeskočíme, ale tím se ta množina určitě nezvětší.

Kdybychom tedy chtěli, může každý článek naší věže ukazovat na jeden a právě jeden strom v okolním lese. Zdá se, že díky nekonečnu je možné všechno, a taky by se mohlo zdát, že racionální čísla nám bohatě stačí, když jsou přece všude, ne? Opak je však pravdou a příště si vysvětlíme, jak najít i v racionálních číslech díry.

Poznámka: Když připustíme, že výsledek dělení se zbytkem může být kterákoliv dvojice čísel splňující onen vztah, můžeme definovat i dělení nulou. Výsledkem takového dělení je cokoliv a zbytek je původní číslo. Podobně na tom nakonec je i zbytek po dělení nekonečnem, akorát tam je podíl 0.

středa 30. června 2021

O číslech, část 2: Čísla celá

V minulém článku jsme položili základy matematického univerza, přirozená čísla ℕ, která se ve své nekonečnosti tyčí jako věž uprostřed toho, co známe. Někdo by mohl říct, že to je i vše, co existuje, a z určitého hlediska by měl i pravdu – pokud je vesmír ve své podstatě konečný diskrétní (nespojitý) objekt, jediná „pravá“ čísla jsou ta přirozená. Matematikům (a zatím i běžným lidem) to ovšem nestačí, protože přirozená čísla v některých případech nejsou „hezká“ a chybí jim určité vlastnosti, díky kterým by se s nimi i v praxi lépe zacházelo.

Napřed je potřeba ale zmínit něco o ekvivalencích. Z matematického hlediska se každému vztahu (relaci) mezi nějakými objekty smí říkat ekvivalence, pokud splňuje 3 základní pravidla: vyplývá z identity (reflexivita; každý objekt je ekvivalentní sám sobě), je symetrická (můžeme prohodit porovnávané objekty bez změny výsledku) a tranzitivní (můžeme přeskakovat články v řetězci ekvivalencí). Pokud například každý objekt má jednu z konečného počtu možných barev, relace „má stejnou barvu jako“ je ekvivalence a obecně jakákoliv relace vycházející z ekvivalence nějaké vlastnosti je sama ekvivalence.

Ekvivalence je užitečná, protože nám umožňuje zahodit rozlišující vlastnosti objektů; je to nejzákladnější abstrakce. Umožní nám také definovat nové objekty, kterým říkáme třídy ekvivalence. Když použijeme stejný příklad, jednotlivé třídy ekvivalence budou všechny objekty se stejnou barvou; vlastně je seskupujeme podle nějakého klíče (ten ale není sám o sobě potřeba, když nám stačí objekty porovnávat). Dostaneme tak objekty (množiny) jako „všechny červené věci“, „všechny modré věci“, „všechny zelené věci“ atd. Aniž bychom doposud definovali, co vlastně je barva, nyní stačí použít trik: barva je totéž co její třída ekvivalence, tedy například objekt „červená“ je definován jako „všechny červené věci“.

To ve skutečnosti není ani tak divné, jak by se mohlo znát: každý člověk schopný rozpoznávat barvy se takhle učí popisovat svět. Napřed jako děti vidíme okolo sebe objekty, které něco spojuje, víme, že mají stejnou barvu, ale nevíme, co je to barva; je to pro nás zatím moc abstraktní. Pak pochopíme, že existuje barva jako individuální věc, kterou může každý objekt mít. Ani všechna znalost fyziky a biologie člověku nepomůže v definování toho, co vlastně barva je: z určitého pohledu to jsou prostě všechny stejnobarevné objekty a to je to jediné, co dokážeme rozeznat.

S tímto možná zdlouhavým úvodem se můžeme podívat na první překážku v dokonalosti: odčítání. Jak již bylo uvedeno minule, odčítání přirozených čísel není operace. Můžeme se ptát, k čemu musíme přičíst 2, abychom dostali 5 (tím jsme charakterizovali odčítání jako inverzní operaci ke sčítání), ale pro výsledek 0 nebo 1 základ nenajdeme.

A tak na pomoc musí přijít čísla celá, ℤ. Název trochu nedává smysl vzhledem k tomu, co jsme viděli doposud, protože všechna čísla zatím byla celá (nezlomková), takže by možná bylo lepší jim (zatím) říkat „znaménková“. Pro každé přirozené číslo n vytvoříme dva nové zápisy, +n a −n pro kladné a záporné číslo se stejnou velikostí. Zároveň hned můžeme definovat absolutní hodnotu |·|, která prostě odstraní znaménko a dovolí nám vrátit se k původnímu n. Když je znaménko +, dohodneme se, že ho nemusíme uvádět.

Je ovšem takováto definice matematická? Svým způsobem ano (matematika nám nebrání prostě jen tak něco definovat), ale možná by bylo hezké znaménka + a − zkonstruovat jako nějaké objekty. To sice jde, ale je to trochu těžkopádné (a co teprve +0 a −0), proto by možná bylo hezčí použít jinou konstrukci samotných celých čísel. Napřed musíme umět vytvořit uspořádané dvojice, což vypadá jednoduše, ale když máme zatím jen (neuspořádané) množiny, může to být trochu oříšek. Řešení nicméně není složité, stačí definovat (a, b) = {{a}, {a, b}}. Ať jsou a a b cokoliv, vždy je lze z této množiny vytáhnout a zjistit, na které jsou pozici.

Nyní konečně můžeme definovat celá čísla. Přibereme si na pomoc množinu všech dvojic přirozených čísel (obvykle značenou ℕ×ℕ). Poté si vymyslíme ekvivalenci, že dva takové páry jsou si ekvivalentní právě tehdy, když jsou čísla v nich stejně uspořádána a je mezi nimi stejná vzdálenost. Například pár (0, 2) je ekvivalentní s (1, 3), (2, 4) atd., ale ne s (2, 0) nebo (6, 12). Nyní stačí rozdíl mezi těmito čísly chápat jako celé číslo, respektive (a správněji) celé číslo bude třída ekvivalence nad ℕ×ℕ vzhledem k výše definované ekvivalenci. Tím se nám podařilo formalizovat intuici rozdílu i důvod, proč musíme zavádět novou číselnou množinu. Třeba původně přirozené a nám známé číslo 1 se stane množinou {(0, 1), (1, 2), (2, 3), (3, 4), ...}, zatímco −1 bude {(1, 0), (2, 1), (3, 2), (4, 3), ...}. Otočení znaménka je i v této podobě jednoduché, prostě stačí otočit každou dvojici. Sčítání je stejně lehké, prostě se každý prvek jedné množiny sečte po složkách se všemi z druhé a výsledky se sjednotí do nové množiny. Jen je potřeba dávat pozor na to, že sečtení výše zmíněných čísel (1 + (−1)) dá {(1, 1), (2, 2), (3, 3), ...}, ale (0, 0) chybí, takže je potřeba vždy výsledek ještě „zúplnit“. To už je ale věc vcelku triviální, protože vždy bude na doplnění potřeba přidat jen konečný počet prvků z kraje.

Možná je na místě ptát se, jestli je potřeba opravdu takový silný matematický aparát vzít na tak jednoduchou věc, tedy přinejmenším já se tak musím ptát, když vidím, kolik odstavců na to bylo potřeba. Smyslem této anabáze však není objevit celá čísla, ale naučit se určité postupy, které se dají aplikovat na mnoha místech. Těžko na cvičišti, lehko na bojišti.

Samozřejmě to neznamená, že by tento způsob byl jediný možný. Například může někdo namítnout, že 1 ≢ +1, tedy že 1 v ℕ a 1 v ℤ nejsou tytéž objekty, protože mají jinou strukturu. Taková forma matematického polymorfismu ale není nikterak nezvyklá; koneckonců u přirozených čísel jsme se taky setkali s několika definicemi, které jejich strukturu zcela měnily, ale výsledek se „choval“ stejně. Takovému vztahu se říká izomorfismus, když prvky nějakých dvou množin jsou nerozlišitelné vzhledem k operacím. Pokud by pak někdo namítal, že neví, kterou reprezentaci si vybrat, je to jedno, pokud jsou všechny ekvivalentní (nebo si potom může vybrat třídu ekvivalence pro izomorfismus). Ale pokud bych měl podat další možnou definici celých čísel, může třeba odpovídat definici ℕ pomocí S: přidáme novou operaci P (předchůdce), takže třeba −2 bude P(P(0)). Jenom nesmíme míchat S a P, to už by nám začalo vznikat něco jiného.

Ale hurá, máme celá čísla a můžeme tak odčítat, aniž bychom se museli bát, že narazíme na jednostranné omezení přirozených čísel. Tím se stává odčítání plnohodnotou inverzní operací k přičítání, ačkoliv odečíst něco znamená jen přičíst opačné číslo; v dvojicové konstrukci je to dokonce ten nejjednodušší způsob. Nakonec jsme dosáhli Pyrrhova vítězství, neboť pokus o doplnění odčítání nad přirozenými čísly, kde neexistuje číslo opačné, nás přinutil ho napřed zavést, ale odčítání je pak vlastně zbytečné chápat odděleně od sčítání. Kdyby navíc sčítání nebylo komutativní (což naštěstí zatím je), používat odečítání by bylo nebezpečné, protože bychom nedokázali rozlišit −a + b od b + (−a). To se nám ještě v budoucnosti připomene.

Kam však umístíme celá čísla v naší analogii s věží? Podle mě je není potřeba dávat nikam, protože už tam dávno byly. Kde? Inu stačí vylézt tak vysoko, že už nebudeme vědět, jak hluboko pod námi je země. Pak klidně můžou cihly nad námi být kladná čísla a cihly pod námi záporná. To docela dobře ilustruje fakt, že přirozená čísla charakterizují „pozici“ (s nějakým základním bodem, počátkem), zatímco celá charakterizují „posun“ (bez pevného počátku, aplikovatelný kdekoliv). Pokud by to však někomu nestačilo, může okolo věže vykopat příkop a zalít ho vodou, aby se věž hezky zrcadlila na hladině.


Asi je jasné, že množina celých čísel je opět nekonečná, když jsme vzali jen zrcadlový obraz přirozených čísel, ale jak moc je nekonečná? Překvapivě není o moc větší než přirozená čísla, vlastně není vůbec větší než přirozená čísla. Argument je stejný jako minule: dokážeme přirozená čísla zobrazit na celá a naopak. V podstatě pouze chceme celá čísla seřadit a očíslovat, a to je přece hračka: 0, 1, −1, 2, −2, 3, −3, 4, −4, 5, −5 a tak dále. Nejsou tam však kladná čísla jen s poloviční četností? Nu, tak tady jich je víc: 0, 1, 2, −1, 3, 4, −2, 5, 6, −3, 7, 8, −4, ... Četnost ztrácí smysl, když můžeme prvky vybírat v libovolném pořadí a v podstatě volit pořadí tak, aby se celá posloupnost blížila k nějaké četnosti (důsledek toho, že součet nekonečné řady se může změnit, pokud přeházíme prvky). Co se ovšem nezmění je fakt, že tam jsou všechna čísla, žádná nepřebývají a žádná nechybí. Obě množiny jsou tedy stejně velké.

Musíme si tím pádem dávat pozor, když říkáme, že se naše číselné univerzum zvětšilo. Svým způsobem v něm máme stále stejně „hmoty“, jen jsme se naučili ji lépe organizovat, abychom zacelili neúplnosti, na které bychom jinak mohli narazit neopatrným používáním dostupných operací. V tom budeme pokračovat i příště, kdy se podíváme na jednu docela hustou množinu, kterou budou racionální čísla.

neděle 20. června 2021

O číslech, část 1: Čísla přirozená

Podle Bible na počátku bylo slovo (podle Silmarilionu to slovo bylo = „buď“). Matematika v tom má jasno taky: na počátku nebylo nic. Ale i z ničeho se dá vytvořit něco, neboť to nic se dá označit jako jediné číslo: 0. A tak, ve snaze popsat nic, vzniklo něco: číslo 1. Tak vznikla nejdůležitější dvě čísla a číslo 2 muselo následovat, tak vznikla tři čísla a už to šlo dál a dál. V tomto jediném okamžiku vznikla přirozená čísla.

Na tomto jediném příkladu se dá ukázat jeden z nejmocnějších matematických dokazovacích aparátů: matematická indukce. Té stačí dva předpoklady (1. máme počátek a 2. vždy dokážeme udělat krok) a díky tomu víme, že dokazované tvrzení platí pro vše tímto dosažitelné. V tomto případě se jedná o existenci samotnou a tak jsme dokázali, že existují přirozená čísla a je jich nekonečně mnoho.

Proti tomuto závěru bojují matematičtí filosofové (spíše filosofové než matematici), kteří si říkají ultrafinitisti. Tato (v minulosti početnější frakce) filosofů tvrdí, že existují jen konečné objekty a celá přirozená čísla jsou jako množina moc velká, aby mohla vůbec existovat. Pokud by tomu tak ale bylo, musí existovat nějaké největší přirozené číslo. Dejme tomu, že to je třeba 10, ale pak máme 11 přirozených čísel (s nulou) a nikdo nedokáže, proč by 11 nemohlo existovat, když existuje 10.

Snad se mi tím povedlo podat přesvědčivý argument, že přirozená čísla existují a je jich opravdu nekonečně mnoho. Přesto se však může člověk ptát, jestli něco takového může existovat v reálném vesmíru. Odpověď je ano, minimálně opticky. Představte si koleje, které směřují od vás nějakým směrem, dokonale rovné. Kdybych se na ně chtěl dívat z boku, určitě se do mého zorného pole nevejdou, ale jakmile se otočím a dívám se v jejich směru, nikdy moje zorné pole v daném směru neopustí. Doposud nereálné nekonečno se najednou stane jedním bodem, do kterého směřují, úběžníkem.

Každý pražec je jedno přirozené číslo.

Přirozená čísla jsou pilířem celé matematiky, stanou se tedy nekonečně vysokou, a přesto zcela viditelnou věží, která bude uprostřed toho, co nakonec poznáme jako číselné univerzum.

Co ale vlastně přirozená čísla jsou? Už jsme je viděli vzniknout jednou, ale matematika často dokáže najít celou škálu objektů, které se na první pohled tváří odlišně, ale ve skutečnosti mají stejnou strukturu i chování (jsou izomorfní).

První takový postup je funkcionální, pokud vyjdeme z Peanových axiomů. To je způsob, jak identifikovat přirozená čísla několika základními pravidly: 1. existuje počátek (zatím mu budeme říkat o), 2. existuje operace S(n) (následovník), 3. o není následovníkem žádného jiného prvku, 4. každý jiný prvek je následovníkem právě jednoho jiného prvku a 5. každý prvek je dosažitelný z počátku konečným opakováním S(n).

Ve skutečnosti o může být cokoliv, ale je užitečné stanovit o = 0 (někteří lidé ale chápou pojem přirozená čísla bez nuly a pro ně platí o = 1). Tímto je charakterizována podstata přirozených čísel jako řetězu s jedním koncem, přičemž mezi jeho články se můžeme libovolně pohybovat. Dokonce můžeme tento pohyb mezi články chápat jako články samotné, jako opakované aplikování oprace S(n), tedy 0 je funkce f(n) = n, 1 je funkce f(n) = S(n), 2 je funkce f(n) = S(S(n)) a tak dále. Sčítání je v tomto systému jednoduché, prostě aplikujeme jedno číslo na druhé (1 + 2 = 1(2) = S( S(S(n)) )).

Druhý postup je množinový a je podobný tomu, co jsme viděli doposud. Na počátku nemáme nic; to charakterizujeme prázdnou množinou ∅ = 0. Nyní máme {∅} = 1, tedy množinu obsahující prázdnou množinu ∅. Teď už máme {0, 1} = {∅, {∅}} = 2, potom {0, 1, 2} = {∅, {∅}, {∅, {∅}}} = 3 a podobně. Podobá se to postupu z prvního odstavce, jen místo počítání toho, co máme, se to celé pokusíme uzavřít do množiny a chápat to jako další známý objekt. Tohle má jednu výhodu oproti předchozím metodám: tento postup má konec, respektive něco, k čemu směřuje. Je to množina {0, 1, 2, 3, 4, …} = ℕ, tedy celá množina všech přirozených čísel. Někdo by to možná mohl považovat za nové číslo... ale to až jindy.

Nyní nám zbývá ještě shrnout, co s přirozenými čísly můžeme určitě dělat. Základní operace je následovník, tedy zvýšení o 1. Můžeme je porovnávat podle toho, kterého ze dvou čísel dosáhneme pomocí následovníka dříve, když začneme na 0. Opakované aplikování následovníka je sčítání a opakované sčítání je násobení. 0 a 1 mají speciální místo: 0 je neutrální prvek pro sčítání (nemění výsledek) a nulový prvek pro násobení (dává vždy stejný výsledek), zatímco 1 je neutrální prvek pro násobení. Nulový prvek pro sčítání neexistuje.

Co s přirozenými čísly nemůžeme dělat? Nemůžeme je odčítat a nemůžeme je dělit; jsou to sice nám dobře známé operace, ale ne pro přirozená čísla: 0 − 1 neexistuje, protože neexistuje žádné přirozené číslo n, pro nějž by platilo n + 1 = 0 – nula přece není následovníkem! Odčítání a dělení jsou tedy „polooperace“; jsou definovány jen pro některé operandy a při každém jejich použití si musíme dávat pozor, jestli to máme dovoleno.

Na závěr ještě poznámka o velikosti množiny přirozených čísel, protože se nám bude hodit příště. Každá množina, která by byla menší než přirozená čísla, už musí být konečná; ℕ je tedy z určitého pohledu nejmenší nekonečná množina. Někoho by sice mohlo napadnout, že třeba {2, 3, 4, …} je menší než {0, 1, 2, 3, 4, …}, když do ní musíme přidat dva prvky, ale ve skutečnosti stačí od každého prvku první množiny odečíst 2 (tady to naštěstí jde) a dostaneme ℕ, aniž bychom museli něco přidávat nebo odebírat. Stejně tak ke každému prvku ℕ stačí přičíst 2 a vrátíme se na první množinu. Když se to dá udělat bez přidávání nebo odebírání, musí obě množiny nutně mít stejnou velikost. Jednou tuto velikost budeme značit ℵ₀, ale na to si ještě počkáme.

Toliko tedy k přirozeným číslům; další články bude spojovat společné téma a sice pokus o dodefinování odčítání a dělení, aby se z nich staly opravdové (bezpečné) operace. Čekají nás čísla celá.

Poznámka: Množinový způsob konstrukce přirozených čísel není zdaleka jediný možný; někoho by třeba mohlo napadnout jednodušší S(n) = {n} (namísto S(n) = n ∪ {n}). V principu to jde, ale narozdíl od hezkého důsledku klasické množinové konstrukce by se musela množina ℕ definovat separátně a posloupnost jejích prvků by se blížila k něčemu, s čím by klasické teorie množin měly docela problém.