Masarykova univerzita Fakulta informatiky

Porovnanie súčasných systémov počítačovej algebry

Bakalárska práca

Peter Gábor

Brno, jar 2018

Masarykova univerzita Fakulta informatiky

Porovnanie súčasných systémov počítačovej algebry

Bakalárska práca

Peter Gábor

Brno, jar 2018

Na tomto mieste sa v tlačenej práci nachádza oficiálne podpísané zadanie práce a vyhlásenie autora školského diela.

Vyhlásenie

Vyhlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj.

Peter Gábor

Vedúci práce: RNDr. Jaroslav Ráček Ph.D.

i

Poďakovanie

Na tomto mieste by som sa chcel poďakovať vedúcemu bakalárskej práce RNDr. Jaroslavovi Ráčkovi Ph.D. za cenné rady, trpezlivosť a odborné vedenie pri vytváraní tejto práce.

iii Zhrnutie

Cieľom práce je vytvoriť komplexné zhodnotenie kvalít a vzájomné porovnanie systémov počítačovej algebry. V práci sa zmeriavam na piatich zástupcov spomedzi univerzálnych systémov počítačovej al- gebry. Konkrétne sa jedná o systémy , Mathematica, MATLAB, a SageMath. Tieto systémy hodnotím z pohľadu užívateľskej a programátorskej prívetivosti, licenčnej a cenovej politiky a poskyto- vanej funkcionality. Súčasťou práce je vypracovanie (implementácia) spoločných vzorových úloh v prostrediach jednotlivých systémov, na ktorých demonštrujem charakter programovacieho jazyka, ako aj výpočtovú silu daného systému.

iv Kľúčové slová počítačová algebra, systém počítačovej algebry, computer algebra sys- tem, CAS, Maple, Mathematica, SageMath, Maxima, MATLAB, po- rovnanie, hodnotenie, funkcionalita, kritéria, ...

v

Obsah

Úvod 1

1 Prehľad systémov počítačovej algebry 3 1.1 Upresnenie pojmov ...... 3 1.2 Historický vývoj ...... 3 1.3 Princípy súčasných systémov ...... 4

2 Zameranie práce 7 2.1 Účel porovnávania ...... 7 2.2 Výber systémov ...... 8 2.3 Kritéria hodnotenia ...... 9 2.3.1 Navrhnuté kritériá ...... 10 2.3.2 Ďalšie kritériá ...... 13 2.4 Vzorové úlohy ...... 13 2.4.1 Úloha č. 1: Riešenie diferenciálnych rovníc . . . 14 2.4.2 Úloha č.2: Geometria v rovine a priestore . . . . 16 2.5 Použitý hardvér a softvér ...... 17

3 Porovnávanie vybraných systémov 19 3.1 Maple ...... 19 3.2 Mathematica ...... 25 3.3 MATLAB ...... 31 3.4 Maxima ...... 37 3.5 SageMath ...... 42

4 Vyhodnotenie 49 4.1 Hodnotenie z vlastných skúseností ...... 50

5 Záver 53

Bibliografia 55

A Prílohy 59

vii

Úvod

Systémy počítačovej algebry (známe tiež ako CAS, z anglického: Com- puter algebra systems) v dnešnej dobe predstavujú revolúciu v ob- lasti výučby matematiky, vedeckých štúdií a inžinierstva. Užívate- ľom poskytujú nástroje pre úpravu matematických výrazov, nájdenie presných alebo aspoň približných výsledkov z matematickej analýze, numerické výpočty a grafické ilustrácie. Prvé matematické balíky sa začínajú objavovať v šesťdesiatych ro- kov 20. storočia [1]. Spočiatku sa jednalo o špecializované systémy, ktoré boli určené len pre konkrétne oblasti, resp. problémy v mate- matike alebo fyzike. Snaha o rozšírenie škály použitia jednotlivých systémov viedla k myšlienke vytvoriť moderný univerzálny systém počítačovej algebry. Prvé univerzálne CAS sa objavujú začiatkom se- demdesiatych rokov, ktoré odštartovali rozsiahly výskum v oblasti počítačovej algebry, ako aj dynamický vývoj CAS. Dodnes bolo vyvi- nutých viac ako sto rôznych CAS [2]. V dôsledku dynamiky tohto vývoja a širokej ponuky CAS na trhu si zákazník často nedokáže vybrať systém, ktorý by najviac vyhovoval jeho potrebám. Cieľom mojej bakalárskej práce je poskytnúť potenciál- nym zákazníkom nástroj pre porovnanie a zhodnotenie kvalít CAS v jednotlivých aspektoch. V práci sa zameriavam na vybraných zástupcov spomedzi uni- verzálnych CAS. Konkrétne sa jedná o systémy Maple, Mathematica, MATLAB, Maxima a SageMath. Tieto systémy posudzujem a testujem z hľadiska mnou zvolených spoločných kritérií a na základe skúseností, ktoré som nadobudol pri vypracovávaní vzorových úloh. V prvej kapitole upresňujem definície základných pojmov, uvá- dzam stručný historický vývoj a popisujem základné princípy súčas- ných CAS. Obsahom druhej kapitoly je výber CAS, ako aj špecifiká- cia spoločných kritérií a vzorových úloh, na základe ktorých budem vybrané systémy hodnotiť. Tretia kapitola obsahuje predstavenie, re- alizáciu vzorových úloh a následné hodnotenie v optike spoločných kritérií pre jednotlivé systémy. V štvrtej kapitola uvádzam sumárne vyhodnotenie doplnené hodnotením systémov na základe vlastných skúseností.

1

1 Prehľad systémov počítačovej algebry

1.1 Upresnenie pojmov

Počítačová algebra (Computer algebra) je odvetvie vedy o počítačoch (Computer science), ktorá sa zaoberá návrhom, analýzou, implemen- táciou a aplikáciou algebrických algoritmov [2]. Systém počítačovej algebry (, CAS) je matema- tický balík obsahujúci algoritmy pre spracovanie symbolických mate- matických výrazov, jazyk pre implementáciu a prostredie pre použitie jazyka (interpreter) [3, str. 123]. Paralelné výpočty (parallel computing) je pojem, ktorým sa označuje súčasné (simultánne) použitie viacerých výpočtových zdrojov na rie- šenie jedného výpočtového problému. Problém je zvyčajne rozdelený na viacero menších častí, ktoré môžu byť riešené súbežne. Každá časť je ďalej rozdelená na sériu inštrukcií. Inštrukcie z každej časti sú vy- konané súčasne na rôznych procesoroch, resp. jadrách procesoru [4, kap. 2]. Výpočtový klaster (computer cluster) je zoskupenie viacerých úzko spolupracujúcich počítačov (zväčša prepojených počítačovou sieťou), určených pre výpočet náročných úloh [5, kap. 1]. HPC centrum (High Performance Computing Center, HPC center) je názov pre stredisko viacerých výpočtových klastrov (superpočítačov) [6]. Grafický procesor (graphics processing unit, GPU) je procesor slúžiaci na výpočet grafických operácií ako vektorové výpočty, spracovanie ob- razu a mapovanie grafických informácií na informácie pre zobrazenie [6].

1.2 Historický vývoj

V šesťdesiatych rokoch 20. storočia sa začínajú objavovať prvé matema- tické balíky určené na riešenie špecifických numerických, analytických, grafických a iných problémov [1]. V roku 1961, fyzik Martinus J.G. Veltman navrhol program nazvaný Schoonschip (Dutch for "clean ship") určený pre výpočty v časticovej fyzike (high energy physics) [7, 8]. Ďalším príkladom je systém FORMAC; vyvíjaný firmou IBM

3 1. Prehľad systémov počítačovej algebry v rokoch 1962 – 1964 [9]. Implementovaný bol v jazyku FORTRAN a umožňoval jednoduché spracovanie funkcií a polynómov. V roku 1964, Carl Engelman vytvoril, v centre pre výskum umelej inteligencie, systém MATHLAB (mathematical laboratory) [9, 7]. Nejedná sa však o systém počítačovej algebry MATLAB, ktorý vznikol asi až o 15 rokov neskôr. Sedemdesiate roky odštartovali rozsiahly výskum v oblasti počíta- čovej algebry, ako aj dynamický vývoj CAS. Do dnes bolo vyvinutých viac ako sto rôznych CAS [2].

1.3 Princípy súčasných systémov

Systémy počítačovej algebry môžeme rozdeliť do dvoch kategórií: špe- cializované (specialized alebo special-purpose CAS) a univerzálne (general-purpose CAS). Špecializované systémy sú navrhnuté pre kon- krétny problém alebo odvetvie vo fyzike alebo matematike. Medzi známe špecializované systémy vo fyzike patria Schoonship (high- energy physics), CAMAL (celestial mechanics), SHEEP a STENSOR (general relativity) [7, 8, 10]. V oblasti matematiky poznáme Cayley a GAP (teória grúp), PARI, SIMATH a KANT (teória čísel), CoCoA (commutative algebra), Macaulay a (algebraic geometry a commutative algebra) [11]. Špecializované systémy zohrali dôležitú úlohy pri viacerých vedeckých výskumoch a projektoch. Veľakrát sú elegantnejšie a efektívnejšie ako univerzálne systémy vďaka špecific- kým dátovým štruktúram a implementácii v nižších programovacích jazykoch. Avšak v mojej práci sa zameriavam na univerzálne systémy počí- tačovej algebry. Univerzálne CAS sa snažia pokryť čo najviac oblastí možnej aplikácie. Funkcionalitu súčasných univerzálnych CAS tvorí: úprava symbolických matematických výrazov, diferenciálne počty, rovnice (vrátane diferenciálnych, diofantických alebo rekurentných), nerovnice, teória grafov, teória čísel, úprava a valuácia logických for- múl, kryptografia, teória pravdepodobnosti, grúp a ďalšie funkcie. Na základe cenovej a licenčnej politiky rozlišujeme platené a voľne dostupné (free, open-source) systémy. Medzi platené systémy patria Mathematica, Maple, MATLAB, Magma a iné. K voľne dostupným sa

4 1. Prehľad systémov počítačovej algebry zaradzujú SageMath, FriCas, Axiom, /Giac, OpenAxiom, Maxima a mnoho ďalších. Systémy počítačovej algebry typicky pozostávajú z troch častí: roz- siahlej knižnice vstavaných funkcií a algoritmov, výpočtovej jednotky, jadra (kernel) a grafického užívateľského rozhrania.

5

2 Zameranie práce

2.1 Účel porovnávania

Účelom môjho porovnávania v rámci tejto práce je pomôcť ľuďom, ktorý sa zaujímajú o systémy počítačovej algebry s výberom systému, ktorý bude čo najlepšie vyhovovať ich požiadavkám. Výber vhodného systému počítačovej algebry nie je pre zákazníka jednoduchý a to hneď z niekoľkých dôvodov. V porovnaní so špecializovanými systémami počítačovej algebry sú si univerzálne CAS v mnohých aspektoch podobné. Spoločnou stránkou viacerých systémov sú okrem iných matematické oblasti, v ktorých je možné systémy použiť. Pre bežného zákazníka, ktorý sa priamo nešpecializuje na systémy počítačovej algebry a nemá značné skúsenosti s prácou v takýchto systémoch, nemusí byť na prvý pohľad zrejmé, v čom sa dané systémy odlišujú. Potencionálny zákazník nemá čas a často ani záujem o podrobné štúdium dokumentácie viacerých systémom za účelom nájsť pre neho dôležité aspekty, v ktorých sa jednotlivé systémy odlišujú. Komplikáciou pri výbere vhodného systému počítačovej algebry pre zákazníka môže byť aj dynamický vývoj týchto systémov. Ako som už spomínal v úvode, dodnes bolo vyvinutých viac ako sto rôznych systémov počítačovej algebry. Dynamika tohto vývoja, spôsobená tech- nologickým pokrokom ako aj výskumom v rôznych matematických odvetviach, je prítomná dodnes. Počítačová algebra, ako rozvíjajúca sa vedná disciplína, rozširuje poznatky a spôsoby riešenia problé- mov v matematike a v jej rôznych aplikačných sférach. Tieto prínosy v matematike obohacujú knižnice CAS o nové algoritmy a funkcie. V dôsledku tejto dynamiky si zákazník často nevie zodpovedať otázku, ktorý systém aktuálne najviac vyhovuje jeho potrebám a ako sa situ- ácia zmení v priebehu nasledujúcich rokov. Navyše v dnešnej dobe predstavujú bezplatné systémy konku- rencieschopnú alternatívu ku plateným systémom. Zákazník si teda kladie otázku, aké výhody ponúka daný platený CAS oproti bezplat- ným variantom a či sú tieto výhody preňho natoľko dôležité, aby si zakúpil daný systém.

7 2. Zameranie práce 2.2 Výber systémov

