V rýchlo sa vyvíjajúcom svete výpočtovej techniky a programového vybavenia majú od počiatku nezastupiteľné miesto programy pre numerické výpočty. Spočiatku bola podpora užívateľov realizovaná matematickými knižnicami pre obecné programovacie jazyky, neskôr sa vyvíjali samostatné programy, ktoré je možné rozdeliť do nasledujúcich oblastí:
tabuľkové procesory s rozšírenými matematickými funkciami (Excel ...)
špecializované balíky na riešenie určitého okruhu problémov (Statistica ...)
univerzálne matematické balíky (MathCad, Mathematica, MATLAB ...)
Tento materiál sa venuje práve FreeMat-u, ako jednému zo silných nástrojov pre technicky zamerané odbory, ktorý je s MATLAB kompatibilný na cca 95%.
1. Čo je FreeMat?
FreeMat je výkonný a pritom malý softvér integrujúci výpočty, vizualizáciu a programovanie do jednoducho použiteľného prostredia. Názov FreeMat vznikol z anglického „free mathematics“. Umožňuje relatívne ľahké riešenie mnohých technických problémov v omnoho kratšom čase ako riešenie pomocou klasických programovacích jazykov.
Typické oblasti použitia FreeMat-u:
inžinierske výpočty
vývoj algoritmov
modelovanie, simulácia a vývoj
analýza dát a ich vizualizácia
inžinierska grafika
Je to interaktívny systém rýchleho výpočtu, ktorého základným dátovým typom je dvojrozmerné pole:
zadávanie funkcií z klávesnice
grafické zobrazenie výstupov a ich jednoduchá úprava
Umožňuje vytvárať programy pre vlastnú potrebu
použitie programovacieho jazyka FreeMat-u (a teda MATLAB-u)
programové využitie grafiky
analýza algoritmov , prístup „what - if“
tieto programy ďalej voľne šíriť
výhodou je import knižníc z jazyka C, C++, Python. Napríklad príkazom: >import('F:\WINDOWS\system32\msvcrt.dll','printf',
'printf','int','string t,int a') >printf("%d\n",3) 3
Účinný nástroj pre technické výpočty - jednotné výpočtové, vizualizačné a simulačné prostredie je implementované na viacerých platformách (Microsoft Windows, Linux, MAC OS X, …)
Práca s knižnicami v rôznych aplikačných oblastiach:
rôzne vedné obory (medicína...)
obory s rozsiahlymi technickými výpočtami
regulačné systémy, výrobné linky, robotika
simulácia dynamických systémov a ďalšie
Jednoduchá syntax používaných matematických a grafických funkcií:
>>x=[0:0.1:2*pi];
>>plot(x,sin(x),'r*-');
>>grid
Obr.2 – Výsledok vyššie uvedených troch riadkov príkazov
Funkcie sú použiteľné z príkazového riadku, sekvenčne zadávané funkcie je možné spustiť ako dávkový skript.
Rozsiahle funkčné možnosti FreeMat:
zabudované funkcie FreeMat-u, funkcie v M-súboroch (teda kompatibilita s MATLAB), možnosť ich úpravy používateľom
ponúka viacej než 400 matematických funkcií:
operácie s maticami - lineárna algebra
goniometrické a logaritmické funkcie
výpočet vlastných čísel a vektorov, polynómy a práca s nimi
interpolácia, regresia, základná štatistika, pravdepodobnosť
Fourierove transformácie
integrácie a derivácie
transformácie súradníc a ďalšie
Obr.3 – Pracovné prostredie FreeMat-u
Obr.4 – Online nápoveda pre FreeMat
grafické funkcie
funkcie pre kreslenie 2D a 3D grafov
funkcie pre vykresľovanie povrchov a sietí
práca s rastrovými obrazmi, tieňovanie
zápis do súboru
práca so zvukovými súbormi - zápis, čítanie a spracovanie
špeciálne dátové typy
funkcie pre zápis a čítanie dát zo súborov (textové, binárne)
čítanie a zápis rastrových súborov
importuje dáta z bežných formátov
dovoľuje používateľovi zadať formát dát
Interaktívna aproximácia a štatistika:
prístup z grafického okna (figure)
prekladanie graficky zobrazených bodov
základné aproximácie krivkami umožňuje zvoliť metódu aproximácie polynómom, splinom, ...; okamžite zobrazuje aproximovaný priebeh voliteľne tiež rovnicu aproximačnej krivky a chybu aproximácie
základná štatistika
priemer, medián, …
okamžite zobrazuje do grafu
Grafické možnosti:
Obr.5 – Priestorový graf
možnosti grafického zobrazenia nie sú až tak prepracované ako v MATLAB-e, ale určite sú postačujúce.
väčšina príkazov pre úpravu grafického zobrazenia sa nezadáva pomocou interaktívneho okna možností, ale príkazmi v príkazovom okne alebo skripte, čo má za priaznivý následok získanie správnych programovacích návykov.
Možnosti pri programovaní:
vytváranie používateľských funkcií
editor pre prácu so zdrojovými kódmi (nástroj pre ladenie kódu)
objektové programovanie (konštruktor a metódy objektov)
vytváranie voľne šíriteľných aplikácií
Obr.6 – Zobrazenie výpisu zdrojového kódu
1.1. Kedy FreeMat použiť?
robustné výpočty
spracovávanie rozsiahlych
dátových súborov
práca s veľkými maticami
keď riešenie problému sa dá previesť na vektorové či maticové operácie
v prípadoch rozvetvených prípadne iteračných algoritmov riešenia
S FreeMat-om je možné samostatne pracovať a riešiť jednoduchšie príklady. Na Leteckej Fakulte TUKE sa začal využívať ako náhrada MATLAB-u, študenti sa oboznamujú s pracovným prostredím, základmi programovania a získavajú prvé programovacie návyky, ktoré neskôr využívajú pri programovaní platformy Arduino, Xduino, tvorbe aplikácií v senzorickej oblasti v jazyku Python.
1.2. Čo za nás FreeMat nevyrieši?
FreeMat je iba nástroj, síce výkonný a efektívny ale je to iba prostriedok k dosiahnutiu cieľa. Musím nezávisle na použitom prostriedku vedieť:
Čo chcem?
- mať jasnú a jednoznačnú formuláciu problému
Ako to dosiahnuť?
- vedieť (principiálne) ako sa daný problém rieši
Ako overiť výsledok?
- schopnosť odhadnúť, či je výsledok správny
Tieto tri body za nás žiaden výpočtový systém nevyrieši. Môže ale výrazným spôsobom ovplyvniť efektivitu a rýchlosť riešenia. Výkonnosť a efektivita týchto nástrojov sa ocení až pri riešení zložitejších a rozsiahlejších problémov.