
Autori: RNDr. Dominik Borovský1, doc. RNDr. Jozef Hanč2, PhD.
2026, ÚFV PF, Univerzita Pavla Jozefa Šafárika v Košiciach
1dominik.borovsky@student.upjs.sk, 2jozef.hanc@upjs.sk
Sage ako superkalkulačka
V tomto materiály sa naučíte, ako vykonávať základné výpočty v Sagi, ktoré potom môžete ľubovoľne kombinovať do omnoho zložitejších.
Základné operácie $+,-,\cdot, /$
Na tieto operácie používajú štandardné znaky +, -, * a /. Pri zadávaní desatinných čísel je potrebné byť pozornejší, miesto desatinnej čiarky , sa v Sagi používa desatinná bodka ., napr. 3.14. Na operácii delenia / je v Sagi super to, že to automaticky vníma ako zlomok a ten v prípade sčítania alebo odčítania automaticky upravuje na základný tvar. Sage taktiež automaticky vie, že delenie a násobenie majú prednosť pred sčítaním a odčítaním (narozdiel od základných kalkulačiek).
Ak potrebujete navzájom oddeliť jednotlivé operácie, môžete použiť štandardné zátvorky (, ). Pozor, kým na papieri na rôznych úrovniach výrazu používate zátvorky oblé $(~)$, hranaté $[~]$ a kučeravé $\{~\}$, v Sagi používajte stále oblé zátvorky ( ).
Úloha: Vyskúšajte vyčísliť: $$\dfrac{\left(1.5 + \frac{2}{3}\right) \cdot \left[4.75 - \left(2.25 + \frac{1}{2}\right)\right]}{5.6 + \frac{7.2}{3.4 - \frac{3}{4}}}$$
$[0.521022383545069]$
Ak chcete poznať približnú hodnotu zlomku, alebo akéhokoľvek iného číselného výrazu, môžete použiť:
- príkaz
.n()za celý výraz (všimnite si, že výraz je umiestnený medzi zátvorky)
Pri použití
.n()môžete špecifikovať aj počet platných číslic, ktorý sa zobrazí, a to vloženímdigits=medzi zátvorky.
- príkaz
RR()- premení číslo na reálne
Podobne môžete číslo z reálneho premeniť na racionálne pomocou
QQ()(zlomok v základnom tvare, ak sa samozrejme nejedná o iracionálne číslo, ako je napr. $\sqrt{2}$).
Matematické konštanty
Sage obsahuje rôzne matematické konštanty, z ktorých môžeme zmieniť Ludolfovo číslo $\pi$ a Eulerovo číslo $e$. Ako vieme, tieto čísla majú neperiodický desatinný rozvoj (t.j. v ich desatinnom rozvoji nikdy nenájdeme žiadnu pravidelnosť). V štandardných kalkulačkách je uložená iba približná hodnota týchto čísel, hoci s veľkou presnosťou.
V Sagi sa tieto čísla správajú ako symboly, t.j. vo výsledkoch budú vystupovať ako písmená až dovtedy, kým sami nebudete potrebovať len približnú hodnotu. Taktiež, Sage dokáže tieto čísla vypočítať s ľubovoľnou presnosťou (limitom je len pamäť počítača, do ktorej sa jednotlivé číslice ukladajú). Vo výpočtoch ich zapíšete pomocou pi alebo e.
Úloha: V nasledujúcej bunke vyskúšajte zobraziť $\pi$ s presnosťou na 100 platných číslic.
Umocňovanie a odmocňovanie, elementárne funkcie
Pri umocňovaní môžete veľmi podobne ako na kalkučkách použiť znak ^ kde naľavo od neho je základ mocniny a napravo od neho je exponent. Znak ^ môžete zadávať po prepnutí klávesice na US. Druhá možnosť je použiť dve hviezdičky ** miesto striešky (takto sa umocňuje v Pythone).
Úloha: Umocnite $2^{10000}$. Vyskúšajte ten istý výpočet na klasickej kalkulačke. Zvládla to?
Druhú odmocninu vypočítate pomocou sqrt(). Vo výpočtoch sa správa podobne ako ste to mohli sledovať v prípade pi, zachováva sa dovtedy, kým sami nevyvoláte približnú hodnotu, napr. pomocou .n().
Pri odmocninách vyššieho rádu (tretia, štvrtá atď.) využijte pravidlo:
$$\sqrt[n]{x} = x^{\frac{1}{n}}$$
Z elementárnych funkcií sú jednoducho dostupné v Sagi:
- trigonometrické funkcie $\sin, \cos, \operatorname{tg}$
- k nim inverzné $\sin^{-1}$, $\cos^{-1}$, $\operatorname{tg}^{-1}$
- exponenciálne a logaritmické funkcie.
Ako ich môžete zadávať v Sagi, je uvedené v nasledujúcej tabuľke.
POZOR: argumentom trigonometrických funkcií sú hodnoty uhla v radiánoch, takže v prípade počítania s hodnotami v stupňoch je potrebné násobiť
*180/pi(tak, ako sa to zvykne robiť pri konverzii $rad \rightarrow °$).
Elementárne funkcie v Sagi
Sage má všetky funkcie, ktoré štandardne máte aj v rámci svojej kalkulačky + sú v ňom integrované aj niektoré navyše, ktoré sa v kalkulačkách nenachádzajú .Taktiež nie je problém si vytvárať aj svoje vlastné funkcie.
| Funkcia | Zápis v Sagi |
|---|---|
| $\sin x$, $\cos x$, $\operatorname{tg} x$ | sin(x), cos(x), tan(x) |
| $\sin^{-1} x$, $\cos^{-1} x$, $\operatorname{tg}^{-1} x$ | arcsin(x), arccos(x), arctan(x) |
| $x^n$ | x^n alebo x**n |
| $\sqrt{x}$ | sqrt(x) |
| $\sqrt[n]{x}$ | x^(1/n) alebo x**(1/n) |
| $e^x$ | exp(x) alebo e^x alebo e**x |
| $\operatorname{ln} x$ | log(x) |
| $a^x$ | a^x alebo a**x |
| $\operatorname{log}_a x$ | log(x,a) |
| $\operatorname{log} x$ | log(x,10) |
To, že Sage poskytuje maximálne presné, nezaokrúhlené výsledky výpočtov, môžeme vidieť pri trigonometrických funkciách, ako je napr. sin().
Riešenie rovníc v Sagi
V matematike ale aj fyzike niekedy chceme získať všeobecné riešenie rovníc alebo zjednodušiť niektoré výrazy. Vo svete počítačovej matematiky/fyziky sa takéto úkony nazývajú symbolické výpočty, lebo pracujú s premennými - symbolmi.
Jednoduchý príklad môže spočívať v riešení rovnice
$$x = vt + x_0$$
pre hodnoty $x=4~\mathrm{m}$, $v=2~\mathrm{m \cdot s^{-1}}$ a $x_0=1~\mathrm{m}$ pre neznámu $t$.
Zvyčajne by sme na papieri ihneď dosadili známe hodnoty a riešili rovnicu:
$$4 = 2t + 1$$
Čo ak by sa nám ale zmenila sada známych hodnôt $x, x_0, v$? V takom prípade je lepšie najprv získať všeobecné riešenie v tvare $t=...$ a až do neho dosadzovať číselné hodnoty.
V Sagi môžeme všeobecné riešenie rovníc získať práve prostredníctvom symbolických výpočtov. Všeobecné riešenie rovníc možno zhrnúť do 3 krokov:
- Zadefinujeme si symbolické premenné - znaky, "písmená", s ktorými Sage bude operovať.
Je to podobné, ako keď by niekde v zadaní figurovala formulácia:
"rýchlosť rovnomerného priamočiareho pohybu je $2~\mathrm{m \cdot s^{-1}}$"
pričom pri riešení úlohy si vy zvolíte, že túto veličinu budete označovať písmenom $v$. Na zadávanie symbolickým premenných sa v Sagi používa príkaz
var()(z angl. variable).
- Zostavíme rovnicu.
- Aj na papieri po tom, ako si ujasníte označenie veličín, si zapíšete všeobecnú rovnicu používajúc zavedené znaky.
- V Sagi zadávame rovnice pomocou dvojitého "rovná sa"
==.- POZOR:, jednoduché "rovná sa"
=sa ako v Pythone, tak aj v Sagi používa na priradzovanie, t.j. uloženie dát/objektu pod "volacím menom", ktoré môžete ďalej používať v kóde.
- Riešenie rovnice.
- Na papieri by ste od tohto momentu začali uplatňovať na rovnicu úpravy (odrátanie $x_0$ od oboch strán, podelenie $v$, aby ste osamostatnili $t$). Sage vie tieto kroky v oveľa väčšom rozsahu urobiť za vás.
- Na riešenie sa používa príkaz
solve()(z angl.rieš).
- Riešenie s dosadenými číselnými hodnotami.
Riešenia rovníc Sage dáva v hranatých zátvorkách [], čo je z hľadiska Pythonu zoznam (list). Je to akoby úložisko, v ktorom môžete mať viacero uložených prvkov, ktoré si viete podľa potreby vyvolať na základe pozície - indexu, v zozname. V Pythone indexy fungujú nasledovne:
- pod indexom
0je uložená prvá položka v zozname, v našom prípade prvé riešenie - pod indexom
1je uložená druhá položka v zozname - atď.
Takéto číslovanie sa môže zdať trochu podivné, ale má aj pár výhod. Pri záporných indexoch viete pristupovať k položkám zoznamu odzadu. Napr. pod indexom -1 viete pristúpiť k poslednej položke zoznamu, pod -2 k predposlednej a tak podobne.
Naše riesenie má jeden prvok, ktorý je uložený pod indexom 0. Naše riešenie môžeme vyvolať takto:
Riešenie, ktoré poskytuje Sage, je v podobe rovnice (dvojité ==), pričom na ľavej strane je premenná, pre ktorú sme rovnicu chceli riešiť, a na pravej strane je samotné všeobecné riešenie.
Keď máme vyvolané riešenie, môžeme do neho dosadiť konkrétne hodnoty. Tak ako na papieri si urobíte v zápise sumár so známymi hodnotami, takisto aj v Sagi si to môžeme pripraviť ako zoznam rovníc, v ktorých je naľavej strane veličina a na pravej hodnoty. Dosadenie (substitúciu) v Sagi potom môžeme urobiť pomocou .subs().
Ak by sme potrebovali riešenie zaokrúhliť, na papieri by sme potrebovali pracovať s pravou stranou takejto rovnice. To musíme Sagu povedať: "zober pravú stranu riešenia ". V Sagi sú na to príkazy .rhs() (z angl. right-hand side - pravá strana rovnice) a podobne je možné použiť .lhs() (z angl. left-hand side - ľavá strana rovnice).
Alternatívny postup
Ak nás z nejakého dôvodu nezaujíma všeobecné riešenie, ale číselný výsledok, môžeme riešenie rovnice trochu skrátiť. Zavedenie symbolických premenných a zadanie rovnice zostáva, no už v zadanej rovnici môžeme hneď nahodiť uvažované hodnoty.
V Sagi aj tento "klasický" postup s priamym dosadením hodnôt do rovnice môže byť veľmi relevantný, lebo ľahko môžete zadávať iné hodnoty premenných v hodnoty. Vďaka takejto automatizácii takmer okamžite získate opätovným spustením kódu výsledok pre novú situáciu. To, čo človeku pri troche cviku môže trvať minútu, Sage urobí spoľahlivo za zlomok sekundy.