V mojej práci sa zameriavam na univerzálne systémy počítačovej al- gebry (general-purpose CAS) s čo najširšou škálou použitia. Na jednej strane sú špecializované systémy, vďaka špecifickým dátovým štruk- túram, lepšie prispôsobeným rozhraniam a implementácii v nižších programovacích jazykoch, častokrát efektívnejšie a elegantnejšie ako univerzálne systémy. Na druhej strane ich úzka špecializácia znemož- ňuje vzájomné porovnanie, nakoľko porovnávanie systémov, ktoré sa vzájomne míňajú vo funkcionalite a oblasti použitia nie je veľmi objektívne. Pre porovnanie takýchto systémov by bolo potrebné nájsť dostatočne veľkú množinu (skupinu) systémov, ktoré sú si vzájomne dostatočne blízke. Aj napriek existencii mnohých špecializovaných systémov nie je jednoduché takúto množinu nájsť. Jedným z kritérií pre môj výber bol aktívny a dynamický vývoj. Vývoj niektorých systémov (, Magnus, KANT/KASH, De- rive, MuPAD) bol časom zastavený. Niektoré systémy sa stali súčasťou iných, komplexnejších systémov a ich autonómny vývoj skončil (napr. MuPAD dnes už súčasťou systému MATLAB) alebo sa uchytila len nejaká vývojová vetva týchto systémov (napr. Maxima, dnes už jediná aktívna vývojová vetva systému Macsyma). Navyše, počítačová al- gebra, ako vedná disciplína, sa neustále vyvíja. Študenti, profesori a experti po celom svete prichádzajú takmer denne s úplne novými algoritmami alebo s efektívnejšími variantami pre už existujúce algo- ritmy. Tento dynamizmus je ešte umocnený technologickými, hardvé- rovými a softvérovými pokrokmi (paralelné výpočty, práca s pamäťou atď.). Mojou snahou bolo vyberať z najviac používaných systémov. Môj výber pravdaže nepokrýva všetky populárne systémy a mohol by byť rozšírený o ďalšie univerzálne CAS, ako sú: FriCAS, SINGULAR, SymPy, Scilab, Magma, Axiom, Wolfram Alpha a iné. Ďalším kritériom pre výber bola dostupná a kvalitná dokumen- tácia systému, ktorá sa môže vyskytovať v podobe manuálov, re- ferenčnej a programátorskej príručky, vzorových príkladov, video- dokumentácie, úhľadného a vhodne komentovaného kódu atď. Plnú silu CAS môže užívateľ využiť až keď sa naučí so systémom pracovať. Dôraz sa taktiež kladie na skrátenie potrebnej dĺžky tohto učebného

8 2. Zameranie práce procesu. Dôležitým kvalitatívnym faktorom systému je taktiež aktívna podpora (support) pre užívateľov. Na základe vyššie uvedených kritérií som sa v tejto práci zameral na nasledujúce systémy: 1. Maple, 2. Mathematica, 3. MATLAB, 4. Maxima, 5. SageMath.

2.3 Kritéria hodnotenia

Pri výbere kritérií som sa snažil zvoliť takú množinu, aby množstvo potenciálnych zákazníkov, ktorých primárne zaujímajú práve kritéria z tejto množiny bolo čo najväčšie. Objektívne hodnotenie podľa jednotlivých kritérií si nemohlo vy- žadovať prílišný rozsah. Z tohto dôvodu som sa nezaoberal aspektami ako sú charakter vývoja systému, detekcia chýb a ladenie programu alebo náročnosť inštalačného procesu. Pri hodnotení pristupujem ku všetkým kritériám s rovnakou pri- oritou. Uvedomujem si, že konkrétny zákazník bude niektorým kri- tériám prikladať väčšiu váhu ako iným. Zákazník, ktorý požaduje maximálny výpočtový výkon zrejme nebude klásť dôraz na intuitív- nosť užívateľského prostredia. Pre iného zákazníka, disponujúceho osobným počítačom z nižších cenových tried nebude dôležitá zas podpora pre paralelné výpočty. Avšak široká variabilita preferencií nám neumožňuje nastaviť váhu kritérií tak, aby vyhovovala všetkým zákazníkom. Na základe vyššie uvedených dôvodou som pre vzájomné porov- návanie systémov vybral nasledujúce kritériá: 1. Intuitívnosť systému, 2. Systémové požiadavky, 3. Dokumentácia, 4. Paralelné výpočty, 5. Výpočtová sila, 6. Škála použitia, 7. Licenčná a cenová politika.

9 2. Zameranie práce

2.3.1 Navrhnuté kritériá Intuitívnosť systému (easy-to-use) Jednou z najdôležitejších charakteristík matematických systémov na trhu je pre užívateľa čo najprirodzenejšie pracovné prostredie (rozhranie). Začínajúcich užívateľov môže často odradiť neschop- nosť ani základných výpočtových operácií. Skúsenejší užívatelia zas ocenia nástroje a flexibilitu prostredia pre efektívnu prácu [12, str. 3]. Intuitívnosť CAS okrem iného zahŕňa štandardnú matematickú notáciu a dodržiavanie zaužívaných softvérových konvencií. Systémové požiadavky Vysoké hardvérové nároky sú charakteristické skôr pre špeciali- zované systémy. Avšak pre zákazníkov disponujúcich počítačmi z nižších cenových a výkonnostných kategórií môže byť práve toto kritérium rozhodujúce. Pre potenciálneho zákazníka môže byť dôležité, aby bol daný CAS kompatibilný s jeho obľúbenou platformou, na ktorú je zvyknutý. Predstava zmeny platformy často potenciálneho uží- vateľa odradí, aj napriek možným kvalitám daného CAS. Dokumentácia Dôležitým výberovým faktorom je aj množstvo, kvalita a dostup- nosť dokumentácie k danému systému. Pod pojmom dokumen- tácia myslím návody, užívateľské a programátorské manuály, referenčné príručky, vzorové príklady, knižné publikácie a iné zdroje informácií o danom systéme.

Programovací jazyk systému Programovací jazyk, v ktorom je daný systém počítačovej al- gebry implementovaný, udáva systému základné charakteris- tiky. Vo všeobecnosti nie je možné povedať, ktorý programovací jazyk je najlepší. Preferencie užívateľov sa líšia v charaktere (fun- kcionálne, procedurálne, objektovo orientované programovanie atď.), syntaxi a iných aspektoch programovacích jazykov. Realizácia vzorových úloh v tretej kapitole demonštruje syn- tax, ako aj charakter programovacích jazykov.

10 2. Zameranie práce

Paralelné výpočty V dnešnej dobe sa platformy pre paralelné výpočty stávajú viac dostupnými. Osobné počítače dnes disponujú viac jadrovými procesormi a viacerými jadrami. Pre náročné výpočtové úlohy sa využívajú výpočtové klastre, distribuované systémy a služby HPC centier. Podpora pre paralelné výpočty tak predstavuje dôležitý výberový faktor, hlavne pre užívateľov, ktorí potrebujú riešiť výpočtovo veľmi náročné úlohy.

Výpočtová sila Rýchlosť systému je jednou zo základných a najbežnejšie kla- dených požiadaviek. Obzvlášť pri riešení problémov, pre ktoré zatiaľ neexistuje algoritmus s dobrou (resp. polynomiálnou) ča- sovou zložitosťou ako sú: faktorizácia čísel a polynómov, náso- benie veľkých čísel, problém diskrétneho logaritmu a ďalšie. Pri práci s reálnymi a komplexnými číslami zákazníka môže zaujímať, akou aritmetickou presnosťou systém disponuje. Vy- brané systémy však neposkytujú dostatočnú variabilitu v tomto smere, nakoľko všetky disponujú ľubovoľne veľkou, užívateľom zadanou presnosťou. Množstvo vstupných a výstupných dát vo firmách alebo výskumných zariadeniach často presahuje ma- ximálnu veľkosť pamäte, s ktorou je platforma schopná pracovať. V takýchto prípadoch užívateľ určite ocení efektivitu daného systému v práci s pamäťou. Výpočtová sila CAS je silno závislá aj od vhodného výberu a efektívnej implementácie vstavaných algoritmov a funkcií. Ob- jektívne porovnávanie tohto aspektu systémov si vyžaduje prí- stup k zdrojovým kódom implementácií algoritmov a funkcií daného systému. Open-source systémy poskytujú užívateľovi voľný prístup k zdrojovému kódu systému. U platených systé- mov má užívateľ k dispozícii len dokumentáciu, ktorá mu môže poskytnúť dobrú predstavu o používaných algoritmoch. Hodnotením použitých algoritmov sa však v tejto práci ne- budem podrobne zaoberať. Hlavným dôvodom je množstvo funkcií, ktoré by bolo potrebné analyzovať pre docielenie objek- tivity hodnotenia. Pre hodnotenie systémov na základe výpočtovej sily nám

11 2. Zameranie práce

poslúžia výsledky testov pre výpočtový čas a použitú pamäť pri riešení vzorových úloh v tretej kapitole.

Škála použitia Pod škálou použitia myslím matematické oblasti, ktoré pokrýva funkcionalita daného systému. Snaha o rozšírenie škály použitia počas vývoja systémov počítačovej algebry viedla k rozsiahlej variabilite. Medzi menej časté matematické oblasti aplikácie pat- ria: teória kódovania, topológia, úprava formúl matematickej logiky (Quantifier elimination), dynamické systémy a mnohé ďalšie. Širšia škála použitia predstavuje pre zákazníka väčšiu atraktivitu systému.

Licenčná a cenová politika Cena je veľmi dôležitý faktor pre fyzické ako aj právnické osoby (firmy, výskumné strediská, školy). V minulosti sa bezplatné CAS nemohli porovnávať s dra- hými platenými systémami. Dnes bezplatné CAS predstavujú schopnú alternatívu k plateným systémom. Veľkou výhodou u niektorých bezplatných systémov je voľný prístup k zdrojovým kódom, ktorý umožňuje užívateľom lepšie pochopiť, ako daný systém funguje. Systémy počítačovej algebry predstavujú revolúciu v oblasti vzdelávania a výučby matematiky, fyziky a iných predmetov, primárne vo vysokoškolskom vzdelávacom systéme. Mnohé univerzity sa dokonca podieľajú na vývoji týchto systémov. Veľmi dôležitou súčasťou licenčnej a cenovej politiky systémov počí- tačovej algebry je tak aj poskytovanie zvýhodnenej licencie pre študentov, univerzity a rôzne vysokoškolské zariadenia. Pri hodnotení rozlišujem individuálnu študentskú, domácu (na nekomerčné a mimovládne účely), profesionálnu (na profe- sionálne a osobné účely) a akademickú licenciu (na akademické a osobné účely). Pri hodnotení sa nezaoberám cenou multilicencií. Tie závisia od konkrétnej objednávky.

12 2. Zameranie práce

2.3.2 Ďalšie kritériá Vývoj softvéru Ďalším dôležitým aspektom CAS je charakter vývoja. Pri rých- losti vedeckého a technologického pokroku v dnešnej dobe pred- stavuje charakter vývoja daného systému jednu z kľúčových kva- litatívnych charakteristík. Dynamický vývoj v oblasti počítačovej algebry prináša takmer denne nové algoritmy a efektívnejšie im- plementácie už zaužívaných algoritmov. Vývojári ideálneho CAS by mali vedieť adekvátne reagovať na túto dynamiku pravidel- nou aktualizáciou knižníc.

Náročnosť inštalačného procesu Dĺžka inštalácie CAS v dnešnej dobe už nie je problémom. Ná- vod a sprievodca k inštalácii sú prínosné a niekedy potrebné, avšak takisto nepredstavujú výrazný výberový faktor. Dôležitým aspektom systému však môže byť možnosť práce so systémom bez nutnosti inštalácie, najčastejšie v podobe online nástrojov a aplikácií.

Detekcia chýb a ladenie programu (debugging) Detekcia chýb a ladenie programu je neodmysliteľnou súčas- ťou programovania. Začínajúci vývojári určite ocenia vhodné nástroje na detekciu gramatických chýb. Programovanie zložitej- ších dátových štruktúr bez pomocných kontrolných nástrojov si vyžaduje veľkú zručnosť pri práci s pamäťou. V oblasti výskumu, a navrhovania zložitých algoritmov sú cennou súčasťou systému nástroje pre detekciu logických chýb, ako krokovanie programu a sledovanie hodnôt premenných.

2.4 Vzorové úlohy

Pre objektívne hodnotenie by bolo vhodné vzorovými úlohami pokryť všetky alebo aspoň značnú časť matematických oblastí. Pre obme- dzený rozsah by však väčšie množstvo úloh vynucovalo triviálnosť problémov, ktorých by sa úlohy týkali.

13 2. Zameranie práce

Mojou snahou bolo vybrať zástupcov z hlavných prúdov, resp. dominantných oblastí v matematike ako sú diskrétna matematika, matematická analýza, teória priestoru a aplikovaná matematika. Veľmi úzky pohľad, ktorý nám menšie množstvo úloh ponúka, som sa snažil kompenzovať výberom úloh z rôznych oblastí: teóriu diferenciálnych rovníc z matematickej analýzy a geometriu z teórie priestorov.

