V této části textu zúžíme naši pozornost na množiny tvořené čísly. Tyto množiny budou jedním z hlavních objektů našeho zájmu v BI-ZMA.
Množinu přirozených čísel29 označujeme symbolem \(\N\), \begin{equation*} \N := \{1,2,3,\ldots\}.\end{equation*} Přirozená čísla abstrahují „počet“ objektů. Na obrázku 3.2 jsou uvedeny tři sady různých geometrických útvarů. Příklady (a), (b) i (c) mají tu vlastnost, že vždy obsahují tři útvary. Tento postřeh vyjadřujeme konstatováním, že útvary jsou tři a značíme arabskou číslicí \(3\).
Všimněme si, že množina přirozených čísel je uzavřená vůči násobení a sčítání. Přesněji, násobením a sčítáním dvou přirozených čísel dostaneme opět přirozené číslo: \begin{equation*} \begin{aligned} \text{pokud } a,b\in\N &\text{ potom } a+b\in\N, \\ \text{pokud } a,b\in\N &\text{ potom } a\cdot b\in\N. \end{aligned}\end{equation*}
Obrázek 3.2: Skupiny symbolů (a), (b) a (c) mají jistou společnou vlastnost, každá z uvedených skupin obsahuje \(3\) symboly.
K docenění pozičního zápisu čísel pomocí arabských30 cifer se zkuste zamyslet nad problémem provádění algebraických operací (sčítání, násobení, odčítání) pomocí římského číselného systému. Není to nic jednoduchého, že? Arabské číslice v Evropě propagoval Leonardo z Pisy (známý pod jménem Fibonacci) na začátku třináctého století. V roce 1202 vydal spis Liber abbaci („Kniha o počítání“), který významně napomohl rozvoji obchodu a vědy. Další zajímavosti o této „první výpočetní revoluci“ se může zvídavý čtenář dozvědět v poutavé knížce (Devlin, 2011).
Množina \(\N\) však není uzavřená vůči odečítání dvou přirozených čísel. V případě sčítání můžeme tento fakt také formulovat tak, že rovnice
K odstranění těchto nedostatků musíme k přirozeným číslům přidat nulu a záporná čísla. Dostáváme tak množinu celých čísel, \begin{equation*} \Z = \{\ldots,-3,-2,-1,0,1,2,3,\ldots\}.\end{equation*} V této množině už můžeme násobit, sčítat i odčítat, ale výsledek operace dělení už tuto množinu opustí. Tedy řešení rovnice
Množina racionálních čísel je tvořena řešeními rovnice (3.6) s nenulovým \(b\), která zapisujeme jako zlomky32
Racionální čísla \(\Q\) spolu s operacemi sčítání \(+\) a násobení \(\cdot\) splňují veledůležité vztahy
Předchozí odstavec lze shrnout do krátkého konstatování, že množina racionálních čísel \(\Q\) spolu s operacemi sčítání \(+\) a násobení \(\cdot\) tvoří těleso. Studiem číselných těles se zabývá35 oblast matematiky nazývaná obecná algebra. Konečná36 tělesa nacházejí široké uplatnění v moderních šifrovacích algoritmech a počítačové bezpečnosti vůbec.
V množině racionálních čísel lze tedy provádět tzv. algebraické operace sčítání, odčítání, násobení a dělení (nenulovými čísly). Toto „číselné prostředí“ plně dostačuje k provádění jednoduchých účetních a obchodních operací, které motivovaly vznik algebry ve středověku. Bohužel (nebo možná naštěstí) tato číselná množina je nedostatečná k popisu celé řady praktických problémů. Na druhou stranu, ani takto starý koncept jako jsou racionální čísla, nelze plně modelovat na moderních počítačích (nemáme k dispozici nekonečnou paměť). Při provádění algebraických operací v racionálních číslech ovšem nedochází k zaokrouhlovacím chybám.
Na začátku této kapitoly jsme si ukázali, že přirozených a celých čísel „není dost“. K uspokojení našich požadavků bylo vždy nutné další čísla přidat. Podobná situace nastává i v případě racionálních čísel. Tato množina je sice již uzavřená vůči binárním algebraickým operacím sčítání a násobení, ale tentokrát narazíme na potíže při analýze následujícího geometrického problému. Uvažujme čtverec o straně délky \(1\) (racionální číslo), viz obrázek 3.3.
Obrázek 3.3: Čtverec o straně délky \(1\) a jeho úhlopříčka o straně délky \(x\).
Ptáme se, jaká je délka jeho úhlopříčky. Tu lze zkonstruovat pomocí pravítka a kružítka. Na obrázku 3.3 je tato označena písmenem \(x\). Podle Pythagorovy věty platí
Mezi významná iracionální čísla dále patří například Ludolfovo37 číslo (tradičně označované řeckým písmenkem \(\pi\)) či Eulerova38 konstanta (tradičně označované latinským písmenem \(\e\)). V jistém smyslu je iracionálních čísel podstatně více39 než racionálních, lze říci, že „typické“ reálné číslo je iracionální. Více si o vztahu těchto dvou množin povíme v BI-ZMA. Čtenáři je jistě známo, že čísla si můžeme představovat jako body ležící na přímce, tzv. číselné ose. Na přímce je zvolen význačný bod odpovídající nule a číslo \(a\) vynášíme na osu ve vzdálenosti \(|a|\) od bodu \(0\). Kladná čísla umisťujeme napravo a záporná čísla nalevo od \(0\).
Obrázek 3.4: Číselná osa
Pokud bychom na osu vynášeli pouze racionální čísla, výsledná přímka by byla „děravá“. Například ve vzdálenosti \(\sqrt{2}\) (napravo i nalevo) od bodu \(0\) by nebyl zanesen žádný bod. K zaplnění číselné osy je potřeba uvažovat i iracionální čísla. Požadavek na neděravost reálné osy přesněji vyjadřuje „axiom úplnosti“. Podrobněji se touto problematikou budeme zabývat v jedné z prvních přednášek BI-ZMA.
Poznamenejme pro zajímavost, že rozhodnout o racionálnosti či iracionálnosti čísla nemusí být jednoduché. Dokonce existují čísla, o kterých se doposud neví, do které množiny patří. Příkladem může být Euler-Mascheroniho konstanta definovaná vztahem40 \begin{equation*} \gamma := \lim_{n\to+\infty} \left(\sum_{k=1}^n \frac{1}{k} - \ln n \right) \approx 0.5772156649.\end{equation*} Více informací o tomto konkrétním problému lze nalézt v (Weisstein, b.r.).
Reálná čísla v plné obecnosti zdaleka nejde reprezentovat v počítači. Místo reálných čísel se používají tzv. čísla s plovoucí desetinnou čárkou, či strojová čísla (floating point numbers, familiárně floaty). Podle toho kolik bitů použijeme k jejich reprezentaci (v dnešní době typicky 64 bitů), takovou získáme maximální přesnost. Na tomto místě nebudeme příliš zabíhat do detailů, strojová čísla a práci s nimi přesně popisuje IEEE standard 754 (IEEE, 2008). Alespoň uveďme několik zásadních poznámek týkajících se strojových čísel:
Mohlo by se zdát, že po doplnění racionálních čísel iracionálními čísly již není nutné žádná další čísla přidávat. Všimněme si, že geometrickou úvahu z minulého odstavce lze prostě redukovat na požadavek (viz rovnici (3.10)), aby rovnice \begin{equation*} x^2 - 2 = 0\end{equation*} měla v dané číselné množině řešení (zde \(\pm\sqrt{2}\in\R\)). Ovšem už hned jednoduchá obměna této rovnice,
Algebraické operace na množině \(\CC\) jsou zavedeny následovně \begin{equation*} (a + b \ii) + (c + d \ii) := (a+c) + (b+d) \ii,\end{equation*}
Komplexní čísla si lze představit například jako body v komplexní rovině. Vodorovnou osu nazýváme reálnou osou a svislou osu nazýváme imaginární osou. Komplexnímu číslu \(a+\ii b\) pak odpovídá bod o souřadnicích \((a,b)\). Viz obrázek 3.5.
Obrázek 3.5: Komplexní rovina.
Zavádí se absolutní hodnota komplexního čísla \begin{equation*} |a + \ii b| := \sqrt{a^2 + b^2}, \quad a,b\in\R.\end{equation*} V komplexní rovině si lze absolutní hodnotu komplexního čísla \(a+ \ii b\) představit jako délku úsečky spojující body \(0\) a \(a+b\ii\). Číslo \(a - \ii b\) nazýváme komplexně sdruženým číslem k číslu \(a + \ii b\), \(a,b\in\R\). Komplexně sdružené číslo tak získáme zrcadlením vůči reálné ose.
Operaci sčítání komplexních čísel si lze představit jako sčítání vektorů (sčítá se „po složkách“). Operaci násobení komplexních čísel lze v komplexní rovině znázornit jako rotaci a škálování. To není zcela zřejmé tvrzení, lze ho však odvodit z definice operace násobení (3.12). Pro ilustraci uvádíme obrázek 3.6. Speciálně násobení imaginární jednotkou \(\ii\) si lze v komplexní rovině představovat jako rotaci o úhel \(\frac{\pi}{2}\) vzhledem k počátku souřadného systému, který odpovídá číslu \(0\), proti směru hodinových ručiček.
Obrázek 3.6: Geometrická interpretace operace sčítání a násobení komplexních čísel.
Důvod k zavedení komplexních čísel se může zdát uměle vykonstruovaný. Například se hned nabízí otázka, zda v případě, kdy budeme zkoumat řešení jiné polynomiální rovnice než (3.11), nebudeme potřebovat další komplexní jednotku. Odpověď na tuto otázku podal Gauss42 ve své slavné Fundamentální větě algebry: každý polynom s komplexními koeficienty stupně \(n\) má \(n\) komplexních kořenů43. K řešení polynomiálních rovnic tedy naprosto vystačíme s komplexními čísly.
Řada matematických metod aplikovaných v praxi je ve své podstatě komplexní. Například Fourierova transformace (resp. Fast Fourier Transform, FFT), využívaná k analýze signálu, je bez aparátu komplexních čísel jen nešikovně popsatelná. Bez komplexních čísel by šlo jen velmi těžko formulovat kvantovou fyziku, teorii, na které stojí řada moderních technologií a jež možná v blízké budoucnosti kompletně změní otázku bezpečnosti IT.
Na závěr této kapitolky poznamenejme, že komplexní čísla lze ještě dále rozšířit na (nekomutativní) těleso kvaternionů. V něm nemáme jen jednu komplexní jednotku, ale hned tři (\(\ii\), \(\mathrm{j}\) a \(\mathrm{k}\)). Celkem tedy dostáváme čtyři jednotky (jedna reálná \(1\) a tři „komplexní“), odtud název. Vztahy mezi těmito jednotkami jsou definovány pomocí rovnic
Z definičních vztahů (3.13) odvoďte hodnotu součinů \begin{equation*} \mathrm{i}\mathrm{j} \quad \text{a} \quad \mathrm{j}\mathrm{i}\end{equation*}
Množinu \begin{equation*} \mathbb{H} = \{a + b\mathrm{i} + c\mathrm{j} + d\mathrm{k} \mid a,b,c,d \in\R \},\end{equation*} s operacemi definovanými podobně jako v komplexních číslech, zavedl Hamilton. (Sir William Rowan Hamilton (4. srpna 1805 – 2. září 1865) byl irský fyzik a matematik. Poté, co objevil definiční vztahy (3.13), vyryl je do mostu v Dublinu.) Proč se tu o kvaternionech zmiňujeme? Pomocí kvaternionů lze totiž velmi výhodně (ve výpočetním slova smyslu) počítat například rotace vektorů v třírozměrném prostoru. Využívá jich řada algoritmů implementovaných v grafických kartách. Pro zajímavost viz např. (Confuted, b.r.).
Zakreslete následující komplexní čísla do komplexní roviny. \begin{equation*} \begin{aligned} &\text{a)} \ z = (4+3\ii)(1-2\ii), & &\text{b)} \ z = (2-\ii)^2, \\ &\text{c)} \ z = \ii (1 + \ii), & &\text{d)} \ z = \frac{1}{2+\ii}. \end{aligned}\end{equation*}