Porovnanie Súčasných Systémov Počítačovej Algebry
Total Page:16
File Type:pdf, Size:1020Kb
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 Maple, Mathematica, MATLAB, Maxima 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 (computer algebra system, 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 SINGULAR (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, Xcas/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