2.4.1 Úloha č. 1: Riešenie diferenciálnych rovníc V matematike existuje viacero typov diferenciálnych rovníc (diffe- rential equations, DE): obyčajné diferenciálne rovnice (ordinary dif- ferential equations, ODE) a parciálne diferenciálne rovnice (partial DE), lineárne (linear) a nelineárne (non-linear), diferenciálne rovnice prvého rádu (first-order DE) a rovnice vyšších rádov (higher-order DE). Nakoľko v matematike o všeobecnej diferenciálnej rovnici nie je možné toho veľa konštatovať, kategorizácia diferenciálnych rovníc nám upresňuje charakter a možné metódy riešenia rovnice daného typu. V tejto úlohe sa zameriavam na riešenie sústavy lineárnych dife- renciálnych rovníc a riešenie obyčajnej diferenciálnej rovnice druhého rádu. m n k Nech A R , B R a k N0. Nech C (A, B) označuje množinu funkcií A ⊆ B s deriváciami⊆ ∈ až po rád k. Obyčajná diferenciálna rovnica je potom→ rovnica tvaru

(n) F(x, y, y′, ..., y ) = 0 (2.1) pre neznámu funkciu y Ck(L), L R, F C(A), A Rk+2. Lineárna diferenciálna∈ rovnica je⊆ rovnica∈ tvaru ⊂

(n) a0(x)y′ + a1(x)y′′ + a2(x)y + ... + an(x)y + b(x) = 0 (2.2)

(n) kde a0(x), ..., an(x) a b(x) sú ľubovoľné diferencovateľné funkcie a y′, ..., y sú derivácie funkcie y podľa premennej x [13]. Rádom diferenciálnej rovnice je myslený rád najvyššej derivácie, ktorú daná rovnica obsahuje. Štúdium diferenciálnych rovníc v matematike sa zaoberá existen- ciou a jednoznačnosťou presných (analytických) riešení. Analytické

14 2. Zameranie práce

riešenia mnohých diferenciálnych rovníc však nie sú známe alebo dokonca neexistujú. V prípade, že presné riešenie neexistuje, je možné nájsť aspoň približné riešenie pomocou numerických a aproximačných metód (napr. metódy Runge-Kutta). Pri hľadaní riešenia diferenciálnej rovnice sú často kladené ďalšie požiadavky. Takouto požiadavkou môžu byť iniciálne podmienky pre funkčnú hodnotu a derivácie v jednom (initial value problem) alebo vo viacerých bodoch (boundary value problem). V aplikačnej sfére predstavujú diferenciálne rovnice vzťahy medzi fyzikálnymi veličinami a mierou ich zmeny. Ak fyzikálnu veličinu charakterizuje funkcia, derivácia tejto funkcie udáva zmenu funkč- nej hodnoty v závislosti od malých zmien premenných, na ktorých je funkcia závislá. Diferenciálne rovnice tak slúžia ako veľmi vhodný nástroj pre charakterizáciu rôznych procesov vo fyzike, chémii, bio- lógií, ekonómii, inžinierstve a iných oblastiach. Uvediem niekoľko príkladov. 1. Kvantová mechanika, Schrödingerova rovnica: Parciálna dife- renciálna rovnica, ktorá charakterizuje vývoj systému (v čase), so značným kvantovým efektom vlnovo-časticového dualizmu [14]. 2. Teória relativity, Einsteinove rovnice gravitačného poľa: Sústava desiatich parciálnych diferenciálnych rovníc, ktorá popisuje vzá- jomnú interakciu gravitácie a zakrivenia časopriestoru [15]. 3. Biológia, Hodgkin–Huxley model: Sústava nelineárnych diferen- ciálnych rovníc, ktoré aproximujú elektrochemickú charakteris- tiku bunkových membrán neurónov počas akčného potenciálu [16]. Zadanie a) Vyriešte systém lineárnych diferenciálnych rovníc

x′(t) = 3y(t) x(t) + 3z(t) (2.3) − y′(t) = y(t) z(t) (2.4) − z′(t) = 2x(t) + 2y(t) 7z(t) (2.5) − pri daných počiatočných podmienkach x(0) = 1, y(0) = 0, z(0) = 3.

15 2. Zameranie práce b) Vyriešte obyčajnú diferenciálnu rovnicu 2.rádu a vykreslite graf.

y′′(x) = sin(x) 5y′(x) + 3y(x) (2.6) −

2.4.2 Úloha č.2: Geometria v rovine a priestore Grafy slúžia k lepšej predstave o dátach a vzájomných vzťahov (relácií) medzi dátami. Medzi známe grafy v matematike sa radia: Spojnicové grafy (line plots) pre znázornenie funkcií v rovine, koláčové grafy (pie charts), stĺpcové grafy (bar plots) a histogramy v štatistike, povr- chové (surface plots), sieťové (mesh plots) a kontúrové grafy (contour plots) pre reprezentáciu funkčných závislostí a objektov v priestore, vektorové pole (vector field) pre znázornenie zmien funkcie (napr. pre sústavu diferenciálnych rovníc) a mnohé ďalšie. Jedným z častých geometrických problémov je určenie vzájomnej polohy dvoch alebo viacerých matematických objektov. Aj pri riešení tohto problému predstavujú grafy veľmi užitočný nástroj. V niektorých prípadoch často nie je nutné poznať presné (analytické) vyjadrenie vzájomnej polohy matematických objektov (takéto vyjadrenie môže byť veľmi zložité). Vhodná grafická reprezentácia tu však môže byť do- statočná pre dobrý odhad vzájomnej polohy priamo z grafu. Názornú grafickú reprezentáciu vzájomnej polohy kriviek v rovine a objektov v priestore demonštrujem v podúlohách a) a b). Pre zobrazenie grafov v matematike existuje mnoho rôznych sú- radnicových systémov (sústav súradníc). Súradnicovým systémom myslím bijektívne zobrazenie medzi množinou bodov v n-rozmernom priestore a n-ticou skalárou (zväčša čísel). Najčastejšie sa jedná o sú- radnicové systémy v rovine alebo v trojrozmernom priestore. Kar- teziánsky a polárny systém súradníc patria medzi najpoužívanejšie systémy súradníc v rovine. Množiny bodov v priestore zas definujeme pomocou systémov súradníc ako sú: karteziánsky, sférický (spherical), cylindrický (cylindrical), parabolický (paraboloidal), eliptický (ellipso- idal), toroidálny (toroidal) a mnohé iné. Použitie špecifických súradni- cových systémov nachádza uplatnenie najmä vo fyziky, inžinierstve a iných aplikačných sférach matematiky. Uvediem dva príklady.

1. Použitie polárnych súradníc pri charakterizácií fyzikálnych systé- mov pohybovými rovnicami môže výrazne zjednodušiť výpočty.

16 2. Zameranie práce

Mnohé fyzikálne systémy totiž zahŕňajú pohyby telies po kru- hových trajektóriách.

2. Sférické súradnice predstavujú veľký prínos pri popisovaní vzá- jomných interakcií objektov a polí v priestore (napr. gravitačné, elektrické alebo magnetické pôsobenie). V podúlohách c) a d) sa zameriam na vykresľovanie grafov v priestore zadaných v sférickom a cylindrickom súradnicovom systéme.

Zadanie a) Určite a graficky znázornite vzájomnú polohu (resp. prienik) kri- viek určených funkciami f1 a f2 v rovine.

19 f (x) = x2 + 3 (2.7) 1 9 x4 f (x) = 2x + 5 (2.8) 2 7 −

b) Vytvorte spoločný graf pre funkcie g1 a g2 zadané v karteziánskom systéme súradníc.

g1(x) = sin(x + cos(y)) (2.9) g2(x) = xsin(x)cos(y) (2.10)

c) Vytvorte graf funkcie r1 zadanej v sférickom súradnicovom systéme.

θ r1(θ, φ) = 1, 7 φcos(φ) (2.11)

d) Vytvorte graf funkcie r2 zadanej v cylindrickom súradnicovom systéme. r (θ, z) = θcos(z)sin(θ) z (2.12) 2 − 2.5 Použitý hardvér a softvér

Pre realizáciu vzorových úloh bola použitá nasledúca hardvérová a softvérová konfigurácia.

17 2. Zameranie práce

Hardvér

Procesor: Intel(R) Core(TM) i3-3110M CPU @ 2.40 GHz 2.40 GHz ∙ Operačná pamäť (RAM): 4.00 GB (3.88 usable) ∙ Grafická karta: Intel HD Graphics 4000 ∙ Disky: HDD 500 GB, 5400 otáčok ∙ Typ systému: 64-bitový procesor ∙ Systémový softvér

Operačný systém: Windows 8.1 (64-bitová verzia) ∙ Softvér systémov počítačovej algebry

MATLAB R2018a (verzia 9.4, marec 2018) ∙ Maple 2018 (marec 2018) ∙ Mathematica 11.3 (marec 2018) ∙ SageMath 8.1 (december 2017), rozhranie Sage Jupyter Notebook ∙ Maxima 5.41.0 (október 2017), rozhranie wxMaxima ∙

18 3 Porovnávanie vybraných systémov

3.1 Maple

Uvedené informácie o systéme Maple sú založené na údajoch z nasle- dujúcich zdrojov [1, 17].

3.1.1 Predstavenie systému História Systém počítačovej algebry Maple bol vyvinutý v 80. rokoch 20. storo- čia na kanadskej University of Waterloo v rámci jedného výskumného projektu. V roku 1988, za komerčným účelom, vznikla spoločnosť Waterloo Maple Inc. Verzia 4.3, ktorá vyšla v roku 1989, ako prvá za- hŕňala grafické užívateľské prostredie (graphical user interface, GUI) pre skupinu počítačov Macintosh. O rok neskôr sa stalo nové roz- hranie kompatibilné už aj s operačným systémom Windows. V roku 2005 (Maple 10) bol vytvorený mód „document mode“ ako súčasť štandardného rozhrania. Aktuálna verzia systému, Maple 2018, bola predstavená 21. marca 2018.

Základné charakteristiky Vývoj je výsledkom spolupráce zamestnancov spoločnosti, ako ∙ aj expertov vo výskumných strediskách po celom svete. Rozsiahla knižnica matematických balíkov a funkcií. ∙ Jazyk s veľmi intuitívnou syntaxou a jednoduchým ladením. ∙ Dve formy rozhrania: príkazový riadok a grafické užívateľské ∙ rozhranie. Štruktúra a dizajn Systém Maple pozostáva z troch častí: jadra určeného pre výpočty (kernel), rozhrania a knižnice. Menšia časť systému, tvorená jadrom a rozhraním, je napísaná v jazyku C. Jadro spravuje pamäť, slúži ako výpočtová jednotka pre algebrické výpočty a ako prekladač pre vstup zadaný používateľom.

19 3. Porovnávanie vybraných systémov

Rozhranie zabezpečuje komunikáciu užívateľa so systémom, spra- cúva výrazy zadané užívateľom, prezentuje výstup a ponúka grafickú interpretáciu (napr. vykresľovanie grafov funkcií). Knižnica predstavuje hlavnú funkčnú zložku systému. Väčšina knižníc je napísaná priamo v programovacom jazyku Maple. Knižnice je možné prehliadať a dokonca upraviť a rozširovať podľa potreby. Každá zložka knižnice je detailne popísaná v manuálových stránkach systému Maple. Súčasťou popisu je aj mnoho príkladov, na ktorých sa užívateľ veľmi rýchlo dokáže zoznámiť s jednotlivými funkciami, ktoré daná zložka knižnice poskytuje.

3.1.2 Implementácia vzorových úloh Uvedené hodnoty pre výpočtový čas a použitú pamäť sú priemerom piatich testov vykonaných v prostredí systému Maple za pomoci vsta- vanej funkcie showtime. Úloha 1 with(inttrans): conds:= {x(0)=1,y(0)=0,z(0)=3}; sysODE:= {(D(x))(t) = 3*y(t)-x(t)+3*z(t), (D(y))(t) = y(t)-z(t), (D(z))(t) = 2*x(t)+2*y(t)-7*z(t)}; sol:= dsolve(sysODE union conds, {x(t), y(t), z(t)}); (1) solLaplace:= dsolve(sysODE union conds, {x(t), y(t), z(t)}, (2) method=laplace); odetest(sol, sysODE union conds); odetest(solLaplace, sysODE union conds); conds:= {y(0) = 0, D(y)(0) = 3}; odeq := {diff(y(x), [x$2]) = sin(x)-5*(diff(y(x), x)) +3*y(x)}; sol:= dsolve(odeq union conds); (3) odetest(sol, odeq union conds); with(plots) solNum := dsolve(odeq union conds, type = numeric, (4) range = -5 .. 5);

20 3. Porovnávanie vybraných systémov

