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

Žádné komentáře:

Okomentovat