3.1 Poznámka k matematické notaci

Každý programovací jazyk vyžaduje dodržování správného zápisu kódu neboli syntaxe. Pokud programátor zvyklosti daného jazyka nedodržuje, může být jeho kód pro překladač (případně interpretr) nesrozumitelný, a tedy nepoužitelný. Ačkoliv matematika nemá žádný pevně kodifikovaný způsob značení, je dobré dodržovat některé zažité zvyklosti. V této podkapitole se proto pokusíme shrnout alespoň ty nejčastěji používané notační zvyklosti.

Poznámka 3.1

Často se u studentů setkávám s překvapením nad tímto stavem. Proč není matematická notace a terminologie jasně a globálně kodifikována? Ano, existuje standard ISO 80000-2, který se snaží některé symboly a pojmy zafixovat, ale není příliš rozšířený. Jednotné značení a názvosloví se nepoužívá jednak z historických důvodů, ale zejména i kvůli rozdílným potřebám různých matematických odvětví. Matematika je kreativní a živá, svázat ji ISO standardem nedává smysl. I v malířství a umění existuje spousta stylů využívajících různé nástroje k dosažení podobných výsledků. Podobně, proč neexistuje pouze jeden programovací jazyk? A je to dobře. Co ovšem platí globálně je právě logická struktura matematiky a způsob jakým se matematika buduje. Jinak řečeno, je poměrně jedno v jakých symbolech a v jakém jazyce mluvím, jde o to jakým způsobem a jakými pravidly se řídím. Je ovšem velmi vhodné v rámci daného textu/kurzu/knihy držet jednotnou notaci. To je konec konců smysl této kapitoly.

3.1.1 Rovnost a rovnice

Nejprve rozebereme význam veledůležitého symbolu rovnosti \(=\). V programovacích jazycích i v matematickém zápisu hraje symbol \(=\) zásadní roli. Bohužel v každé z těchto oblastí se používá trochu jiným způsobem, což může být velmi často matoucí.

V drtivé většině programovacích jazyků má symbol = význam tzv. přiřazení. Například řádek kódu

a = 2
často značí, že od této chvíle má jistá proměnná a hodnotu 2. Podobně kód
a = a + 1
počítači říká, že nová hodnota proměnné a má být stará hodnota proměnné a zvětšená o 1. Dále při programování často narazíme na symbol ==, který testuje skutečnou rovnost dvou objektů. Tedy například kód
a == b
je vyhodnocen jako pravdivý (true), pokud se objekty a a b rovnají16. V opačném případě je vyhodnocen jako nepravdivý (false).

V matematickém zápisu je situace o něco komplikovanější. V podstatě lze říci, že velmi závisí na kontextu, v jakém se symbol \(=\) používá. Základní rolí symbolu \(=\) je vyjádření rovnosti dvou známých objektů. Tímto způsobem je formulováno tvrzení, např.

\begin{equation}\label{eq-rovnost}\tag{3.1} a = b,\end{equation}
kde \(a\) a \(b\) jsou jisté definované objekty, které je buď pravdivé, nebo ne. Pro přirozené číslo \(4\) je rovnost \(4=4\) pravdivá, ale pro čísla \(4\) a \(3\) je rovnost \(4=3\) nepravdivá. V tomto významu má matematický symbol \(=\) blízko k výše uvedenému programátorskému ==.

Symbol \(=\) se dále používá k zápisu rovnice. Například v rovnici

\begin{equation}\label{eq-rovnice}\tag{3.2} x^2 - 1 = 0\end{equation}
označujeme pomocí \(x\) neznámou, tedy objekt, který je třeba určit tak, aby po jeho dosazení do rovnice (3.2) platila rovnost mezi levou a pravou stranou této rovnice. O takovýchto instancích \(x\) pak říkáme, že jsou řešením rovnice (3.2). V našem případě rovnice (3.2) jsou řešením čísla \(1\) a \(-1\), libovolná další reálná čísla řešením nejsou. A opravdu, po dosazení \(1\) či \(-1\) do rovnice (3.2) skutečně dostáváme rovnost \(0=0\), která platí. Naproti tomu například po dosazení \(2\) za \(x\) získáme rovnost \(3=0\), která je jistě nepravdivá17.

Symbol \(=\) se dále používá k značení přiřazení ve smyslu programátorském. Tento autorův záměr většinou snadno odhalíme z kontextu. Podívejme se podrobně na následující textovou ukázku.