odeplot(solNum, [[x, y(x)], [x, diff(y(x), x)], (5) [x, diff(y(x), x$2)]], -1 .. 2, legend = [‘y(x)‘, ‘y’(x)‘, ‘y”(x)‘], title = "Graf 1b");

Tabuľka 3.1: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz dsolve 0.620 s 12.593 MB (1) dsolve 0.127 s 5.433 MB (2) dsolve 0.098 s 1.246 MB (3) dsolve 0.021 s 0.400 MB (4) odeplot 0.043 s 1.175 MB (5)

Výpočtový čas (celkom): 2.03 s. Použitá pamäť (celkom): 56.18 MB.

Úloha 2

with(plots): f1(x):= (19/9)*x^2+3; f2(x):= (1/7)*x^4-2*x+5; F:= [f1(x), f2(x)]; Sol:= [fsolve(f1(x) = f2(x), x)]; for i from 1 to nops(Sol) do Y[i] := eval(f1(x), x = Sol[i]); od Points:= [seq([Sol[i], Y[i]], i = 1..nops(Sol))]; G1:= plot(F, x = -5..5, 2..45, color = [blue, yellow], (1) thickness = [2, 2]); Gp:= pointplot(Points, color = red, symbol = circle, symbolsize = 20): display({G1, Gp});

g1(x, y):= sin(x + cos(y));

21 3. Porovnávanie vybraných systémov g2(x, y):=x*sin(x)*cos(y); G2:= plot3d({g1(x, y), g2(x, y)}, x = 0..4*Pi, y = 0..4*Pi, (2) labels = [x, y, z], grid = [49, 49], gridstyle = rectangular, style = surfacewireframe); r1(theta, phi):= 1.7^theta*phi*cos(phi); G3:= plot3d(r(theta, phi), theta = -Pi..Pi, phi = -Pi..6*Pi, (3) coords = spherical, gridstyle = rectangular, style = surfacewireframe); r2(vartheta, z):= theta*sin(theta)*cos(z)-z; (4) G4:= plot3d(r2(theta, z), z = 0..2*Pi, theta = 0..2*Pi, coords = cylindrical, scaling = constrained);

Tabuľka 3.2: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz plot 0.02 s 0.119 MB (1) plot3d 0.02 s 0.365 MB (2) plot3d 0.02 s 0.242 MB (3) plot3d 0.02 s 0.228 MB (4)

Výpočtový čas (celkom): 1,17 s. Použitá pamäť (celkom): 37.18 MB.

3.1.3 Hodnotenie Intuitívnosť systému (easy-to-use) Pri písaní matematických výrazov editor automaticky formátuje zlomky a exponenty. Knižničné funkcie sa začínajú malým písmenom. Pre fun- kcie Maple používa štandardnú notáciu, guľaté zátvorky f(x). Ako znak rovnosti sa používa ‘=’. Podobne aj ďalšie matematické výrazy ako je suma, limita, integrál atď. vyzerajú veľmi prirodzene, ako pri písaní na papier. Výrazy ako ‘2x‘ a podobné, sú predvolene chápané ako

22 3. Porovnávanie vybraných systémov

súčin. V prípade preferencie si užívateľ môže prepnúť spôsob zápisu na starší, strojový štýl (napr. 5*x2+8/5).ˆ Príkaz (resp. výraz) vyhodnotí užívateľ klávesom . V po- rovnaní s inými systémami počítačovej algebry Maple ponúka, okrem štandardného zobrazenia výstupu pod vstupom, možnosť zobrazenia výsledku danej operácie do riadku. Spôsob spojenia textu a matematických výrazov (dokonca s vy- hodnotením) je v systéme Maple veľmi elegantný a intuitívny. Rozhranie systému Maple navyše predstavuje interaktívne pro- stredie, v ktorom užívateľ pre označenú rovnicu môže jedným kliknu- tím vypočítať riešenie alebo vykresliť graf pre označenú funkciu. Do- konca je možné presúvať matematické výrazy z jednej strany rovnice na druhú (systém Maple použije adekvátnu ekvivalentnú úpravu).

cos(3x) = cos(3x) 3 x 3 x x + √x + 5 = 10 = x + √x + 5 = 10 sin(x) lim = 1 x 0 → x

Obr. 3.1: Ukážka sadzby a formátovania matematických výrazov

Systémové požiadavky Uvedené informácie sú prevzaté z online dokumentácie [18]. Procesor: 1 GHz + (Linux, Windows), 1.4 GHZ + (Windows Ser- ∙ ver), 64-bit, Intel (Mac) Miesto na disku: 4 GB ∙ Systémová pamäť (RAM): 4 GB + (odporúčaná) ∙

MS Windows: Windows 7 a vyššie, Windows Server 2012, 2016 ∙ Linux: Red Hat Enterprise Linux 7, SUSE Linux Enterprise Desk- ∙ top 12, Ubuntu 17.10, 16.04 LTS Apple Mac: macOS 10.13, 10.12, 10.11 ∙ 23

1 3. Porovnávanie vybraných systémov

Dokumentácia Dokumentácia bohatá na knižné publikácie, ako aj online zdroje. Hlavnú výhodu oproti bezplatným systémom predstavuje veľké množ- stvo video-návodov a vzorových úloh všetkých typov.

Paralelné výpočty Systém Maple umožňuje vytvárať vlastné viacvláknové programy (multithreading). Nevýhodu predstavuje menšie množstvo vláknovo bezpečných knižničných funkcií systému Maple. Maple poskytuje dva spôsoby pre paralelné programovanie. Pr- vým spôsobom je vytváranie, spúšťanie a ovládanie vlákien priamo v jazyku Maple pomocou funkcií Threads[]. Druhý spôsob predstavuje pomocný vysoko-úrovňový programovací model Task Programming Model, ktorý prácu s vláknami zjednodušuje. Pomocný model je ur- čený hlavne pre začínajúcich a stredne pokročilých užívateľov v oblasti paralelného programovania. Balík CUDA umožňuje využiť grafické karty s podporou CUDA (CUDA-enabled GPUs) pre značné urýchlenie výpočtov v oblasti line- árnej algebry, výpočtov s maticami a desatinnými číslami. Podporu pre riešenie výpočtovo veľmi náročných úloh pomocou počítačových klastrov alebo distribuovaných systémov zabezpečuje Maple Grid Computing Toolbox.

Škála použitia Matematické oblasti použitia: Bežné, diferenciálne, rekurentné a di- ofantické rovnice, nerovnice, integrálne transformácie, diferenciálny a integrálny počet, pravdepodobnosť, teória čísel, grafov a grúp, bo- olova algebra (výrokový kalkul), lineárna algebra (práca s maticami, vektormi, tenzormi), štatistika, geometria a topológia. Spolu so systémom Mathematica svojou funkcionalitou pokrývajú najviac matematických oblastí. Systém Maple, v porovnaní s inými univerzálnymi CAS, pravdepodobne disponuje najrozsiahlejšou kniž- nicou vstavaných matematických funkcií. Nevýhodu v porovnaní so systémom Mathematica predstavuje neschopnosť úpravy a zjedno- dušenia formúl v matematickej logike (Quantifier elimination).

24 3. Porovnávanie vybraných systémov

Licenčná a cenová politika Uvedené informácie sú prevzaté z online dokumentácie [19].

1. Študentská licencia: 124 $ (trvalá), 99 $ (ročná)

2. Domáca licencia: 239 $ (trvalá)

3. Profesionálna licencia: 2,990 $ (trvalá)

4. Akademická licencia: 1,560 $ (trvalá)

3.2 Mathematica

Uvedené informácie o systéme Mathematica sú založené na údajoch z nasledujúcich zdrojov [1, 20].

3.2.1 Predstavenie systému História V rokoch 1979 – 1981 vzniká systém SMP (Symbolic Manipulation Program) ako jeden z prvých moderných systémov počítačovej algebry. Autorom systému SMP je britský fyzik, matematik a informatik Steven Wolfram. Prvá verzia systému Mathematica bola vyvinutá v rokoch 1986 – 1988. Hlavnou myšlienkou systému Mathematica bolo vytvoriť univerzálny systém počítačovej algebry (general-purpose CAS). Ste- ven Wolfram založil v roku 1987 spoločnosť Wolfram Research, ktorá ďalej pokračovala vo vývoji systému Mathematica. Štvrtá verzia (1999) so sebou priniesla značné zrýchlenie a vyššiu efektivitu numerických výpočtov ako aj vstavaných funkcií. Piata verzia (2003) rozšírila funkci- onalitu systému (napr. v oblasti lineárnej algebry, špeciálnych typov rovníc a nerovníc). V roku 2007 (v. 6) bola významne pozmenená vnútorná štruktúra systému Mathematica, ktorá umožnila lepšiu inte- rakciu medzi užívateľom a samotným systémom. Aktuálne najnovšia verzia systému Mathematica (v. 11.3.0) bola vydaná v marci 2018.

Základné charakteristiky

Knižnica ponúka veľké množstvo matematických balíkov a fun- ∙ kcií.

25 3. Porovnávanie vybraných systémov

Prezentačná vrstva poskytuje grafické užívateľské rozhranie ∙ (GUI) v podobe virtuálneho zošita (notebook interface).

Programovací jazyk zameraný hlavne na funkcionálne progra- ∙ movanie.

Podpora výpočtov so symbolickými výrazmi, komplexnými čís- ∙ lami a aritmetiky s ľubovoľnou presnosťou (arbitrary-precision arithmetic).

Poskytuje nástroje pre paralelné výpočty (parallel computing). ∙ Štruktúra a dizajn Systému Mathematica pozostáva z dvoch častí: užívateľské rozhranie (interface) a jadro (kernel). Rozhranie reprezentuje vstupy a výstupy výpočtovej jednotky. Výpočtová jednotka (kernel) spracováva vstup zadaný užívate- ľom a vykonáva všetky výpočtové operácie. Prenos matematických výrazov okrem iného medzi rozhraním a výpočtovou jednotkou za- bezpečuje protokol MathLink.

3.2.2 Implementácia vzorových úloh Pre určenie výpočtového času jednotlivých príkazov bola použitá vstavaná funkcia Timing. Použitá pamäť pri jednotlivých operáciách bola získaná pomocou funkcie MaxMemoryUsed. Celková používaná pamäť bola určená funkciou MemoryInUse. Uvedené hodnoty sú priemerom piatich testov vykonaných v pro- stredí systému Mathematica.

Úloha 1 sol = DSolve[{x’[t] == -x[t] + 3*y[t] + 3*z[t], (1) y’[t] == y[t] - z[t], z’[t] == x[t] + 2*y[t] + 4*z[t], x[0] == 1, y[0] == 0, z[0] == 3}, {x[t], y[t], z[t]}, t]; Plot[Evaluate[{x[t], y[t], z[t]} /. sol], {t, -1, 0.5}]; (2)

26 3. Porovnávanie vybraných systémov

sol2 = DSolve[{y”[x] == -(5 y’[x]) + 3 y[x] + Sin[x], (3) y[0] == 1, y’[0] == 3}, y, {x, -1, 2}]; Plot[Evaluate[y[x] /. sol2], {x, -1, 2}]; (4)

Tabuľka 3.3: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz Dsolve 0.079 s 0.147 MB (1) Plot 0.063 s 1.136 MB (2) Dsolve 0.063 s 0.233 MB (3) Plot 0.031 s 0.480 MB (4)

Výpočtový čas (celkom): 0.378 s. Použitá pamäť (celkom): 83.917 MB.

Úloha 2 f1[x] := 19/9*x^2 + 3; f2[x] := x^4/7 - 2*x + 5; Sol = NSolve[f1[x] == f2[x], x] {y1 = f1[x] /. Sol} points = Table[{Flatten [Sol][[i, 2]], y1[[i]]}, {i, 1, Length[Sol]}] p1 = Plot[{f1[x], f2[x]}, {x, -5, 5}, PlotRange -> {{-5, 5}, {0, 45}}]; pp = ListPlot[points, PlotStyle -> {Red, PointSize[0.02]}]; Show[{p1, pp}, DisplayFunction -> $DisplayFunction] g1[x, y] := Sin[x + Cos[y]]; g2[x, y] := x*Sin[x]*Cos[y]; p2 = Plot3D[{g1[x, y], g2[x, y]}, {x, 0, 4*Pi}, {y, 0, 4*Pi}] (1) r1[t, p] := 1.7^t*p*Cos[p];

27 3. Porovnávanie vybraných systémov p3 = SphericalPlot3D[Evaluate[r1[t, p], {t, -Pi, Pi}, (2) {p, -Pi, 6*Pi}], PlotRange -> {{-20, 20}, {-20, 20}, {-20, 20}}] r2[r, phi] := r*Cos[phi]*Sin[r] - phi; p4 = RevolutionPlot3D[Evaluate[r2[r, phi], {r, 0, 2*Pi}, (3) {phi, 0, 2*Pi}], PlotRange -> {{-10, 10}, {-10, 10}, {-10, 10}}]

