Linux E X P R E S

Facebook

Matematický software v Linuxu: Extcalc, Sage, Maxima, Octave a R

math.png

Článek stručně představuje kalkulačku Extcalc, komplexní balík Sage, počítačový algebraický systém Maxima, numerický software GNU Octave a statistické prostředí R.


Extcalc: Náhrada za kalkulačku

V distributorem předpřipraveném desktopovém prostředí obvykle nalezneme nějakou grafickou kalkulačku. V terminálu může jako jednoduchá kalkulačka sloužit aplikace Basic calculator (bc), která spadá do základního softwarového vybavení počítače. Konstatuji to proto, že jednoduchá kalkulačka patří do standardního vybavení operačního systému.

Ukázka moderní grafické programovatelné kalkulačky Ukázka moderní grafické programovatelné kalkulačky

Pro odborníky existují pokročilé grafické programovatelné kalkulačky. V poslední době tato zařízení skomírají na úbytě, neboť jejich funkci mohou suplovat např. netbooky. Náhrad za vědeckou kalkulačku existuje celá řada. V této kategorii jmenujme například Extcalc, který vedle funkcí běžné kalkulačky zvládá i grafy, triviální statistiku, převody jednotek, aritmetiku matic...

Extcalc Extcalc

Formální jazyky pokročilých systémů

Ne vše lze snadno naklikat, proto každý pokročilejší matematický program má vestavěny určité formální jazyky. Typicky uživatel zadává textové příkazy nebo píše skripty, přičemž mu může značně pomoci doprovodné grafické rozhraní.

Například Maximu (viz dále) doprovází rozhraní wxMaxima. Grafické ukázky předvádějí nejprve zadání symetrické matice ve wxMaximě a v druhém kroku spočítání jejího determinantu. Očividně jsem se vyhnul přímému zadávání textových příkazů.

Nástroj pro vkládání symetrické matice Nástroj pro vkládání symetrické matice

Naklikání výpočtu determinantu Naklikání výpočtu determinantu

Při běžné práci v matematickém softwaru se uplatňují především specializované jednoúčelové jazyky. K zapisování zadání úloh slouží jednoduché formulace, které staví na několika výstižných klíčových slovech. Například klíčové slovo solve (v angličtině imperativ řeš) indikuje, že aplikace má cosi vyřešit. Popsanou činnost nelze označit za programování. Obava, že zájemce o profesionální matematický software se musí stát i programátorem, je lichá.

Při programování matematiky se uplatňují i méně známé programátorské jazyky. Následující výčet zmiňuje nejpopulárnější programovací jazyky pro matematiku a jednotlivá programátorská paradigmata.

  • Při imperativním stylu programování zdrojový kód přesně vymezuje postup provádění výpočtu. Nejpoužívanějším jazykem z této kategorie je pravděpodobně vedle C/C++ např. Fortran, na němž se často staví knihovny pro numerické výpočty.

  • Funkcionální programování tkví ve vytváření funkcí. Při běhu programu se určuje hodnota funkce, přičemž výpočet spočívá v postupném zjednodušování výrazu až do tvaru výsledku. Oproti jiným odvětvím je v matematice funkcionální programování relativně populární. Jmenujme například populární jazyky Lisp a Schema.

  • Při logickém programování programátor pouze v přesně stanoveném tvaru zapíše požadavky, které klade na výsledek. Běh výsledného programu záleží ve vyhledávání ohodnocení proměnných, jež splňuje všechny zadané vazby. Navzdory tomu, že logické programování stojí na okraji zájmu běžných programátorů, v určitých oborech blízkých matematice (např. robotika, expertní systémy) hraje důležitou roli. Ústřední reprezentant této kategorie je programovací jazyk Prolog.

  • Multiparadigmatické programovací jazyky dostatečně podporují různá paradigmata, aby programátorovi byla ponechána možnost kombinovat různé styly programování. Ve světě vědeckého softwaru září hvězda multiparadigmatického programovacího jazyku Python.

Sage: Komplexní matematický systém

Autoři Sage se pragmaticky vystříhali znovuobjevování kola. Vývojáři vytipovali přibližně stovku nejlepších open-source matematických projektů, které vzali jako „motor“ programu Sage. Tak se vyhnuli mnoha vícepracem a mohli se plně soustředit na vytvoření jednotného uživatelského rozhraní, systému ukládání, sepsání nápovědy... Ve výsledku se Sage jeví nejen jako volný agregát vzájemně nekooperujících částí. Sage mimo jiné obsahuje GNU Octave, PARI/GP, ATLAS, Scilab, Maximu, SymPy, LAPACK, Matplotlib a další. K systémové integraci byl vybrán oblíbený jazyk Python.

Dílčí projekty zahrnuté v Sage vynikají převážně v jedné konkrétní oblasti; Sage je překonává ve všestrannosti, přičemž je velmi silný v mnoha oborech. Uživatel proto není nucen kombinovat více specializovaných produktů a vystačí si jen se Sage.

Titul Sage je vedle svého strojového zdrojového kódu dostupný i následujícími způsoby:

  • Pro některé linuxové distribuce, OS X a Solaris jsou k dispozici zkompilované binární balíčky.

  • Připravená linuxová Live CD distribuce přináší kompletní instalaci Sage.

  • Sage běží na některých serverech (např. sagenb.org) a skrze webové rozhraní v něm lze pracovat. Samozřejmě jsou proti nadužívání zavedeny restrikce, které limitují dostupný strojový výkon a paměť.

Zatím Sage nezískalo odpovídající popularitu, což může mít tyto příčiny:

  • Jde o poměrně mladý dynamický projekt, který vznikl až v roce 2005. Současná produktivní generace odborníků si během svých školských let osvojila starší software. Jinými slovy Sage vstupuje na již rozvinutý trh.

  • Sage je zdarma, a proto mu chybí masivní reklama.

  • Sage není dostupný pro Microsoft Windows.