Uvažujme obdélník o stranách délky \(a\,{\color{red}=}\,3\) a \(b\,{\color{red}=}\,4\). Označme délku úhlopříčky tohoto obdélníku symbolem \(c\). Podle Pythagorovy věty platí rovnost \(c\,{\color{blue}=}\,\sqrt{a^2 + b^2}\), tedy v našem případě platí \(c\,{\color{blue}=}\,5\).

První dvě použití symbolu \(=\), označená červeně, jsou ve smyslu přiřazení. Od tohoto momentu mají symboly \(a\) a \(b\) příslušné hodnoty. V programátorské hantýrce bychom řekli, že proměnné \(a\) a \(b\) byly inicializovány. Druhá věta odstavce sice symbol \(=\) neobsahuje, ale její význam je stejný, neboť přikládá jednoznačný význam symbolu \(c\). Konečně v poslední větě se tvrdí, že modré rovnosti jsou pravdivé. Zde se už nejedná o přiřazení/definici/inicializaci, ale o platnost jistého vztahu mezi zavedenými objekty \(a\), \(b\) a \(c\).

Někdy se ke značení přiřazení používá symbolu \(:=\). Zejména po tomto symbolu saháme, chceme-li čtenáře upozornit na zavedení nového objektu. Symbol na levé straně od \(:=\) je pak definován výrazem na pravé straně od \(:=\). Na tomto místě čtenáře upozorňujeme, že v CAS18 Mathematica je význam probíraných symbolů ještě lehce odlišný. Podrobněji se této problematice věnujeme v kapitole č. 6.

3.1.2 Značení proměnných

Shrňme nyní několik dalších notačních zvyklostí, které se snažíme v tomto dokumentu i v předmětu BI-ZMA dodržovat. Ačkoliv je volba označení používaných objektů zcela v režii autora, je dobré řídit se následujícími nepsanými pravidly.

  • Neznámé v rovnicích se označují písmeny z konce latinské abecedy, typicky například \(x\), \(y\), či \(z\).
  • Známé – definované – objekty či parametry problému se označují písmeny ze začátku latinské abecedy, například \(a\), \(b\), \(c\), atd. Pro číselné hodnoty se často používá řecké abecedy, tedy \(\alpha, \beta, \gamma, \ldots\)
  • Pro sčítací indexy (viz níže podkapitolu č. 3.6) a celočíselné veličiny se často používá písmen \(i\), \(j\), \(k\), \(\ell\), \(m\) nebo \(n\). Pří používání písmena \(i\) je třeba dát pozor, aby nedošlo ke kolizi s imaginární jednotkou, označovanou též19 \(\ii\).
  • Množiny se označují velkými písmeny \(A, B, C,\ldots\) Body v rovině (prostoru) se také většinou označují velkými písmeny latinské abecedy.
  • K parametrizaci geometrických objektů (přímky, kružnice, plochy atp.) se používají písmena \(r\), \(s\), \(t\).
  • Funkce většinou značíme písmeny \(f\), \(g\), či \(h\).

3.1.3 Závorky

Dále připomeňme roli závorek v matematickém zápisu. Závorky používáme k označení argumentu funkcí (zobrazení), k upřesnění pořadí provádění operací či k značení intervalů a bodů. Bez použití závorek by řada algebraických výrazů nedávala smysl20. Ve zbytku této podkapitoly podrobněji probereme právě takové případy užití závorek.

Máme-li funkci \(f\) a bod \(a\) z definičního oboru funkce \(f\), pak \(f(a)\) označuje funkční hodnotu funkce \(f\) v bodě \(a\). Přesněji, \(f(a)\) je číslo, naopak \(f\) je abstraktní objekt typu funkce. Toto použití závorek tedy přesně odpovídá tomu, se kterým se setkáte v programovacích jazycích. Byly-li \(f\) a \(a\) předem definovány, význam výrazu \(f(a)\) je: zavolej funkci \(f\) s argumentem \(a\) a vrať výsledek \(f(a)\). Hodnotu \(a\) lze chápat jako vstup a \(f(a)\) jako výstup funkce \(f\). Graficky si tuto situaci můžeme představovat jako na obrázku 3.1.