Tabuľka 3.4: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz Plot3D 0.290 s 0.119 MB (1) SphericalPlot3D 0.474 s 0.365 MB (2) RevolutionPlot3D 0.083 s 0.242 MB (3)

Výpočtový čas (celkom): 1.137 s. Použitá pamäť (celkom): 75.523 MB.

3.2.3 Hodnotenie Intuitívnosť systému (easy-to-use)

Knižničné funkcie sa začínajú veľkým písmenom. Pre zápis funkcie Mathematica používa notáciu s hranatými zátvorkami, f[x]. Ako znak rovnosti sa používa ‘==’. Výrazy ako ‘2x‘ a podobné, sú predvolene chápané ako súčin. Obsah vstupu v rozhraní systému Mathematica vyhodnotí užívateľ klávesovou skratkou +. Klávesa je určená pre posun kurzora na ďalší riadok vstupu. V porovnaní so systémom Maple, rozhranie systému Mathema- tica poskytuje užívateľovi menšiu možnosť interakcie so zapísanými matematickými výrazmi. Pri spojení matematického výrazu s textom, sa výraz stáva statickým a pri zmene hodnôt premenných, na ktorých je výraz závislý, sa jeho hodnota neaktualizuje.

28 3. Porovnávanie vybraných systémov This is my sen In[1] := Cos[3x] Out[1] = Cos[3x]

In[2] := xˆ3 + Sqrt[x] + x/5 == 10 x 3 Out[2] = √x + 5 + x == 10

In[3] := Limit[Sin[x]/x, x 0] Out[3] =1 →

Obr. 3.2: Ukážka sadzby a formátovania matematických výrazov

Systémové požiadavky Uvedené informácie sú prevzaté z online dokumentácie [21]. Procesor: Intel Pentium Dual-Core alebo iný ekvivalent ∙ Miesto na disku: 14 GB ∙ Systémová pamäť (RAM): 2 GB + (odporúčaná) ∙ Mathematica podporuje urýchlenie výpočtov grafickým procesorom (GPU). Pre využitie tejto schopnosti je potrebná grafická karta s dvoj- itou presnosťou, ktorá podporuje OpenCL alebo CUDA.

MS Windows: Windows 7 a vyššie (32 a 64-bitová verzia) ∙ Linux: Ubuntu 12.04 – 17.10, Fedora 14 – 27, RHEL 6 – 7, CentOS ∙ 6 – 7, Debian 7 – 9, openSUSE 12.1 – 13.2

Apple Mac: OS X 10.9 a vyššie (64-bitová verzia) ∙ Správne fungovanie systému Mathematica sa predpokladá aj pre iné distribúcie založené na linuxovom jadre 2.6 a vyššie.

Dokumentácia Dokumentácia bohatá na knižné publikácie, ako aj online zdroje. Hlavnú výhodu oproti bezplatným systémom predstavuje veľké množ- stvo video-návodov a vzorových úloh všetkých typov.

29

1 3. Porovnávanie vybraných systémov

Paralelné výpočty Systém Mathematica disponuje vlastným interaktívnym prostredím pre paralelné výpočty. Samotný charakter systému, zameraný na sym- bolické výpočty, zabezpečuje podporu pre rôzne formy paralelných výpočtov. V porovnaní so systémom Maple obsahuje knižnica systému Mathematika väčšie množstvo vláknovo bezpečných foriem bežne po- užívaných funkcií ako map, table alebo sum. S pomocou funkcií Compile, Parallelization a CompilationTarget je možné vytvoriť skompilovanú funkciu, ktorej výpočet môže prebie- hať paralelne na viacjadrových procesoroch alebo dokonca viacerých procesoroch. Pre urýchlenie výpočtov prostredníctvom GPU sú k dispozícií vstavané funkcie CUDAFunctionLoad, OpenCLFunctionLoad, ktoré umožnujú využiť výpočtový potenciál grafických kariet s podporou CUDA alebo OpenCL. Značnou nevýhodou systému Mathematica je obmedzenie maxi- málneho počtu výpočtových jadier licenciou.

Škála použitia Matematické oblasti použitia: Bežné, diferenciálne, rekurentné a di- ofantické rovnice, nerovnice, integrálne transformácie, diferenciálny a integrálny počet, pravdepodobnosť, teória čísel, grafov a grúp, bo- olova algebra (výrokový kalkul), lineárna algebra (práca s maticami, vektormi, tenzormi), štatistika, geometria a topológia, neurónové siete, spracovanie obrazu (image processing). Spolu so systémom Maple svojou funkcionalitou pokrývajú najviac matematických oblastí. Z vybraných systémov Mathematica zostáva zatiaľ jediným nástrojom pre úpravu a zjednodušenie formúl v mate- matickej logike (Quantifier elimination).

Licenčná a cenová politika Uvedené informácie sú prevzaté z online dokumentácie [22]. 1. Študentská licencia: 95 £ (trvalá), 50 £ (ročná) 2. Domáca licencia: 210 £ (trvalá), 105 £ (ročná) 3. Profesionálna licencia: 2,245 £ (trvalá), 1125 £ (ročná) 4. Akademická licencia: 945 £ (trvalá), 475 £ (ročná)

30 3. Porovnávanie vybraných systémov 3.3 MATLAB

Uvedené informácie o systéme MATLAB sú založené na online doku- mentácii [23]. Uvedené historické informácie o systéme SageMath sú založené na údajoch z nasledujúceho zdroja [24].

3.3.1 Predstavenie systému

História V sedemdesiatych rokoch 20. storočia pracoval Cleve Moler, profesor matematiky a počítačovej vedy (Computer science), na vývoji matema- tického balíka pre numerické výpočty s maticami (EISPACK) a neskôr balíka pre riešenie lineárnych rovníc (LINPACK). S využitím balíkov EISPACK a LINPACK a jazyku Fortran vyvinul koncom sedemde- siatych rokov profesor Moler prvú verziu systému MATLAB. Vďaka tomuto systému mohli jeho študenti využívať novo vytvorené balíky aj bez písania programov v jazyku Fortran. V tom čase bol jazyk Fortran jeden z popredných jazykov pre matematické výpočty. Avšak progra- movanie v ňom bolo veľmi náročné. Prvá verzia systému MATLAB ob- sahovala asi 80 funkcií a pracovala s maticami, ako s jediným dátovým typom. O systém MATLAB prejavili veľký záujem študenti aplikova- nej matematiky. Niektorí študenti začali neskôr pracovať vo firmách, ktoré rozšírili funkcionalitu systému MATLAB v oblastiach ako je spracovanie signálov a ponúkli systém na komerčné účely. Jack Little a jeho kolega Steve Bangert prepísali MATLAB do jazyka C, pridali nové funkcie a zlepšili grafickú stránku systému. V roku 1984 zakla- dajú Little, Moler a Steve Bangert v Kalifornii spoločnosť MathWorks, ktorá pokračovala vo vývoji a predaji systému. Aktuálne najnovšia verzia systému, 9.4 (R2018a) bola vydaná v marci 2018.

Základné charakteristiky

Systém primárne určený pre numerické výpočty. Pre výpočty ∙ so symbolickými výrazmi používa MATLAB pomocný nástroj (toolbox) MuPAD symbolic engine.

Základným dátovým typom je matica, resp. pole. ∙ 31 3. Porovnávanie vybraných systémov

Poskytuje nástroje pre tvorbu aplikácií s vlastným grafickým ∙ užívateľským rozhraním.

Poskytuje funkcie, ktoré umožňujú rozšíriť algoritmy napísané ∙ v jazyku MATLAB o kódy iných jazykov (C, Java, .NET) a ďalšie aplikácie (napr. Microsoft Excel).

Štruktúra a dizajn Systém MATLAB ponúka viacero spôsobov používania (rozhraní): interaktívny príkazový riadok (Shell), programy a skripty v jazyku MATLAB a pomocné grafické užívateľské rozhranie (GUI). Vstavané knižnice, taktiež nazývané Toolboxy, sú tvorené súbormi typu M a MEX. Súbory typu M (M-file) obsahujú definíciu tried, skrip- tov alebo funkcií. Funkcie môžu mať rôzny počet vstupných a vý- stupných argumentov. Vstavané funkcie sú usporiadané do balíkov (vrátane dokumentácie), ktoré sú určené pre jednotlivé matematické oblasti. V ponuke systému MATLAB je aj prostredie GUIDE (Graphical User Interface Development Environment), ktoré slúži na tvorbu apli- kácií s vlastným grafickým rozhraním. Ďalším príkladom pomocného prostredia je Simulink, ktorý umožňuje modelovanie, simuláciu a analýzu dynamických systémov. Súčasťou systému MATLAB (od verzie 7.3, 2006) je aj MATLAB Builder JA, ktorý umožňuje vytvárať Java komponenty (jar archívy) z programov napísaných v jazyky MATLAB a následne vložiť túto komponentu do serverovej aplikácie alebo pracovného prostredia (desktop aplications).

3.3.2 Implementácia vzorových úloh Pre určenie výpočtového času jednotlivých príkazov bola použitá vstavaná funkcia stopwatch timer (tiež známa ako tic – toc). Pre určenie použitej pamäti pri vykonávaní jednotlivých operácii sa mi nepodarilo získať spoľahlivé výsledky. Uvedené hodnoty sú priemerom piatich testov vykonaných v pro- stredí systému MATLAB.

32 3. Porovnávanie vybraných systémov

Úloha 1 conds=’x(0)=1, y(0)=0, z(0)=3’; sol=dsolve(’Dx=-x+3*y+3*z’,’Dy=y-z’, (1) ’Dz=x+2*y+4*z’,conds); sol.x; sol.y; sol.z; t=linspace(-1,.5,50); plot(t, eval(vectorize(sol.x)), t, (2) eval(vectorize(sol.y)), t, eval(vectorize(sol.z)))

conds=’y(0)=0,Dy(0)=3’; eqo2=’D2y=sin(t)-5*Dy+3*y’; solY=dsolve(eqo2,conds,’t’) (3) t=linspace(-1,2,20); z=eval(vectorize(solY)); plot(t,z) (4)

Tabuľka 3.5: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz dsolve 2.583 s x (1) plot 0.2327 s x (2) dsolve 1.8243 s x (3) plot 0.6974 s x (4)

Výpočtový čas (celkom): 5.490 s.

Úloha 2 x = -5:0.0001:5; fun1= (19/9)*(x.^2) + 3; fun2 = ((x.^4)/7-(2*x) + 5); index_intersection = find(abs(fun1 - fun2) < 0.0007); index_intersection x_value_intersection = x(index_intersection);

33 3. Porovnávanie vybraných systémov y_value_intersection = fun1(index_intersection); curve1 = plot(x, fun1); hold on curve2 = plot(x, fun2); intersection = scatter(x_value_intersection, y_value_intersection,...’Marker’, ’o’); hold off

[X,Y] = meshgrid(0:0.1:4*pi, 0:0.1:4*pi); g1 = sin(X + cos(Y)); g2 = X.*sin(X).*cos(Y); surf(X,Y,g1) hold on C2=X.*Y; surf(X,Y,g2) (1) hold off

[the, phi] = meshgrid(-pi:0.1:pi, -pi:0.1:6*pi); r = (1.7.^the).*phi.*cos(phi); [Xa,Ya,Z] = sph2cart(the, phi, r); surf(Xa, Ya, Z) (2)

[r,theta] = meshgrid(0:0.1:2*pi, 0:0.1:2*pi); rho = r.*cos(theta).*sin(r) - theta; [Xb,Yb] = pol2cart(r, theta); surf(Xb,Yb,rho) (3) Tabuľka 3.6: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz surf 0.551 s x (1) surf 0.926 s x (2) surf 0.5071 s x (3)

Výpočtový čas (celkom): 2.547 s.

34 3. Porovnávanie vybraných systémov

3.3.3 Hodnotenie Intuitívnosť systému (easy-to-use) Knižničné funkcie sa začínajú malým písmenom. Pre zápis funkcie, MATLAB používa štandardnú notáciu s guľatými zátvorkami, f(x). Ako znak rovnosti sa používa ‘==’. Výrazy ako ‘2x‘ a podobné nie sú chápané ako súčin a vyhodnotia sa ako chybné. Príkaz (resp. postupnosť príkazov) vyhodnotí užívateľ klávesom . This is my sen >> syms x >> cos(3*x)

ans = cos(3*x)

>> x3 + sqrt(x) + x/5 == 10

ans = xˆ(1/2) + xˆ3 + x/5 == 10

>> limit(sin(x)/x,x,0)

ans = 1

Obr. 3.3: Ukážka sadzby a formátovania matematických výrazov

Systémové požiadavky Uvedené informácie sú prevzaté z online dokumentácie [25]. Procesor: Intel alebo AMD x86-64 (minimálne), 4-jadrový pro- ∙ cesor s podporou AVX2 (odporúčané) Miesto na disku: 2 – 2,5 GB (len MATLAB), 4 – 6 GB (štandardná ∙ inštalácia) (minimálne), 22 GB (plná inštalácia), SSD (odporúčané)

