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ím digits= 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:

  1. 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).

  1. 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.
  1. 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š).
  1. 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 0 je uložená prvá položka v zozname, v našom prípade prvé riešenie
  • pod indexom 1 je 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.

Priestor na vlastné experimenty