Obrázek 3.1: Funkce \(f\) a její funkční hodnota. Na vstupu je \(a\) a na výstupu \(f(a)\). Funkce \(f\) samotná je „černá skříňka“ zajišťující převod vstupu na výstup.

Někdy se však mluví přímo o \(f(x)\) jako o funkci. Tento úhel pohledu často používáme v případě, že chceme zároveň čtenáři sdělit, jak budeme označovat nezávisle proměnnou (zde \(x\)). V některých případech se závorky u argumentů funkcí vynechávají, zejména z důvodů zlepšení čitelnosti a zjednodušení zápisu. Např. často píšeme \(\sin \alpha\) místo \(\sin(\alpha)\) nebo \(\ln 2\) místo \(\ln(2)\). Je však třeba opatrnosti, nebo může dojít k nedorozumění. Například výraz

\begin{equation}\label{eq-ln2dot3}\tag{3.3} \ln 2\cdot 3\end{equation}
by mohl být interpretován jako \begin{equation*} \ln (2\cdot 3) \quad \text{nebo} \quad \ln(2) \cdot 3.\end{equation*} Tato čísla samozřejmě nejsou stejná. Pomocí kapesního kalkulátoru21 se snadno přesvědčíme, že přibližně platí následující rovnosti \begin{equation*} \begin{aligned} \ln ( 2\cdot 3) &= \ln(6) \approx 1.791\,759\,469\,23, \\ \ln(2) \cdot 3 &\approx 2.079\,441\,541\,68. \end{aligned}\end{equation*} Zvláště při „ručním“ počítání22 mohou tyto nepřesnosti vést ke katastrofálním chybám. Proto je lepší multiplikativní faktory psát před funkcemi, výraz \(3 \ln 2\) už má jednoznačný význam, na rozdíl od výrazu uvedeném v (3.3).

Upozorněme ještě čtenáře, že pro některé funkce se používá speciální notace nevyžadující závorky. Například druhá odmocnina se značí \(\sqrt{x}\), třetí odmocnina \(\sqrt[3]{x}\), nebo absolutní hodnota \(|x|\). Čtenáři je také jistě známa dolní (resp. horní) celá část reálného čísla \(x\) označovaná symbolem \(\lfloor x \rfloor\) (resp. \(\lceil x \rceil\)).

Závorky se dále používají k upřesnění pořadí algebraických operací. Například výraz \begin{equation*} \Big( a + ( c / 2 ) \Big) \cdot 3\end{equation*} je třeba číst následovně: nejprve vyděl \(c\) dvěma a k výsledku přičti \(a\), takto získané číslo vynásob třemi. Bez závorek, \begin{equation*} a + c / 2 \cdot 3,\end{equation*} by (bez zavedení konvencí23 přednosti operací) nebylo jasné, jak přesně tento výraz vyhodnotit. Tato situace v matematice se opět nijak neliší od situace mezi programovacími jazyky. Většina programovacích jazyků zavádí prioritu mezi svými operátory (viz např. C Operator Precedence).

Poznámka 3.2

Může se zdát, že to co zde popisujeme je opravdu elementární a všemi studenty dobře chápané. Bohužel množství chyb které vzniknou v písemkách kvůli nepřesnostem typu \begin{equation*} \ln(1+x) = \ln 1 + x = \ln(1) + x = x\end{equation*} ukazuje, že nejde o něco co by bylo možné v tomto textu zanedbat. Jak se těmto problémům vyvarovat? Vždy při psaní myslete na to, jakou myšlenku vyjadřujete.

3.1.4 Indexy

Na závěr této podkapitoly ještě zmiňme význam horních a dolních indexů. Horní index se většinou používá k označení mocnin, například \begin{equation*} 3^5, \quad a^n, \quad e^2 \quad \text{atp.}\end{equation*} Někdy se horní index používá i k označení složek vektorů nebo třeba operace komplexního sdružení čísla \(a\). Často se lze setkat s \(a^*\) místo \(\overline{a}\). V BI-ZMA budeme používat horní index u objektů typu funkce k označení jejich derivací vyšších řádů.

Dolní index slouží k označení buď pořadí prvku v posloupnosti, nebo obecněji závislosti dané veličiny na celočíselném parametru. Tento zápis má blízko k indexování prvků pole, programátorské a[2] má prakticky stejný význam jako naše \(a_2\). Posloupnostmi se budeme podrobněji zabývat v BI-ZMA.