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ě.