35

1 3. Porovnávanie vybraných systémov

Systémová pamäť (RAM): 4 GB (minimálne), 8 GB (odporúčané) ∙ Grafická karta: podpora OpenGL 3.3 s pamäťou 1 GB GPU (od- ∙ porúčané)

Parallel Computing Toolbox podporuje urýchlenie výpočtov grafic- kým procesorom (GPU). Pre využitie tejto schopnosti je potrebná grafická karta, s podporou pre CUDA (3.0 +).

MS Windows: Windows 7 a vyššie (32 a 64-bitová verzia), Win- ∙ dows Server 2012, 2012 R2, 2016

Linux: 17.10, 16.04 LTS, 14.04 LTS, Debian 9, 8, Red Hat Enter- ∙ prise Linux 7, 6, SUSE Linux Enterprise Desktop 12, Server 12 (minimum SP2)

Apple Mac: macOS 10.13 – 10.11 ∙ Dokumentácia Dokumentácia bohatá na knižné publikácie, ako aj online zdroje. Hlavnú výhodu oproti bezplatným systémom predstavuje veľké množ- stvo video-návodov a vzorových úloh všetkých typov.

Paralelné výpočty MATLAB Distributed Computing Server umožňuje využitie počítačo- vých klastrov (computer cluster) a distribuovaných systémov (napr. Grid computing). Parallel Computing Toolbox (PCT) poskytuje podporu pre využitie viacjadrových procesorov pomocou lokálne bežiacich vlákien (wor- kers). Knižnica PCT taktiež obsahuje viaceré funkcie určené pre para- lelné programovanie ako parfor (parallel for-loop), ktorá umožňuje rozložiť výpočet iterácií cyklu medzi viaceré procesory. PCT navyše podporuje urýchlenie výpočtov grafickým proceso- rom (GPU). V porovnaní s inými systémami, poskytuje MATLAB veľmi elegantný spôsob pre integráciu GPU výpočtov, bez akejkoľvek nutnosti poznať nízko-úrovňové funkcie alebo samotnú architektúru GPU.

36 3. Porovnávanie vybraných systémov

Škála použitia Matematické oblasti použitia: Bežné a diferenciálne rovnice, integrálne transformácie, diferenciálny a integrálny počet, lineárna algebra. V symbolických výpočtoch značne slabšia funkcionalita oproti ostatným systémom. Funkcionalita zameraná skôr na numerické výpočty, analýzu dát, modelovanie a simuláciu dynamických systémov (control theory), strojové učenie a tvorbu aplikácií s grafickým rozhraním.

Licenčná a cenová politika Uvedené informácie sú prevzaté z online dokumentácie [26].

1. Študentská licencia: 35 e (len MATLAB), 69 e (MATLAB, Simu- link + 10 ďalších doplnkových nástrojov)

2. Domáca licencia: 119 e (trvalá)

3. Profesionálna licencia: 2000 e (trvalá), 800 e (ročná)

4. Akademická licencia: 500 e (trvalá), 250 e (ročná)

3.4 Maxima

Uvedené informácie o systéme Maxima sú založené na údajoch z online dokumentácie [27].

3.4.1 Predstavenie systému História Systém počítačovej algebry Maxima vnikol ako nástupca, resp. ako jedna z vývojových vetiev slávneho matematického systému Mac- syma. Systém Macsyma, ako jeden z najstarších systémov, bol vyvinutý v rokoch 1968 – 1982 na MIT (Massachusetts Institute of Technology) v rámci projektu MAC (MAC’s SYmbolic MAnipulator). Macsyma bola tiež inšpiráciou pre viacero neskorších matematických systé- mov ako Maple a Mathematica. Vedúcim vývojovej vetvy Maxima od roku 1982 až do svojho úmrtia v roku 2001 bol profesor William F. Schelter. V roku 1998 sa Maxima stala samostatným voľne prístupným

37 3. Porovnávanie vybraných systémov systémom (GNU General Public License, GPL). Po smrti profesora Scheltera sa o rozvoj systému a propagáciu širšej verejnosti stará nezá- vislá skupina užívateľov a vývojárov. Aktuálne najnovšia verzia 5.41.0 vyšla v októbri 2017.

Základné charakteristiky Vývoj systému zabezpečuje skupina asi 27 dobrovoľníkov z ce- ∙ lého sveta pomocou webovej služby SourceForge server.

Implementovaný v programovacom jazyku Lisp, resp. jeho dia- ∙ lektu Common Lisp.

Systém špecializovaný na operácie s výrazmi. ∙ Základným dátovým typom je výraz. Dokonca aj blok textu je ∙ charakterizovaný ako výraz Štruktúra a komponenty Systém Maxima ponúka dva základné spôsoby používania (rozhraní): interaktívny príkazový riadok a grafické užívateľské rozhranie (GUI) v podobe virtuálneho zošita (notebook interface). Pre systém Maxima sú dostupné rôzne GUIs: wxMaxima, Xma- xima, GMaxima, Jupyter a ďalšie. Najviac používaným je rozhranie wxMaxima, ktoré je implementované v jazyku C++ a používa knižnice wxWidgets.

3.4.2 Implementácia vzorových úloh Uvedené hodnoty pre výpočtový čas a použitú pamäť sú priemerom piatich testov vykonaných v prostredí systému Maxima za pomoci vstavanej funkcie showtime.

Úloha 1 eq1: ’diff(x(t),t) = -x(t)+3*y(t)+3*z(t); eq2: ’diff(y(t),t) = y(t)-z(t); eq3: ’diff(z(t),t) = x(t)+2*y(t)+4*z(t); atvalue(x(t), t = 0, 1); atvalue(y(t), t = 0, 0);

38 3. Porovnávanie vybraných systémov

atvalue(z(t), t = 0, 3); sol: desolve([eq1, eq2, eq3], [x(t), y(t), z(t)]); (1) plot2d([rhs(sol[1]), rhs(sol[2]), rhs(sol[3])], (2) [t,-1,0.5]);

eq2o: ’diff(y, x, 2) = sin(x) - 5*’diff(y, x) + 3*y; sol2: ode2(eq2o, y, x); (3) icp: ic2(sol2, x=0, y=1, ’diff(y, x) = 3); plot2d(rhs(icp),[x,-1,2]); (4)

Tabuľka 3.7: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz desolve 0.453 s 2.582 MB (1) plot2d 1.344 s 44.657 MB (2) ode2 0.359 s 2.990 MB (3) plot2d 0.422 s 13.551 MB (4)

Výpočtový čas (celkom): 2.630 s. Použitá pamäť (celkom): 63.932 MB.

Úloha 2 f1(x) = 19/9*x^2+3; f2(x) = x^4/7-2*x+5; soln: allroots (f1(x) = f2(x)); points: makelist([rhs(soln[i]), f1(rhs(soln[i]))],i,1, length(soln)); plot2d([f1(x), f2(x), [discrete, points]], (1) [x, -5, 5], [style, lines, lines, linespoints], [color, blue, green, red], [point_type, circle]);

g1(x,y):=sin(x+cos(y)); g2(x,y):=x*sin(x)*cos(y); plot3d ([g1(x,y), g2(x,y), [x, 0, %pi*4], (2) [y, 0, %pi*4]]);

39 3. Porovnávanie vybraných systémov g3(the,phi):=1.7^the*phi*cos(phi); plot3d ( g3(the,phi), [the, -%pi, %pi], [phi, -%pi, 6*%pi], (3) same_xyz,[transform_xy, spherical_to_xyz]); g4(r, theta):=r*cos(theta)*sin(r)-the; plot3d (g4(r,theta), [r,0,2*%pi], [theta,0,2*%pi], (4) [transform_xy, polar_to_xy]);

Tabuľka 3.8: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz plot2d 0.531 s 19.799 MB (1) plot3d 2.250 s 94.154 MB (2) plot3d 1.344 s 61.484 MB (3) plot3d 1.219 s 50.067 MB (4)

Výpočtový čas (celkom): 5.355 s. Použitá pamäť (celkom): 225.614 MB.

3.4.3 Hodnotenie Intuitívnosť systému (easy-to-use) Knižničné funkcie sa začínajú malým písmenom. Pre zápis funkcie Mathematica používa štandardnú notáciu s guľatými zátvorkami, f(x). Ako znak rovnosti sa používa ‘=’. Výrazy ako ‘2x‘ a podobné nie sú chápané ako súčin a vyhodnotia sa ako chybné. Každý riadok sa končí bodkočiarkou. Rozhranie wxMaxima ukončí riadok bodkočiarkou automaticky pri vyhodnotení. Obsah vstupu v rozhraní systému Maxima vyhodnotí užívateľ klávesovou skratkou +. Klávesa je určená pre posun kurzora na ďalší riadok vstupu. Od štandardnej matematickej notácie sa znak pre sčítanie mierne odlišuje tvarom a pozíciou, v ktorej v niektorých prípadoch opticky zasahuje do nasledujúceho výrazu.

Systémové požiadavky

40 5/24/2018 int1

--> cos(3·x3.); Porovnávanie vybraných systémov

(%o3) cos (3x)

--> x^3+sqrt(x)+x/5=10;

x − (%o8) x3 + + √x = 10 5

--> limit(sin(x)/x, x, 0);

(%o9) 1

Obr. 3.4: UkážkaCr sadzbyeated wi ath formátovania wxMaxima. matematických výrazov

Uvedené informácie sú prevzaté z online dokumentácie [28]. Hardvérové nároky systému Maxima sú veľmi nízke. Dokumentácia uvádza, že systém Maxima nemá žiadne špeciálne hardvérové ná- roky. Inštalácia systému Maxima si na mojom počítači (Windows 8.1) vyžiadala asi 640 MB voľného miesta. Systém Maxima je kompatibilný so všetkými platformami POSIX ako Linux, Apple Mac, Unix ako aj s platformami MS Windows a Android. Upresnenie verzií kompatibilných platforiem alebo testy sa mi v dokumentácii nepodarilo nájsť.

Dokumentácia a užívateľská podpora Prevažuje online dokumentácia. Pokročilejší užívatelia ocenia hlavne voľný prístup k zdrojovému kódu, vďaka ktorému môže užívateľ lep- šie pochopiť ako fungujú vstavané funkcie alebo samotný systém. Video-dokumentácia je pomerne bohatá, avšak skôr technického rázu (inštalácia, práca s rozhraním atď.). Značnou nevýhodou oproti plateným systémom je deficit vzoro- vých, hlavne netriviálnych úloh.

41

file:///C:/Users/Peter_G/Desktop/Maxima/int/html/int1.html 1/1 3. Porovnávanie vybraných systémov

Paralelné výpočty Systém Maxima nepodporuje žiadnu formu paralelných výpočtov.

Škála použitia Matematické oblasti použitia: bežné, diferenciálne a rekurentné rov- nice, nerovnice, integrálne transformácie, diferenciálny a integrálny počet, pravdepodobnosť, teória čísel, grafov a grúp, boolova algebra (výrokový kalkul), lineárna algebra (práca s maticami, vektormi, ten- zormi), geometria a topológia. Rozsiahla funkcionalita v matematic- kých disciplínach. Zameraný na prácu so symbolickými výrazmi a symbolické vý- počty. Podobne ako SageMath, Maxima neposkytuje program pre sadzbu matematických výrazov (formula editor) v porovnaní s pla- tenými systémami. Avšak na rozdiel od systému SageMath, nie je Maxima schopná riešiť napr. diofantické rovnice.

Licenčná a cenová politika Bezplatný softvér s voľne prístupným zdrojovým kódom (free, open- source software). Licenčné podmienky udáva licencia GNU General Public License (GPL).

3.5 SageMath

Uvedené informácie o systéme SageMath sú založené na online doku- mentácii [29]. Uvedené historické informácie o systéme SageMath sú založené na údajoch z nasledujúcich zdrojov [30, 31].

3.5.1 Predstavenie systému História: Prvá verzia systému SageMath vyšla 24. februára 2005 ako bezplatný softvér s voľne prístupným zdrojovým kódom (free open-source soft- ware) a podmienkami licencie “GNU General Public License version 3”. Hlavným cieľom bolo vytvoriť voľne prístupnú alternatíva plate- ných matematických systémov ako Maple, MATLAB, Mathematica a Magma. Zakladateľom a vedúcim projektu SageMath je matematik

42 3. Porovnávanie vybraných systémov

William Stein z americkej univerzity University of Washington. V ap- ríli 2005 bolo vytvorené rozhranie pre ďalšie matematické systémy ako Magma a Mathematica. V priebehu roka bol systém obohatený o GAP, Singular, Maxima a CLISP ako štandard. Od roku 2006 sa začali orga- nizovať pracovné semináre (SAGE Days workshops), ktoré do vývoja pritiahli širšiu verejnosť. V roku 2016 došlo k výraznej rekonštrukcii grafického rozhrania. Prvá verzia (8.0) kompatibilná s operačným sys- témom Windows vznikla v júly 2017. Aktuálne najnovšia verzia, 8.1, bola vydaná v decembri 2017.