Maxima: systém počítačové algebry

Kořeny Maximy sahají až do roku 1968, kdy byla na trh uvedena Macsyma. V roce 1982 se z Macsymy odštěpila Maxima. V roce 1998 bylo provedeno přelicencování z původní nesvobodné licence na obvyklou GNU GPL. Maxima spadá mezi systémy počítačové algebry (CAS). Systémy CAS mají zabudované axiomy a inferenční algoritmy a díky tomu dokážou symbolicky manipulovat s výrazy. Jinými slovy CAS aplikace zvládají například určit limitu, určit asymptoty, derivovat, kanonizovat výraz do požadované normalizované formy, rozvinout funkci do Taylorovy řady... Maxima pochopitelně umí i numerické výpočty, avšak nejedná se o její doménu. WxMaxima je oblíbenou grafickou nadstavbou textově orientované Maximy.

Grafické rozhraní wxMaxima Grafické rozhraní wxMaxima

Podrobnější informace o Maximě uvádí náš článek Maxima a Zhu3D – matematika v Linuxu.

Octave: numerický software

Oproti CAS systémům se numerické systémy věnují především číselným výpočtům. GNU Octave je vysokoúrovňový imperativní programovací jazyk (respektive interpret tohoto jazyka) orientovaný na numerické výpočty. Samozřejmě oproti běžným jazykům se v Octave nachází mnoho vylepšení vycházejících z praktických potřeb. Například Octave disponuje algoritmy optimalizovanými pro řídké matice. Jazyk Octave lze volat i z jiných programovacích jazyků. Například v C/C++ symboly Octave definuje hlavičkový soubor octave/oct.h.

Vedle GNU Octave proslul i další svobodný systém Scilab. Následuje stručné srovnání:

O GNU Octave a Scilabu pojednávají články Matematické modelování s Octave a QtOctave a Scilab: Numerické výpočty, grafy – zkrátka matematika.

Zmínka o Mathematice, Maplu a Matlabu

K představeným svobodným aplikacím existují i placené nesvobodné alternativy, jak uvádí tabulka.

Sage

Mathematica

Maxima

Maple

Octave, Scilab

Matlab

Rozsah funkcí u každého z těchto programů dosahuje kolosálních rozměrů. Pro ilustraci, kdyby na každý balík v Sage připadalo v průměru pouhých deset vlastností, pak by Sage jako celek bylo charakterizováno přibližně tisícem vlastností. Nad to je třeba zohlednit například i frekvenci bugů v algoritmech, rychlost opravování chyb, hardwarové nároky, kvalitu nápovědy a dokumentace... Každý z produktů více než uspokojuje běžné požadavky. V „nadstandardu“ se pochopitelně střetáváme s odlišnostmi. Jeden uživatel může tvrdit, že Sage překonává Mathematicu. Druhý, žádaje jiných vlastností, vyzdvihuje Mathematicu nad Sage. Srovnání svobodných aplikací s jejich placenými protějšky na omezeném prostoru popularizačního článku by nutně bylo povrchní a ledabylé.

Zásadní nevýhodu placený produktů představuje jejich cena, kterou rozhodně nelze vydávat za lidovou. Náklady na pořízení licence se pohybují v násobcích průměrného měsíčního příjmu v České republice.

 

Cena v USD

Cena v Kč

Sage

0

0

Mathematica

2495

cca 50 000

Maxima

0

0

Maple

2275

cca 45 000

Octave, Scilab

0

0

Matlab

2150

cca 40 000

(Zdroj: Wikipedia, Kurz Kč/USD je přibližně 20)

Někteří jistě budou namítat výrazně zlevněné licence pro studenty, slevy u distributorů při velkých objednávkách, doprovodné nástroje zdarma, zlevněné neplnohodnotné licence... Marketingová oddělení skutečně úkladně zvýhodňují vybrané skupiny obyvatel, aby popularizovala své výrobky a maximalizovala svůj celkový finanční prospěch. Z demokratického hlediska jsou tyto akční nabídky podružné, protože k nim většinová populace nemá přístup. Pro běžně situovaného občana zůstává kombinace Mathematica, Maple a Matlab jen stěží finančně dostupná. Pro tuto vadu a s přihlédnutím k bezplatné konkurenci lze jen sotva zmíněné placené tituly doporučit.

R: statistický software

Systém R je jazyk určený pro manipulaci, zpracování a zobrazení statistických dat. Původně se inspiroval starším placeným systémem S, který však brzy zastínil. V současnosti se R stalo téměř průmyslovým standardem. K R existuje větší množství různě orientovaných grafických rozhraní (R Commander, Rattle, RKWard, Java GUI for R...).

Úvodem do světa R může být grafický manuál. Návody se člení do třiceti tematických skupin, z nichž každá obsahuje několik set až několik tisíc příkladů. V ilustračním snímku webových stránek jsou vybírány jen příklady určené pro genetiky. Ze všech nalezených 525 úloh se zobrazuje jen prvních šestnáct.

Grafický manuál R Grafický manuál R

Na vlastní R navazují nejrůznější různě zaměřená rozšíření, která z něj dělají všestranné řešení pro statistiku. Vedle „univerzálního“ R pochopitelně vznikly svobodné produkty pro statistiku, které se soustředí na konkrétní nasazení. Jmenujme například:

Více o systému R se dočtete v článku Matematický software R: S ním je každá statistika hezčí.

V dalším díle přehledu se můžete těšit na programy gnuplot, LaTeX, OpenFoam, QtiPlot.

Diskuze (3) Nahoru