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.
Č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.
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
a
hodnotu 2
. Podobně kód
a = a + 1
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
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ř.
==
.
Symbol \(=\) se dále používá k zápisu rovnice. Například v rovnici
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.
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\).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\).
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.
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.
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
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).
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.
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.