Základné charakteristiky:

Zameraný prevažne na skúmanie a analýzu matematických ob- ∙ jektov a štruktúr v oblasti algebry, geometrie, numerických vý- počtov, teórie čísel a iných.

Zdrojový kód je jednoducho kompilovateľný. ∙ Systém SageMath ponúka rozhrania pre väčšinu ďalších CAS, ∙ vrátane systémov PARI, GAP, Singular, Maxima, KASH, Magma, Maple, a Mathematica.

Systém Sage umožňuje definovať vlastné dátové typy a využívať ∙ zdrojové kódy v rôznych programovacích jazykoch.

Väčšia časť systému Sage je implementovaná v programovacom ∙ jazyku Python.

Na urýchlenie niektorých operácií a výpočtov, využíva Sage iné ∙ CAS ako GMP, PARI, GAP a NTL.

Štruktúra a dizajn: Knižnice: Štandardná knižnica pre Python (Python standard library), knižnice implementujúce základné a špeciálne matematické funkcie. Ďalej rozličné štatistické knižnice prostredníctvom R a SciPy. Využíva tiež voľne prístupné (open-source) knižnice iných matematických sys- témov. Systém SageMath ponúka viacero spôsobov používania (rozhraní): (1.) interaktívny príkazový riadok IPython (interactive command line,

43 3. Porovnávanie vybraných systémov tiež Shell), (2.) skripty, ktoré používajú knižnicu, (3.) programy prelo- žené a skompilované v systéme Sage, (4.) grafické rozhranie “Notebook graphical interface”. Grafické rozhranie sa realizuje pomocou textovo-grafického edi- tora (browser-based notebook), ktorý možno otvoriť priamo vo webo- vom prehliadači (Firefox, Opera, Konqueror, Google Chrome a Safari). Užívateľ tak môže využívať vstupy a výstupy z predošlých operácií.

3.5.2 Implementácia vzorových úloh Pre určenie výpočtového času jednotlivých príkazov bola použitá vsta- vaná funkcia timeit. Pre určenie použitej pamäti pri vykonávaní jednot- livých operácii sa mi nepodarilo získať spoľahlivé výsledky. Celková používaná pamäť bola určená pomocou funkcie get_memory_usage. Uvedené hodnoty sú priemerom piatich testov vykonaných v pro- stredí systému SageMath.

Úloha 1 t = var(’t’); x = function(’x’)(t); y = function(’y’)(t); z = function(’z’)(t); eq1 = diff(x,t) == -x + 3*y +3*z; eq2 = diff(y,t) == y - z; eq3 = diff(z,t) == x + 2*y + 4*z; sol = desolve_system([eq1, eq2, eq3], [x, y, z], (1) ics=[0, 1, 0, 3]); solX, solY, solZ = sol[0].rhs(), sol[1].rhs(), sol[2].rhs(); plot([solX, solY, solZ], (-1,0.5)) (2) p = var(’p’); f = function(’f’)(p); eq2o = diff(f, p, 2) == sin(p) - 5*diff(f, p) + 3*f; sol2o = desolve(eq2o, f, [0, 1, 3]); (3) plot(sol2o, (-1, 2)) (4)

44 3. Porovnávanie vybraných systémov

Tabuľka 3.9: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz desolve_system 0.353 s x (1) plot 0.590 s x (2) desolve 0.968 s x (3) plot 9.351 s x (4)

Výpočtový čas (celkom): 11.505 s. Použitá pamäť (celkom): 258.961 MB.

Úloha 2 x, y = var(’x y’); f1(x) = (19/9)*(x^2)+3; f2(x) = ((x^4)/7)-(2*x)+5; sol = solve(f1(x)==f2(x),x); (1) g1 = plot(f1(x), (x, -5, 5), rgbcolor=(0,1,0)); (2) g2 = plot(f2(x), (x, -5, 5)); show(g1+g2); points = [(sol[i].rhs().real(), f1(sol[i].rhs().real())) for i in range(len(sol))]; g3 = list_plot(points, color=’red’, pointsize = 30); show(g1+g2+g3);

f3(x,y) = sin(x + cos(y)); f4(x,y) = x*sin(x)*cos(y); g4 = plot3d(f3(x, y),(x, 0, 4*pi),(y, 0, 4*pi), (3) adaptive=True, color=[’red’,’yellow’]); g5 = plot3d(f4(x, y),(x, 0, 4*pi),(y, 0, 4*pi), (4) adaptive=True, color=[’purple’,’blue’]); show(g4+g5);

r, z, phi, theta = var(’r z phi theta’); f5(z, phi) = 1.7^z*phi*cos(phi);

45 3. Porovnávanie vybraných systémov

TS = Spherical(’radius’, [’azimuth’, ’inclination’]); TS.transform(radius = r, azimuth = z, inclination = phi) (r*cos(z)*sin(phi), r*sin(phi)*sin(z), r*cos(phi)) g6 = plot3d(f5(z, phi), (z, -pi, pi), (phi, -pi, 6*pi), transformation=TS, adaptive=True); g6 f6(r, theta) = r*cos(theta)*sin(r) - theta; TC = Cylindrical(’height’, [’radius’, ’azimuth’]); TC.transform(radius = r, azimuth = theta, height = z) (r*cos(theta), r*sin(theta), z) g7 = plot3d(f6(r, theta), (r, 0, 2*pi), (theta, 0, 2*pi), transformation = TC); g7

Tabuľka 3.10: Výpočtovo najdrahšie operácie

Použitá funkcia Výpočtový čas Použitá pamäť Príkaz solve 0.510 s x (1) plot 0.595 s x (2) plot3d 0.445 s x (3) plot3d 0.502 s x (4)

Výpočtový čas (celkom): 2.431 s. Použitá pamäť (celkom): 265.301 MB.

3.5.3 Hodnotenie Intuitívnosť systému (easy-to-use) Knižničné funkcie sa začínajú malým písmenom. Pre zápis funkcie, SageMath používa štandardnú notáciu s guľatými zátvorkami, f(x). Ako znak rovnosti sa používa ‘==’. Výrazy ako ‘2x‘ a podobné nie sú chápané ako súčin a vyhodnotia sa ako chybné. Obsah bunky v rozhraní Jupyter Notebook vyhodnotí užívateľ klávesovou skratkou +. Klávesa je určená pre posun na ďalší riadok bunky.

46 Untitled

May 24, 2018 3. Porovnávanie vybraných systémov

In [3]: cos(3*x)

Out[3]: cos(3*x)

In [5]:x^3+sqrt(x)+x/5==10

Out[5]: xˆ3 + 1/5*x + sqrt(x) == 10

In [7]: limit(sin(x)/x, x=0)

Out[7]:1

In []: Obr. 3.5: Ukážka sadzby a formátovania matematických výrazov

Systémové požiadavky Uvedené informácie sú prevzaté z online dokumentácie [32]. Procesor: v dokumentácii nie sú uvedené žiadne požiadavky ∙ Miesto na disku: 4,5 – 6 GB (v závislosti od platformy) ∙ Systémová pamäť (RAM): 2 GB + (odporúčaná), virtuálna pa- ∙ mäť 2,5 GB (RAM + swap)

MS Windows (od verzie 8.0): Windows 7 a vyššie (64-bit.) ∙ Linux: Debian 7.1 (64-bit), Fedora 16 (32-bit.), 16, 20 (64-bit.), ∙ Ubuntu 8.04.4, 10.04.3, 14.04 (64-bit.), Ubuntu 13.04 (32-bit), SUSE 10 SP1 (64-bit.)

Apple Mac: OSX 10.9, 10.6 (64-bit.) ∙ Solaris: Solaris 10 (SPARC processors, 32-bit.) ∙ Dokumentácia Prevažuje online dokumentácia. Pokročilejší užívatelia ocenia1 hlavne voľný prístup k zdrojovému kódu, vďaka ktorému môže užívateľ lepšie pochopiť ako fungujú vstavané funkcie alebo samotný systém.

47 3. Porovnávanie vybraných systémov

Video-dokumentácia je pomerne bohatá, avšak skôr technického rázu (inštalácia, práca s rozhraním atď.). Značnou nevýhodou oproti plateným systémom je deficit vzoro- vých, hlavne netriviálnych úloh.

Paralelné výpočty Pre paralelné výpočty na viacjadrových procesoroch alebo viacerých procesoroch je možné použiť viacero metód ako napr. systémové vo- lania @parallel alebo @fork, ktoré umožňujú paralelný beh funkcie (alebo časti programu) na viacerých jadrách alebo procesoroch. V porovnaní s vysoko-úrovňovým prostredím platených CAS pre pa- ralelné výpočty, prostredie systému SageMath kladie značne vyššie nároky na znalosti užívateľa. Modul PyCUDA (CUDA for Python) umožňuje urýchlenie výpoč- tov prostredníctvom grafických kariet s podporou CUDA (CUDA- enabled GPUs). Avšak modul PyCUDA zatiaľ funguje len ako progra- movacie rozhranie (API) jazyka Python a nie je priamo implemento- vaný v systéme SageMath.

Škála použitia Matematické oblasti použitia: Bežné, diferenciálne, rekurentné a di- ofantické rovnice, nerovnice, integrálne transformácie, diferenciálny a integrálny počet, pravdepodobnosť, teória čísel, grafov a grúp, bo- olova algebra (výrokový kalkul), lineárna algebra (práca s maticami, vektormi, tenzormi), geometria a topológia. Jeden z mála (z vybranej skupiny jediný) univerzálnych CAS s funkcionalitou v teórií kódovania. Oproti plateným systémom nepos- kytuje program pre sadzbu matematických výrazov (formula editor).

Licenčná a cenová politika Bezplatný softvér s voľne prístupným zdrojovým kódom (free, open- source software). Licenčné podmienky udáva licencia GNU General Public License version 3 [33].

48 4 Vyhodnotenie

Výsledné hodnotenie daného systému so určil ako

n ∑ ki.ai (4.1) i=1

kde ai označuje bodové hodnotenie daného systému podľa kritéria s indexom i, ki je koeficient, ktorý udáva váhu kritéria s indexom i a n je počet kritérií. Pre váhu jednotlivých kritérií som zvolil i : ki = 1. Hodnotenie systému podľa navrhnutých kritérií som∀ ohodnotil v rozmedzí 0 – 10 bodov, kde 10 bodov korešpondovalo s najlepším hodnotením. Systémy som ďalej hodnotil aj na základe správnosti a formátu riešenia, výpočtovej sily a kvality grafických ilustrácií (len v druhej úlohe) pri vzorových úlohách. Maximálny bodový zisk z jednotlivých úloh bol 30 bodov, ktoré boli rovnomerne rozdelené pre uvedené aspekty hodnotenia vzorových úloh.

Tabuľka 4.1: Bodové hodnotenie jednotlivých systémov

Kritérium Maple Mathe. MATLAB Maxima Sage. Intuitívnosť sys. 10 9 7 7 7 Sys. požiadavky 6 7 4 10 8 Dokumentácia 10 10 10 5 5 Paral. výpočty 8 7 9 0 4 Škála použitia 9 10 5 8 9 Lic. a cen. pol. 2 3 5 10 10 Úl. č.1 Riešenie 14 15 13 14 14 Výpočet 12 15 6 9 3 Úl. č.2 Riešenie 9 10 8 9 8 Grafika 5 9 10 10 1 Výpočet 10 10 5 2 8 Suma 95 105 82 84 77

49 4. Vyhodnotenie

Je potrebné zdôrazniť, že rozsah práce neumožňoval zhodnotiť všetky aspekty systémov počítačovej algebry, ako ani podrobné štú- dium na základe navrhnutých kritérií. Navyše, uvedené hodnotenie systémov v jednotlivých aspektoch je ovplyvnené mojim subjektívnym pohľadom, ako aj mojimi obme- dzenými znalosťami v oblasti. Pre dosiahnutie výsledkov alikvotných dôležitosti, ktorú konkrétny zákazník prikladá jednotlivým aspektom systému, je vhodné pozme- niť váhové koeficienty jednotlivých kritérií pri sumárnom hodnotení.

Tabuľka 4.2: Výsledné poradie systémov

Miesto Systém Body 1. Mathematica 105 2. Maple 95 3. Maxima 84 4. MATLAB 82 5. SageMath 77

4.1 Hodnotenie z vlastných skúseností

Hodnotenie vybraných systémov je doplnené o nasledujúce postrehy, ktoré vznikli ako reakcia na pozitívne alebo negatívne skúsenosti pri práci s jednotlivými systémami.

4.1.1 Hodnotenie systému Maple a) Pozitívne stránky Grafy v rovine disponujú vektorovou grafikou. ∙ Nástroj pre rotáciu zobrazených priestorových grafov podľa ∙ vybranej osi. Vkladanie matematických výrazov (limity, derivácie, sumy, ∙ integrály, ...) si nevyžaduje znalosti syntaxe jazyka.

50 4. Vyhodnotenie b) Negatívne stránky Nepriehľadné formátovanie dlhších výsledkov. Výsledok úlohy ∙ 1 a) zaberá v užívateľskom rozhraní 21 strán. Chyby pri zobrazení trojrozmerných grafov so zvoleným štý- ∙ lom pre zobrazenie povrchu a vodiacich čiar (line and sur- face style). Pri zmene veľkosti a opakovanom vykresľovaní zobrazovaných grafov v druhej úlohe sa grafy zobrazujú raz s vodiacimi čiarami, inokedy bez. Export priestorových grafov nepodporuje vektorovú grafiku. ∙

4.1.2 Hodnotenie systému Mathematica a) Pozitívne stránky Veľmi intuitívna spätná úprava dokumentu. ∙ Export do formátov bitmapovej grafiky predstavuje ilustrácie ∙ vo veľmi dobrej kvalite. Grafy v rovine disponujú vektorovou grafikou. ∙ Veľmi kvalitná a podrobná dokumentácia ku všetkým kniž- ∙ ničným funkciám. b) Negatívne stránky Pri vkladaní matematických výrazov (limity, integrály, sumy ∙ atď.) je nutné poznať syntax funkcií, ktoré daný matematický výraz reprezentujú. Export priestorových grafov nepodporuje vektorovú grafiku. ∙

4.1.3 Hodnotenie systému MATLAB a) Pozitívne stránky Rovinné, ako aj priestorové grafy plne podporujú vektorovú ∙ grafiku. b) Negatívne stránky Vyššie hardvérové nároky oproti ostatným systémom. Roz- ∙ hranie systému pri výpočte vzorových úloh viackrát nereago- valo. Úloha 2 a) bola riešená numericky. Pri danej presnosi

51 4. Vyhodnotenie

namiesto existujúcich štyroch prienikov, nám výpočet vrátil 15. Pri väčšej presnosti výpočet trval značne dlhší čas. Práca so symbolickými matematickými výrazmi je oproti ∙ ostatným systémov náročnejšia. Konkrétne pri manipulácií s analytickým riešením napr. pri transformácií súradníc u pries- torových grafov. Deficit vzorových, riešených netriviálnych úloh so symbolickými výpočtami v dokumentácii.

4.1.4 Hodnotenie systému Maxima a) Pozitívne stránky Veľmi kvalitné grafické ilustrácie. Navyše rovinné, ako aj pries- ∙ torové grafy plne podporujú vektorovú grafiku. b) Negatívne stránky Prevod analytického riešenia na množinu bodov v úlohe 2 a) ∙ pomerne komplikovaný v porovnaní s inými systémami. Chyba pri zobrazení viacerých množín bodov s kombináciou ∙ rôznych štýlov (množina navzájom izolovaných bodov, krivka atď.). Riešenie tohto problému som v dokumentácii nenašiel.

4.1.5 Hodnotenie systému SageMath a) Pozitívne stránky Široká škála modulov, knižníc a iných doplnkov (zväčša mo- ∙ duly jazyka Python), ktorými je možné systém obohatiť alebo prispôsobiť vlastným potrebám. b) Negatívne stránky Prostredie neponúka takú interaktivitu ako napr. rozhrania ∙ systémov Maple a Mathematica. Propagácia lokálnych zmien v jednej bunke si často pre závislosť vyžaduje opätovné vy- hodnotenie všetkých buniek. Chyba v nástroji pre grafickú vizualizáciu JSmol. Pri kliknutí ∙ myšou pravým tlačidlom na zobrazený graf sa ukáže kon- textové menu, avšak jeho položky nie sú prístupné, resp. sa nachádzajú mimo viditeľnej plochy.

52 5 Záver

Cieľom práce bolo oboznámiť sa so základnými princípmi súčasných matematických systémov, vybrať vhodných zástupcov spomedzi systé- mov počítačovej algebry, popísať tieto systémy, zhodnotiť a vzájomne ich porovnať na základe vhodne zvolených kritérií, navrhnúť a imple- mentovať vzorové úlohy v prostrediach vybraných systémov a doplniť hodnotenie na základe skúseností získaných pri práci s jednotlivými systémami. V prvej kapitole som popísal základné princípy súčasných mate- matických systémov. V druhej kapitole som vybral piatich zástupcov spomedzi univerzálnych systémov počítačovej algebry, na ktorých som sa v práci zameral a navrhol som spoločné kritériá pre hodnote- nie jednotlivých systémov. Súčasťou druhej kapitoly je aj špecifikácia vzorových úloh. Pri návrhu zadaní vzorových úloh som vybral dva problémy, pri riešení ktorých som demonštroval charakter jazyka a výpočtovú silu systému. V prvej úlohe som ukázal elegantné použitie systémov po- čítačovej algebry na riešenie diferenciálnych rovníc, ktorých výpočet robí často problém aj vysokoškolským študentom matematicky za- meraných odborov. V druhej úlohe som sa zameral na analytickú geometriu, aby som preveril kvality systémov pri vykresľovaní ro- vinných a priestorových grafov, ako aj možnosti exportu grafických objektov. V rámci implementácie úloh som testoval použitú pamäť a čas výpočtu pri jednotlivých príkazov zdrojového kódu, ako aj cel- kovú pamäť používanú systémom pri výpočte. Výsledkom práce je komplexné hodnotenie systémov podľa navr- hnutých kritérií. Hodnotenie je doplnené o postrehy, ktoré vznikli ako reakcia na pozitívne alebo negatívne skúsenosti pri práci s jednotli- vými systémami. Pri kritériách hodnotenia v druhej kapitole som uviedol aj ďalšie dôležité kritériá (podpora pre paralelné výpočty, vhodnosť použitých algoritmov a charakter vývoja systému), ktorými som sa vo svojej práci pre obmedzený rozsah nezaoberal. Nadväzná práca v oblasti by sa mohla zamerať práve na tieto kritéria, vypracovať ďalšie vzorové úlohy alebo doplniť moje hodnotenie o podrobnejšie a aktuálnejšie informácie.

53

Bibliografia

1. SHINGAREVA, Inna; LIZÁRRAGA-CELAYA, Carlos. Maple and math- ematica: a problem solving approach for mathematics. Wien: Springer, 2007. ISBN 978-3-211-73264-9. 2. COLLINS, G. E.; LOOS, R.; BUCHBERGER, Bruno. Computer algebra: Symbolic And Algebraic Computation. In: 2. vyd. Wien: Springer- Verlag, 1983, s. 1–9. 3. ALADJEV, Victor. Computer Algebra Systems: A System for Doing Math- ematics by Computer. Fultus Corporation, 1991. ISBN 1-59682-000-4. 4. BLAISE, Barney. Introduction to Parallel Computing [online]. Brno: Lawrence Livermore National Laboratory [cit. 2018-05-23]. Dostupné z: https: //computing.llnl.gov/tutorials/parallel_comp/#Whatis. 5. LUCKE, R. W. Building Clustered Linux Systems. 2nd ed. Prentice Hall PTR, 2005. ISBN 0-13-144853-6. 6. LYONS, Damian M. Cluster Computing For Robotics And Computer Vi- sion. 2nd ed. Singapore: World Scientific, 2011. ISBN 978-9-8128- 3635-9. 7. HECK, André. Introduction to maple. In: 3. vyd. New York: Springer, 2003, kap. 1, s. 1–29. 8. MARTINUS J. G. VELTMAN, David N. Williams. Schoonschip ’91. 1993, s. 10. 9. CZIRBUSZ, Sandor. Computer Algebra Systems: Introduction and Historical Review [online] [cit. 2018-05-23]. Dostupné z: http:// compalg.inf.elte.hu/~czirbusz/teaching/compalgsys/Introd uction.pdf. 10. D’INVERNO R. A., Frick I. Interacting with SHEEP. General Relativity and Gravitation. 1982, roč. 14, č. 10. 11. Computations in Commutative Algebra [online]. Brno: Project CoCoA [cit. 2018-05-23]. Dostupné z: http://cocoa.dima.unige.it/flyer4. html. 12. How Maple Compares to Mathematica [online]. Brno: Maplesoft [cit. 2018-05-23]. Dostupné z: https : / / www . maplesoft . com / products / maple / compare/HowMapleComparestoMathematica.pdf.

55 BIBLIOGRAFIA

13. TESCHL, Gerald. Ordinary differential equations and dynamical systems. 3rd ed. Providence, R.I: American Mathematical Society, 2012. ISBN 978-0-8218-8328-0. 14. GRIFFITHS, David J. Introduction to quantum mechanics. 2nd ed. Upper Saddle River, N.J.: Pearson Prentice Hall, 2005. ISBN 0-13-191175-9. 15. EINSTEIN, Albert. The Foundation of the General Theory of Relativity. Annalen der Physik. 1916. 16. HODGKIN A. L., Huxley A. F. A quantitative description of membrane current and its application to conduction and excitation in nerve. The Journal of Physiology. 1952, roč. 117. 17. Online Help [online]. Brno: Maplesoft [cit. 2018-05-23]. Dostupné z: https://www.maplesoft.com/support/help/index.aspx. 18. Maple 2018 System Requirements [online]. Brno: Maplesoft [cit. 2018-05-23]. Dostupné z: https :/ /www .maplesoft .com / products / system_ requirements.aspx. 19. Purchase and Pricing Details [online]. Brno: Maplesoft [cit. 2018-05-23]. Dostupné z: https://www.maplesoft.com/pricing/. 20. and System Documentation Center [online]. Brno: Wol- fram Mathematica [cit. 2018-05-23]. Dostupné z: http://reference. wolfram.com/language/. 21. System Requirements [online]. Brno: [cit. 2018-05-23]. Dostupné z: http : / / www . wolfram . com / mathematica / system - requirements.html. 22. Mathematica Pricing [online]. Brno: Wolfram Mathematica [cit. 2018-05-23]. Dostupné z: https://www.wolfram.com/mathematica/pricing/. 23. MATLAB Documentation [online]. Brno: MathWorks [cit. 2018-05-23]. Dostupné z: https://uk.mathworks.com/help/. 24. The Origins of MATLAB [online]. Brno: MathWorks [cit. 2018-05-23]. Dostupné z: https://uk.mathworks.com/company/newsletters/ articles/the-origins-of-.html. 25. System Requirements for MATLAB R2018a [online]. Brno: MathWorks [cit. 2018-05-23]. Dostupné z: https://uk.mathworks.com/suppor t/sysreq.html.

56 BIBLIOGRAFIA

26. Pricing and Licensing [online]. Brno: MathWorks [cit. 2018-05-23]. Do- stupné z: https://uk.mathworks.com/pricing-licensing.html. 27. Maxima Manual [online]. Brno: Project Maxima [cit. 2018-05-23]. Do- stupné z: http://maxima.sourceforge.net/docs/manual/maxima. pdf. 28. Downloads [online]. Brno: Project Maxima [cit. 2018-05-23]. Dostupné z: http://maxima.sourceforge.net/download.html. 29. SageMath standard documentation [online]. Brno: SageMath project [cit. 2018-05-23]. Dostupné z: http://www.sagemath.org/help.html. 30. STEIN, William. SAGE Days 4 [online]. Brno: SageMath project, 2007 [cit. 2018-05-23]. Dostupné z: https://web.archive.org/web/ 20070627235122/http://www.sagemath.org/why/stein-sd4.pdf. 31. Development [online]. Brno: SageMath project [cit. 2018-05-23]. Do- stupné z: http://www.sagemath.org/development-ack.html. 32. Supported Platforms [online]. Brno: SageMath project [cit. 2018-05-23]. Dostupné z: https://wiki.sagemath.org/SupportedPlatforms. 33. Copyright on Sage [online]. Brno: SageMath project [cit. 2018-05-23]. Do- stupné z: https://git.sagemath.org/sage.git/tree/COPYING. txt.

57

A Prílohy

Bakalárska práca obsahuje nasledujúce prílohy. Prílohy je možné nájsť v archíve informačného systému Masarykovej univerzity.

Adresár s ilustráciami grafov Obsah adresára tvorí 27 obrázkov vo formáte PDF (Portable Document Format). Obrázky sú grafickými výstupmi jednotlivých systémov pre riešenie vzorových úloh.

Adresár s kódmi implementácie Adresár obsahuje zdrojové kódy implementácie vzorových úloh vo formáte kompatibilnom s príslušným rozhraním systému. Celkom 10 súborov.

Adresár s ukážkami užívateľského rozhrania Obsahom adresára je 5 obrázkov vo formáte PDF. Obrázky sú ukáž- kou formátovania a sadzby matematických výrazov v rozhraniach jednotlivých systémov.

59