1 Úvod do používání MATLABu Studijní cíl Obsahem prvního bloku je seznámení s náplní předmětu a přehled software pro numerické výpočty. Dále jsou uvedeny základní informace o programu MATLAB – k čemu je určen, historie vzniku, jaké má součásti, aktuální verze a požadavky na instalaci. Následuje vlastní úvod do používání MATLABu – princip práce a základní datový typ, prostředí, systém nápovědy a příkazy.
Doba nutná k nastudování
1 ‐ 2 hodiny
Průvodce studiem V kapitole 1.1 se seznámíme s pojmy modelování a model. Jako příklad je uká‐ zán matematický model rychlovarné konvice. Kapitola 1.2 uvádí stručný pře‐ hled některých programů pro numerické výpočty. Kapitola 1.3 obsahuje všeo‐ becné informace o programu MATLAB a poslední kapitola 1.4 je věnována zá‐ kladům práce s MATLABem. V tomto bloku nejsou příklady na procvičení V textu jsou použity následující typografické konvence: Calibri 11, Bold, Italic nové pojmy k zapamatování Calibri 11 označení klávesy Courier New 10, Bold názvy nástrojů MATLABu Courier New 10, Bold upřesnění nápovědy (help téma) Courier New 10 názvy příkazů, funkcí a objektů Courier New 9 ukázka příkazů příkazové řádky
1.1 Náplň předmětu V poněkud komplikovaném názvu předmětu „Modelování ve výpočetních software“ je dominantní slovo modelování. Modelování je činnost související s tvorbou modelu tj. „něčeho“ čím nahrazujeme část reality (originál, reálný systém 1 ), jehož vlastnosti chceme zkoumat. Model musí mít stejné nebo po‐ dobné chování v oblasti, která nás zajímá a musí se s ním jednodušeji pracovat než s reálným systémem. Model tedy obsahuje pouze vybrané informace o originále. Výběr informací je určen především účelem, ke kterému budeme model používat a samozřejmě úrovní znalostí originálu. Důvody pro tvorbu modelu mohou být ekonomické, ekologické, bezpečnostní nebo důvodem mů‐ že být to, že umožňuje s informacemi o reálném systému uloženými ve formě modelu dále pracovat. Vyšetřování vlastností originálu prostřednictvím modelu se označuje jako simulace.
1
Pojmem systém se označuje jednoznačně ohraničená část reality s určením vstupních vlivů (vstupních veličin), kterými působí okolí na systém a výstupních vlivů (výstupních veličin), který‐ mi systém působí na okolí. Při vymezení systému obvykle dochází ke zjednodušení, tj. málo významné vlivy se zanedbávají.
KŘP/IMSW Modelování ve výpočtových software
1‐1 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Model může být reálný fyzikální model, reálný analogický model nebo abs‐ traktní matematický model. Příkladem reálného fyzikálního modelu může být zmenšený sádrový model auta používaný pro zjištění aerodynamických vlast‐ ností karosérie. Jiným příkladem jsou figuríny používané při automobilových nárazových (crash) testech. Figurína je modelem 2 člověka, který z originálu zahrnuje pouze některé vlastnosti – rozložení hmotnosti, umístění a pohybli‐ vost kloubů. Na tomto příkladě je dobře vidět, že model nemusí odpovídat originálu do všech detailů, stačí shodné či podobné vlastnosti (chování) důleži‐ té z hlediska použití modelu.
Dříve používané elektrické a pneumatické analogové počítače jsou příkladem reálných analogických modelů. Používaly se zejména k řešení (určení časového průběhu vybraných veličin) reálných systémů, jejichž chování lze nahradit za‐ pojením částí s typickým chováním (kapacita, odpor, nelinearita atd.). Model vznikne zapojením standardních bloků (integrátor, sumátor, násobička, funkční blok atd.) analogového počítače. Podobně jako u předchozího typu modelů se sledují (měří) hodnoty fyzikálních veličin ale jiných než na originálu. Nové fyzi‐ kální veličiny (napětí, tlak) mají analogický 3 průběh jako odpovídající veličiny originálu. Poslední typ modelů – abstraktní matematické modely – jsou modely, ve kte‐ rých je informace o chování originálu uložena ve formě matematických výrazů popisujících vztah mezi veličinami modelu. Obecnou formou matematického modelu pro případ spojitých systémů je soustava nelineárních parciálních rov‐ nic. Matematický model ve spojení s výkonnou výpočetní technikou umožňující výpočet modelu v reálném čase může usnadňovat i zkoušky reálných zařízení. Příkladem může být vývoj a testování reálné řídicí jednotky spalovacího moto‐ ru, kde chování motoru je nahrazeno jeho matematickým modelem. Vstupem do řídicí jednotky jsou elektrické signály od čidel otáček motoru, teploty oleje a nasávaného vzduchu, polohy plynového pedálu atd. Výstupem jsou elektrické signály nastavující čas vstřiku paliva, zapalování atd. Vstupní a výstupní elek‐ trické signály jsou připojeny na počítač simulující chování motoru. Počítač je vybaven A/D převodníkem pro převod elektrických signálů do číslicové podoby a D/A převodníkem pro převod čísla na elektrický signál. V počítači probíhá řešení matematického model (výpočet časových průběhů výstupních veličin v závislosti na časovém průběhu vstupních veličin) v reálném čase včetně mož‐ nosti měnit další parametry (zatížení, poloha plynového pedálu, okolní teplota atd.) a zobrazovat a ukládat aktuální hodnoty. Vstupní veličiny modelu jsou dány aktuálními hodnotami měřených výstupních elektrických signálů řídicí jednotky a aktuální vypočítané hodnoty výstupních veličin jsou převedeny na odpovídající hodnoty elektrických signálů přivedených do řídicí jednotky. Tako‐ 2
Je zřejmé, že bez náhrady reálného systému (člověka) modelem (figurínou) je tento typ zkou‐ šek prakticky nereálný.
3
Pojem analogický označuje, že existuje vzájemně jednoznačná transformace mezi hodnotami odpovídajících veličin originálu a modelu. Kromě transformace mezi hodnotami veličin byla možná i transformace časová tj. změna časového měřítka (časové průběhy veličin modelu byly pomalejší/rychlejší než časové průběhy veličin originálu).
KŘP/IMSW Modelování ve výpočtových software
1‐2 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
výto simulační systém dovoluje ověřit chování řídicí jednotky i v kritických situ‐ acích, které by vedly na zničení reálného motoru. Základní úlohou, pro kterou jsou modely používány, je určení časového průbě‐ hu výstupních veličin jako funkcí časového průběhu vstupních veličin. V případě matematického modelu řešení může být analytické (tj. ve formě vzorců, je možné získat jen výjimečně ve speciálních případech) či numerické (tabulka hodnot čas a odpovídající hodnota příslušné veličiny, lze získat vždy). Na nume‐ rické řešení soustav diferenciálních a algebraických rovnic jsou určeny progra‐ my pro numerické výpočty zahrnující knihovny pro řešení standardních úloh a prostředky pro řízení výpočtu a vizualizaci výsledků. Je potřeba rozlišovat mezi numerickým výpočtem a simulací. Simulace doplňu‐ je numerický výpočet tak aby výsledné chování odpovídalo originálu. Obvykle jde o situace, kdy je potřeba změnit výpočet. Příkladem může být simulace průběhu výšky hladiny v nádrži s odtokem v závislosti na přítoku. Při dostateč‐ ném přítoku bude stále hladina stoupat, ačkoliv nádoba začne přetékat. Jiným příkladem může být simulace polohy skleněné kuličky puštěné z určité výšky na kamennou podlahu. Prostý výpočet pohybové rovnice tělesa v gravitačním poli vede na neustálý pohyb ve směru gravitačního zrychlení. Simulace znamená tento výpočet (stále stejné rovnice) doplnit o změnu počátečních podmínek v okamžiku nulové výšky.
1.1.1 Příklad zjednodušeného modelu rychlovarné konvice Pro ilustraci pojmů matematické modelování a matematický model je uveden příklad modelu rychlovarné konvice sestavený na základě matematicko‐ fyzikální analýzy. Model popisuje teplotu vody T (°C) v rychlovarné konvici (viz ‐1 Obrázek 1‐1) v závislosti na příkonu E (Js ), okolní teplotě To (°C) a počátečních podmínkách tj. T(t)=fce[E(t),To(t), T(0)]. Při tvorbě modelu se předpokládá do‐ konalé míchání 4 vody v konvici a je zanedbán vliv malých tepel‐ ných kapacit. Jsou uvažovány pouze některé 5 parametry reálné‐ ho systému uvedené v Tabulce 1‐1. Další veličiny (teplota vzduchu nad vodou T1, teplota stěny T2, teplota topné desky T3, teplota izolace topné desky T4 a teplota podstavce T5) a parametry – T0 tepelné kapacity (vzduch nad kapalinou, stěna konvice, topná T deska, izolace topné desky, podstavce) a koeficienty přestupů tepla mezi odpovídajícími kapacitami nejsou uvažovány. Model vychází z tepelné bilance (zákona zachování energie) a platí pouze v rozsahu teplot vody od teploty tání do teploty varu. Za výše uvedených předpokladů je model tvořen jednou obyčejnou diferenciální rovnicí prvního řádu ve tvaru
E(t ) = α .S .[T(t ) − To (t )] + m.c.
d T(t ) dt
T1 T2 T3 T4 T5
E Obrázek 1‐1 Schéma rychlovarné konvice
4
To znamená, že v každém časovém okamžiku je teplota stejná v každém místě objemu konvice.
5
Tj. parametry, které mají největší vliv na výsledné chování
KŘP/IMSW Modelování ve výpočtových software
1‐3 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Tabulka 1‐1 Parametry modelu rychlovarné konvice Symbol α S m c
Rozměr J.s-1.m-2.K-1 m2 kg J.kg-1.K-1
Hodnota 20 0.2513 1 4180
Význam koeficient přestupu tepla (voda okolí) přestupní plocha (voda okolí) hmotnost vody v konvici měrná tepelná kapacita vody
Řešení modelu (průběh teploty T) za podmínek, že okolní teplota To =20 °C je konstantní, počáteční teplota vody je stejná jako okolní teplota a konvice o příkonu 2 kW je zapnuta po dobu 150 s je graficky znázorněno na Obrázku 1‐2.
Obrázek 1‐2 Průběh vstupu a výstupu modelu
1.2 Přehled SW pro numerické výpočty Numerické výpočty byly jedním z hlavních úkolů počítačů od samotného vzni‐ ku. Zpočátku bylo nutné kompletní řešení napsat vlastními silami v progra‐ movacím jazyce dostupném pro daný počítač (obvykle Assembler). Postupně vznikly programovací jazyky specializované na výpočty. Jako první jazyk navr‐ žený speciálně pro vědeckotechnické výpočty se uvádí FORTRAN (zkratka z FORmula TRANslation), který je používán od roku 1956. Existence počítačově nezávislého programovacího jazyka umožnila vznik matematických knihoven, obsahujících funkce na numerická řešení standardních matematických úloh. Tyto knihovny významně usnadnily tvorbu vlastních programů. Další etapa začala, když se objevily hotové programy umožňující zápis úlohy, její řešení a prohlížení výsledků bez nutnosti psát vlastní program. Mezi tyto programy lze zařadit i tabulkové procesory VisiCalc (1979, Aple II), Lotus 1‐2‐3 (1983, MS DOS), Quattro (1988, MS DOS) a Excel (1985 Macintosh, 1987 MS Windows, 1992 MS DOS). Použití tabulkových procesorů pro numerické vý‐ počty je omezené nicméně lze v nich lze řešit i poměrně komplikované úlohy 6 . Dále existují programy určené speciálně pro numerické výpočty, které se někdy označují také jako CAS (Computer Algebra System). Některé jsou určeny pro 6
Např. v Excelu lze řešit úlohu optimalizace s více proměnnými za existence omezení včetně omezení na obor celých čísel
KŘP/IMSW Modelování ve výpočtových software
1‐4 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
obecné použití, jiné jsou již zaměřeny na určitou oblast. Mezi programy pro všeobecné použití uveďme jako zajímavost program Famulus (pro MS DOS) vyvíjený českou firmou FAMULUS Etx., s.r.o. (vývoj ukončen cca 1997), který se v 90. letech používal ve školách. Jako další profesionální programy všeobecné‐ ho použití je možné uvést Mathcad (původně MathSoft, od 2007 PTC, www.mathsoft.com), značně rozšířený program Mathematica 7 (1987 Wolfram Research, Inc., www.wolfram.com) a MAPLE (od 1988 Waterloo Maple, Inc. www.maplesoft.com). Z nekomerčních (GNU) produktů uveďme program Ma‐ xima 8 (1982, http://maxima.sourceforge.net) pro platformu Linux. Společným rysem těchto programů je, že přímo podporují symbolické výpočty.
Jako příklad programů pro numerické výpočty specializovaných na určitou ob‐ last – statistické výpočty (analýza dat) – uveďme program QC Expert (původně AdStat) vyvíjený pardubickou firmou TriloByte, s.r.o. od roku 1990 (www.trilobyte.cz) a program StatGraphics (StatPoint, Inc., od 2005 Manugis‐ tics, Inc., www.statgraphics.com). V dalším se budeme zabývat pouze programem pro numerické výpočty MATLAB 9 (1984, The MathWorks, Inc., www.mathworks.com). Podobné MATLABu jsou volně dostupné programy Scilab 10 (www.sclilab.org) nebo GNU Octave 11 (1994, http://www.gnu.org/software/octave/) 7
(Wikipedie) Mathematica je počítačový program široce používaný ve vědeckých, technických a matematických kruzích. Program byl původně vytvořen Stephenem Wolframem a následně vyvíjen týmem matematiků a programátorů, který vytvořil a vede. Mathematica je rozdělena do dvou částí – jádra a front endu. Jádro interpretuje výrazy a vrací výsledky. Front end poskytuje GUI, ve kterém výsledky vhodně zobrazuje.
8
(Wikipedie) Maxima je svobodný počítačový algebraický systém, napsaný v Lispu (resp. jeho dialektu Common Lisp) a distribuovaný pod GNU General Public License. Je dostupný pro všech‐ ny platformy standardu Posix, jakými jsou Unix, BSD nebo Linux; dostupné jsou také binární soubory pro MS Windows. wxMaxima je multiplatformní verzí s grafickým uživatelským rozhra‐ ním, založenou na wxWidgets. Maxima vychází z projektu Macsyma, jenž byl vyvíjen v MIT (Massachusetts Institute of Technology) a financován United States Department of Energy a dalšími vládními organizacemi.
9
(Wikipedie) MATLAB je interaktivní programové prostředí a skriptovací programovací jazyk čtvrté generace. Program MATLAB je vyvíjen společností MathWorks a a je k dispozici pro ope‐ rační systémy Linux (32‐bit, 64‐bit), Windows (32‐bit, 64‐bit), Mac OS X (64‐bit). MATLAB umož‐ ňuje počítání s maticemi, vykreslování 2D i 3D grafů funkcí, implementaci algoritmů, počítačovou simulaci, analýzu a prezentaci dat i vytváření aplikací včetně uživatelského rozhraní. Půdně byl jazyk určen pro matematické účely, ale časem byl upraven, byly přidány nové funkce a rozšíření, rozrostl se různými směry a dnes je využitelný v široké paletě aplikací. V roce 2004 měl MATLAB přes milión uživatelů a to především z řad vědeckotechnických pracovníků, studentů a zaměst‐ nanců vysokých škol. MATLAB je využíván pro vědecké a výzkumné účely a to jak v soukromém sektoru, tak i v akademických řadách. Hlavní oblastí využití jsou technické obory a ekonomie.
10
(Wikipedie) Scilab je volně šiřitelný program pro numerické výpočty podobný systému MATLAB. Program byl vytvořen francouzskými vědeckými institucemi INRIA a ENPC. Jeho licence umožňuje bezplatné používání, ale nesplňuje podmínky Open Source Initiative ani Free Software Foundation. Program umožňuje provádět jak jednoduchou aritmetiku (násobení čísel), tak ná‐ ročné výpočty. Scilab je například používán pro statistické analýzy, zpracování obrazu, simulace fyzikálních a chemických jevů.
11
(Wikipedie) Octave je svobodný software pro provádění číselných výpočtů šířený pod licencí GPL. Octave je do určité míry kompatibilní s programem MATLAB. Octave obsahuje rozsáhlý
KŘP/IMSW Modelování ve výpočtových software
1‐5 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
1.3 Co je to MATLAB Citováno ze stránek fy Humusoft Praha, s.r.o., výhradního zástupce fy Ma‐ thWorks, Inc. pro Českou republiku a Slovensko „MATLAB je integrované pro‐ středí pro vědeckotechnické výpočty, modelování, návrhy algoritmů, simulace, analýzu a prezentaci dat, paralelní výpočty, měření a zpracování signálů, ná‐ vrhy řídicích a komunikačních systémů. MATLAB je nástroj jak pro pohodlnou interaktivní práci, tak pro vývoj širokého spektra aplikací“. Co to tedy je MATLAB ? Slovy firemní literatury "MATLAB je vysoce výkonný jazyk pro technické výpočty. Integruje výpočty, vizualizaci a programování do jednoduše použitelného prostředí, kde problémy i řešení jsou vyjádřeny v přiro‐ zeném tvaru". Jde o interaktivní systém, jehož základním datovým typem je matice (orientované dvourozměrné pole bez nutnosti deklarovat rozměry). Tato vlastnost spolu s množstvím zabudovaných funkcí umožňuje relativně snadný zápis a řešení mnoha technických problémů, speciálně takových, které vedou na vektorovou či maticovou formulaci, v mnohem kratším čase než ře‐ šení v klasických jazycích jako je "C/C++" nebo FORTRAN. Typické oblasti použi‐ tí jsou: • inženýrské výpočty • vývoj algoritmů • modelování, simulace a vývoj prototypů • analýza dat a jejich vizualizace • inženýrská grafika • vývoj aplikací včetně tvorby grafického uživatelského rozhraní V univerzitním prostředí jde o standardní nástroj využívaný zejména ve výuce matematiky a inženýrských oborech. V průmyslu je využíván jako vysoce efek‐ tivní nástroj pro výzkum, vývoj i analýzu dat. O jeho využití svědčí velké množ‐ ství publikací z různých oborů, které MATLAB při řešení problémů používají a řešení ve formě m‐funkcí v knize nejen uvádějí, ale ve formě souborů buď na doprovodné disketě (CD) nebo na některém FTP serveru také nabízejí. Možnosti MATLABu mohou být rozšířeny pomocí problémově orientovaných knihoven nazývaných toolboxy. Tyto toolboxy využívají funkce jádra MATLABu a rozšiřují je o další funkce užitečné v oblasti, pro kterou je daný toolbox určen – např. pro oblast zpracování obrazu je určen Image Processing Tbx, rozšíření o symbolické výpočty zajišťuje Symbolic Tbx 12 . Dále existuje nadstavba MATLABu – SIMULINK, který určen pro simulaci a mo‐ delování dynamických systémů. Využívá algoritmy MATLABu pro numerické řešení nelineárních diferenciálních rovnic. Poskytuje uživateli možnost rychle a soubor nástrojů pro numerické řešení problémů lineární algebry, hledání řešení nelineárních rovnic, integrování funkcí, práci s polynomy a integrování diferenciálních rovnic. Základní struk‐ tura v Octave je matice, jsou podporovány i řídké matice. Pro zobrazování výsledků používá Octave program Gnuplot. 12 Původně (do verze MATLABu R2007b) byl založen na výpočetním jádře programu MAPLE (MAPLE engine). Novější verze využívají MuPAD engine (Multiprocessing Algrebraic Data Tool), další z aplikací pro symbolické výpočty (SciFace Software GmbH & Co. KG, www.sciface.com).
KŘP/IMSW Modelování ve výpočtových software
1‐6 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
snadno vytvářet modely dynamických soustav ve formě blokových schémat a rovnic. Rozšiřující knihovny k SIMULNKu se označují jako blocksety.
Základem MATLABu je rychlé a výkonné výpočetní jádro optimalizované na maticové operace využívající matematické knihovny s podporou vícejádrových procesorů. Grafické jádro postavené na standardu OpenGL zajišťuje rychlé vykreslování 2D a 3D grafů s maximálním využitím možností grafické karty. Samozřejmostí je bohatá podpora různých datových, zvukových, obrazových i video formátů. MATLAB je také plně objektový programovací jazyk s plnou podporou vývoje programu. Obsahuje editor s kontrolou programu během jeho psaní, debbuger i profiler. Součástí MATLABu je i rozsáhlá nápověda v on‐line hypertextová formě a ve formátu PDF.
1.3.1 Historie a vývoj MATLABu Název MATLAB vznikl z anglického MATrix LABoratory. Počátky jsou v roce 1970, kdy prof. Cleve Moler, University of New Mexico vytvořil prostředí po‐ skytující jednoduchý přístup k matematickým knihovnám vyvinutým v projek‐ tech LINPACK a EISPACK. Od roku 1984 je MATLAB komerčně poskytován fy MathWorks, Inc. Původně byl určen pro operační systém UNIX a tato okolnost se dodnes (i v prostředí Windows) projevuje ve velmi jednoduchém základním komunikačním rozhraní ‐ příkazové řádce. V posledních verzích (od roku 2000) jsou nyní využívány matematické knihovny ARPACK (Arnoldi PACKage), LAPACK (Linear Algebra PACKage) a BLAS (Basic Linear Algebra Subroutines). První verze pro PC XT se objevila kolem roku 1985. Základním problém byl ne‐ dostatek paměti ‐ a z toho plynoucí omezení na maximální velikost matic. Po nástupu PC AT rychle následovala verze MATLABu pro tento počítač. Zde byla maximální velikost matice omezena fyzickou velikostí paměti (pro PC AT max. 16 MB). Velké obliby doznala verze MATLAB 386 určená pro počítače PC s procesorem 80386, která již využívala virtuální paměť. Poslední verze MATLAB386 g z října 1995 byla používána velmi dlouho, protože byla vzhledem k tomu, že pracuje pod OS DOS, nepřekonatelná v rychlosti výpočtů. Všechny tyto verze MATLABu pracovaly pod OS DOS a vyžadovaly matematický koprocesor. Přibližně v roce 1994 byla uvedena verze MATLAB for Windows, která nabízela podstatně bohatší možnosti grafického rozhraní než předchozí verze. V této verzi se objevil poprvé SIMULINK. Po výpočetní stránce mnoho nového nenabí‐ zela (naopak výpočty na tom samém počítači byly, díky většímu vytížení proce‐ soru režií operačního systému, pomalejší). MATLAB for Windows skončil verzí 4.2c, která se přestala dodávat koncem roku 1996. Nástupcem verze 4 byla verze 5 určená v rámci platformy Intel do 32‐bitového prostředí (pod OS Windows 95 nebo Windows NT). Verze 6 byla již plně 32‐ bitová a přinesla nové možnosti plynoucí z využití objektového přístupu – zejména nové datové struktury, rychlejší grafiku, nové vizualizační funkce a další rozšíření nabídky základních funkcí. Novinkou bylo, že obsahovala čtyři různá výpočetní jádra optimalizovaná pro různé typy procesorů. Tuto verzi nelze spustit pod Windows 7. KŘP/IMSW Modelování ve výpočtových software
1‐7 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Verze 7.0.4 z ledna 2005 již vyžadovala Windows NT/2000/XP. Obsahovala 4 optimalizovaná výpočetní jádra pro procesory Pentium (PII, PPro, PIII, P4) a jedno pro Athlon. Tato verze byla dostupná kromě pro Windows také pro plat‐ formy HP‐UX 11, Linux, Mac OS X, Solaris a částečně Linux x86‐64 (ne všechny toolboxy). Poslední verze (aktuálně R2011b) podporují vícejádrové procesory Intel a AMD, paralelní výpočty na GPU a výpočetních clustrech a 32/64‐bitové platformy Windows, Mac OS a Linux.
1.3.2 Oblast použití, požadavky na systém a instalace MATLAB s jeho součástmi má velmi široké spektrum použití. Základní oblasti použití ukazuje Obrázek 1‐3.
Obrázek 1‐3 Oblasti použití MATLABu
Podporované platformy ‐ Windows Server 2008 SP2/R2, Windows XP SP3, MS‐Windows XP x64 SP2, Windows Vista SP2, Windows 7 32/64 bit ‐ Mac OS X 10.5.5 a vyšší (Intel), 10.6 a vyšší (Intel) ‐ Linux 32/64bit ‐ Kernel 2.6 a glibc 2.5 a vyšší doporučené distribuce: Ubuntu 9.10 a 10.04 LTS Red Hat Enterprise Linux 5.x SUSE Linux Enterprise Desktop 11.x Debian 5.x
Nároky na systém Procesor: RAM: HD:
Intel nebo AMD, rozšířená instrukční sada SSE2 1024 MB min (2048 MB doporučeno) 1GB pro hlavní modul MATLAB, 3‐4GB typická instalace
KŘP/IMSW Modelování ve výpočtových software
1‐8 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Instalace Instalace MATLABu probíhá z instalačního DVD. Podle použité platformy se instaluje odpovídající verze MATLABu (32/64 bit). Je možná síťová instalace (network) využívající licenční server nebo instalace na počítač (standalone). V případě instalace na počítač je možná varianta využívající internetové připojení na MathWorks či bez něj. Využíváme‐li internetové připojení, je nutné mít vytvořen tzv. MathWorks Acount či jej s využitím Activation Key vytvořit. Nevy‐ užíváme‐li připojení, je nutné mít tzv. File Instalation Key. Po výběru požadova‐ ných součástí z nabídnutého seznamu (nabízí se pouze zakoupené součásti) proběhne instalace. Instalované součásti je nutné aktivovat. Aktivace je možná automatická s využitím internetového připojení k MathWorks Acount nebo manuální vyžadující Licence File. Activation Key nebo File Instalation Key a Li‐ cence File uživatel obdrží při zakoupení licence.
1.3.3 Licence Licence jsou časově neomezené – všechny konfigurace programového systému MATLAB jsou dodávány jako časově neomezené! Pořizovací cena představuje poplatek za časově neomezenou licenci pro jednoho uživatele nebo skupinu uživatelů a zahrnuje v sobě předplatné na update vydaná v průběhu prvních 12 měsíců od pořízení a technickou podporu uživatele. Přístup k update a technic‐ ké podpoře v následujících letech je možný po zaplacení RENEWAL poplatku. RENEWAL – je předplatné update a technické podpory na 12 měsíců. Časové období bezprostředně navazuje na předchozí období předplatného. RENEWAL je možné zakoupit za zvýhodněné ceny nejpozději dva měsíce od ukončení předchozího cyklu předplatného, po tomto datu je cena RENEWAL vyšší. Je‐li cyklus předplatného přerušen, je možné jej obnovit zpětným doplacením RENEWAL poplatků. Při přerušení předplatného na více než 4 roky je pro aktua‐ lizaci produktu třeba zakoupit novou licenci za plnou cenu.
Komerční licence Tento typ licencí dovoluje používat zakoupené produkty k jakýmkoliv účelům, které neodporují standardní licenční smlouvě tj. je možné je používat ke ko‐ merčním účelům. Individuální (jednouživatelská) konfigurace – licence pro jednu osobu („Stan‐ dalone Named User“). Programy mohou být instalovány a spouštěny na jed‐ nom nebo více počítačích (max. 4), ale pracovat s nimi smí jen jedna osoba určená držitelem licence (firmou). Umístění počítače (počítačů) používaných určeným uživatelem není limitováno. V jednom okamžiku smí být spuštěn MATLAB maximálně na dvou procesorech. Držitel licence může změnit určené‐ ho uživatele maximálně 4x ročně. Alternativně může držitel licence určit k in‐ stalaci programů jeden konkrétní počítač („Designated CPU“). Na určeném počítači se může v práci s MATLABem střídat více uživatelů (v jeden časový okamžik však smí s MATLABem pracovat pouze jeden uživatel). Vzdálený pří‐ stup k určenému počítači není dovolen. Síťová (concurrent) konfigurace – umožňuje současnou práci s MATLABem danému počtu uživatelů připojených k lokální počítačové síti. Licenční podmín‐ ky dovolují instalaci programového vybavení na libovolný počet počítačů (nebo KŘP/IMSW Modelování ve výpočtových software
1‐9 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
na souborový server) ve správě nositele licence, ale počet současně pracujících uživatelů je omezen počtem zakoupených uživatelských licencí. Síťové konfigu‐ race jsou dodávány jako multiplatformní – umožňují kombinovaný provoz na všech podporovaných platformách (PC i UNIX) v rámci jedné počítačové sítě. Přístup uživatelů do systému je řízen automaticky jedním licenčním serverem pro všechny platformy.
Školní licence Tyto licence jsou omezeny na použití na školních výpočetních prostředcích, využívaných pouze pro výuku a výzkumnou činnost studentů a pedagogů. U těchto licencí je využití programů pro jakékoli komerční účely zakázáno! Školní licence pro všeobecné použití – plnohodnotné verze MATLABu, Simulin‐ ku a ostatních souvisejících produktů za školní ceny. Licence jsou určeny pro vzdělávací, výzkumnou a publikační činnost studentů, pedagogů a ostatních zaměstnanců ve vzdělávacích institucích. Jsou možné individuální i síťové více‐ uživatelské multiplatformní konfigurace. Classroom Kit – síťová konfigurace MATLABu, Simulinku a ostatních souvisejí‐ cích produktů, která je určena pouze pro pravidelnou výuku studentů zapsa‐ ných do kurzů v institucích poskytujících akademické vzdělání. Classroom Kit nesmí být používán k jiným účelům než je pravidelná výuka. Zejména je zaká‐ záno použití Classroom Kitu k vědecké a publikační činnosti pedagogů, dokto‐ randů i studentů (mimo pravidelnou výuku)! Classroom Kit je k dispozici pro všechny podporované platformy. Studentské licence – individuální multiplatformní konfigurace. Licence jsou určeny pro provoz na soukromých počítačích studentů pro studijní účely. Pro‐ gramové vybavení musí být zakoupeno univerzitou v minimálním množství 10 kusů a dále distribuováno jednotlivým studentům do osobního vlastnictví. Mi‐ nimální konfigurace (Student Suite) obsahuje MATLAB, Simulink, Symbolic Ma‐ th, Control System, Optimization, Statistics, Image Processing a Signal Proces‐ sing Toolboxy a Signal Processing Blockset. Studentskou licenci je možné rozší‐ řit i o toolboxy a blocksety, ale pouze v okamžiku nákupu celé konfigurace a pro všechny uživatele stejně. Studentské licence jsou "jednorázové" ‐ není možné je aktualizovat ani převádět mezi uživateli.
1.4 Úvod do požívání MATLABu Z hlediska používání je práce v MATLABu podobná jako práce v programovacím jazyce BASIC. Základem je zápis příkazů v textové podobě do příkazového řád‐ ku. Napsaný příkaz se hned provede, případně je možné nechat posloupnost příkazů provést najednou, pokud příkazy zapíšeme do textového souboru. Po‐ dobně jako BASIC je MATLAB interpret tj. každý příkaz (řádek) se překládá až v okamžiku, kdy se má provést a při opakovaném použití pokaždé znovu. Dů‐ sledkem je nižší rychlost provádění programu ale jednoduchá a rychlá změna programu a jednoduché ladění. Program vytvořený v MATLABu tedy není vhodný pro opakované rutinní výpočty, ale používá se zejména pro vývoj a ověření složitých výpočetních algoritmů. Čím se MATLAB liší od ostatních programů je jeho orientace na práci s matice‐ mi a maticové výpočty. Základním datovým typem je komplexní matice s čísly KŘP/IMSW Modelování ve výpočtových software
1‐10 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
ve dvojnásobné přesnosti (64 bit). Proměnné není potřeba deklarovat – vytvoří se automaticky při prvním použití. Důsledkem je, že základní matematické ope‐ race se standardně aplikují jako maticové, což znamená, že např. není možné násobit libovolně dvě proměnné. Zápis příkazů je základní formou ovládání MATLABu. V podstatě vše lze udělat pomocí příkazů z příkazové řádky.
1.4.1 Prostředí Po startu MATLABu se objeví hlavní okno programu s implicitním uspořádáním do pěti dílčích oken, jak je ukázáno na Obrázku 1‐4. Nejdůležitější je okno Com‐ mand Window, do kterého se píší příkazy a ve kterém se zobrazují výsledky v textové podobě. V pravém horním rohu je okno Workspace obsahující se‐ znam proměnných v aktuálním pracovním prostoru. Pracovní prostor, který využívají příkazy zapsané na příkazovou řádku se nazývá základní pracovní prostor (basic workspace). Pod ním je okno Command History obsahující se‐ znam (historii) zapsaných příkazů. V levém horním rohu je okno Current Folder obsahující seznam souborů v aktuální 13 složce (adresáři) a pod ním okno obsa‐ hující informace o vybraném souboru. Která složka je aktuální je vidět v položce Current Folder (v pruhu nástrojů hlavního okna – třetí řádek), kde lze také aktuální složku změnit.
Obrázek 1‐4 Základní okno MATLABu
13
Tj. složka, do které se uloží nebo ve které se hledají soubory, u nichž neuvedeme úplnou adre‐ sářovou cestu
KŘP/IMSW Modelování ve výpočtových software
1‐11 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Všechna okna jsou tzv. dokovatelná, což znamená, že je lze z hlavního okna uvolnit (a zase vložit zpět) a osamostatnit. Toto akce provádí pomocí tlačítka (zahnutá šipka) v pravém horním rohu každého okna. Uspořádání oken lze libovolně měnit – viz např. volby v položce Menu Desktop. Pokud se chceme vrátit k výchozímu uspořádání, je možné použít volbu Menu Desktop -> Desktop Layout -> Default. Výmaz obsahu oken Command Window a Command History lze zajistit volbou příslušného příkazu položky Menu Edit.
Výmaz okna Command Window dosáhneme také zápisem příkazu clc na pří‐ kazovou řádku. Poslední řádek hlavního okna je tzv. stavový řádek. Je zde tla‐ čítko Start umožňující spustit některé pomocné programy MATLABu. V tomto řádku je též informace o stavu. Text „Ready“ znamená, že příkaz byl dokončen a čeká se na další, „Busy“ znamená, že se příkaz provádí. I prostředí MATLABu je objektové což znamená, že po vybrání objektu je mož‐ né pravým tlačítkem zobrazit seznam metod, které lze u vybraného objektu použít. Např. u datového souboru v okně Current Folder lze vybrat a spustit Import Wizard (průvodce importem textu) nebo u proměnné v okně Workspa‐ ce je možné vybrat a spustit Variable Editor.
1.4.2 Nápověda MATLAB obsahuje rozsáhlou nápovědu. Základní forma nápovědy vychází z možností příkazové řádky. Napíšeme‐li příkaz help (a Enter) vypíše se se‐ znam skupin příkazů. Seznam se liší podle instalovaných součástí. Napíšeme‐li např. help elfun, vypíše se seznam příkazů ze skupiny základních matema‐ tických funkcí a napíšeme‐li např. help sin, vypíše se nápověda k vybrané funkci. Ačkoliv jde o příkazový řádek, výpis je hypertextový tj. dovoluje kliknu‐ tím na zvýrazněné slovo vyvolat textovou nápovědu nebo rozšířenou nápovědu v html formátu (doc sin). Rozšířenou kontextově senzitivní 14 nápovědu mů‐ žeme vyvolat přímo použitím klávesy F1 nebo použitím položky Menu Help spustit Help Browser (viz Obrázek 1‐5). Pokud neznáme název funkce, kterou potřebujeme, může být užitečný příkaz lookfor následovaný řetězcem, o kterém předpokládáme, že se bude vysky‐ tovat v textové nápovědě hledané funkce. Výsledkem bude seznam funkcí, v jejichž textové nápovědě se zadaný řetězec vyskytuje. Bude‐li mne zajímat funkce související s Fourierovou transformací, použiji např. lookfor Fouri. >> lookfor Fouri fft - Discrete Fourier transform. fft2 - dimensional discrete Fourier Transform. fftn - N-dimensional discrete Fourier Transform. ifft - Inverse discrete Fourier transform. ifft2 - Two-dimensional inverse discrete Fourier transform. ifftn - N-dimensional inverse discrete Fourier transform. fi_radix2fft_demo - Fixed-Point Fast Fourier Transform (FFT) dftmtx - Discrete Fourier transform matrix. Specgram - Spectrogram using a Short-Time Fourier Transform (STFT). spectrogram - Spectrogram using a Short-Time Fourier Transform (STFT).
14
Tj. nápověda ke slovu, na kterém je textový kurzor
KŘP/IMSW Modelování ve výpočtových software
1‐12 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Obrázek 1‐5 Help Browser
1.4.3 Příkazy Jak již víme z prvního bloku, základní ovládání MATLABu je příkazy 15 zapsanými na příkazový řádek za znaky >> 16 . Rozlišují se velká a malá písmena v názvech příkazů, parametrů a proměnných. Vstupní parametry příkazu mohou být za‐ psány jako seznam oddělený mezerami nebo seznam v závorce oddělený čár‐ kami (zápis jako funkce). Ukončení zápisu příkazu je obvykle 17 stiskem klávesy Enter. Příkaz je hned proveden. MATLAB dovoluje jednoduchou editaci příka‐ zového řádku – posun po řádku pomocí kláves šipka vlevo/vpravo, vkládání a výmaz znaků. Klávesy šipka nahoru/dolů přesouvají na příkazový řádek položky ze seznamu historie zapsaných příkazů. Pokud napíšeme několik znaků, potom
15
Příkaz stejně jako funkce může mít vstupní parametry a může vracet nějakou informaci. Pojem příkaz budeme používat, když se vstupní parametry používají pro upřesnění činnosti a výstupní parametry (pokud vůbec jsou) nesou obecnou informaci o výsledku. Pojem funkce bude použí‐ ván v případě, že vstupní a výstupní parametry jsou numerické hodnoty. Další rozdíl je v tom, že když neuvedeme při volání funkce proměnnou pro uložení návratové hodnoty, uloží se implicitně do proměnné ans, zatímco návratová informace příkazu není implicitně nikam ukládána.
16
Pokud tento nápovědný řetězec (prompt) chybí, jde o situaci, kdy předchozí příkaz nebyl do‐ končen (provádí se) nebo zadání aktuálního příkazu není dokončeno. O kterou variantu jde, se pozná podle stavového řádku. Je‐li na něj text „Busy“, není dokončen předchozí příkaz. Ve dru‐ hém případě je na něm text „Continue entering statement“.
17
Při zápisu složitějších příkazů je možné použití klávesy Enter i uvnitř zápisu příkazu
KŘP/IMSW Modelování ve výpočtových software
1‐13 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
se posun v historii provádí po položkách začínajících uvedenými znaky. Užiteč‐ ná je klávesa Esc, která maže příkazový řádek a klávesová kombinace Ctrl+c, která přeruší 18 prováděný příkaz.
Specialitou MATLABu je, že funkce (i příkaz) může mít nejen více vstupních parametrů 19 , ale může vracet i více výsledků, které lze uložit do více výstupních proměnných (je‐li více než jedna výstupní proměnná, pak seznam musí být uzavřen v hranatých závorkách). Uvedení výstupních (i vstupních) parametrů může být při použití příkazu (funkce) vynecháno. Syntaxe obecného příkazu je [ou1,ou2,…]=příkaz(in1,in2,…)
Co který příkaz dělá, jeho syntaxi a význam jednotlivých parametrů jednoduše zjistíme pomocí nápovědy tj. help příkaz nebo doc příkaz. Pokud příkaz vrací jednu či více hodnot a název výstupní proměnné (proměnných) není sou‐ částí příkazu, pak se uloží pouze první výsledek do proměnné s implicitním názvem ans. Obsah výstupní proměnné (proměnných) se hned vypíše. Výpis je možné potlačit uvedením znaku středník (;) bezprostředně za příkaz. Text uve‐ dený znakem procento (%) se do konce řádky považuje za komentář. Je možný zápis i více příkazů do jednoho řádku. Jako příklad jednoduchých příkazů bez vstupních parametrů uveďme skupinu příkazů umožňujících získat informace o prostředí: ispc/ismac/isunix vrací hodnotu 1 na dané platformě, jinak 0 [c,m,e] = computer informace o dané platformě c řetězec PCWIN / PCWIN64 / GLNX86 / GLNXA64 / MAXI64 m hodnota – maximální počet prvků v matici e řetězec L / B – organizace bitů little endien / big endien ver informace o verzích instalovaných součástí pwd úplná cesta k aktuální složce path seznam složek, ve kterých se hledají příkazy MATLABu clock vektor 6 čísel (rok,měsíc,den,hodina,minuta,sekunda) cputime čas v sekundách od spuštění MATLABu now datum a čas zakódovaný do jednoho reálného čísla datestr(now) datum a čas – standardní řetězec tic nastavení časové značky (spuštění stopek) toc uplynulý čas od časové značky (odečtení stopek) Užitečná je možnost nastavit formát výpisu čísel příkazem format. Např. pří‐ kaz format shorteng nastaví výpis na semilogaritmický tvar se čtyřmi čísli‐ cemi za desetinou čárkou a exponentem v násobcích tří (31.4159e+003). Lze též nastavit zahuštěnou (jsou vynechány vložené prázdné řádky) formu výpisu do okna příkazem format short. Jinou možností je výpis celých čísel v šestnáctkové soustavě format hex, či výpis reálných čísel v podobě podílu 18
Velmi užitečné v případě, že jsme vytvořili např. matici o rozměru 1000×1000 a zapomněli příkaz ukončit středníkem – výpis milionu čísel nějakou chvíli trvá.
19
Parametry příkazu mohou být buď ve formě seznamu v kulatých závorkách, nebo jako seznam parametrů oddělený mezerami následující za příkazem
KŘP/IMSW Modelování ve výpočtových software
1‐14 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
dvou celých čísel format rat. Další možnosti viz help format nebo doc format.
Pokud nelze příkaz provést, je vypsána červeně textová informace upřesňující chybu – např. v případě neexistujícího příkazu >> clck % správně clock ??? Undefined function or variable 'clck'.
V MATLABu lze zapsat i příkazy určené pro operační systém, které jsou OS vy‐ konány a případná textová odpověď je vypsána do Command Windows. Jsou možné dva způsoby, buď předřadit příkazu OS znak vykřičník (!) nebo použít příkaz dos('příkaz OS') případně [status,result]=dos('příkaz OS'). Druhý způsob umožňuje zachytit výsledek příkazu OS do proměnné result, včetně možnosti potlačit výpis do okna středníkem na konci. Více viz. doc dos. % výpis obsahu aktuální složky % do okna >> !dir % spustí poznámkový blok >> !notepad % ověří spojení s adresou % výpis do okna >> !ping www.upce.cz
% uloží seznam do r % bez výpisu do okna >> [s,r]=dos('dir'); % spustí poznámkový blok >> dos('notepad') % ověří spojení s adresou % výpis do okna >> dos('ping www.upce.cz')
KŘP/IMSW Modelování ve výpočtových software
1‐15 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice
Pojmy k zapamatování Okruhy problémů: model a modelování, numerické výpočty, simulace, programy pro numerické výpočty, určení MATLABu, toolbox, blockset, li‐ cence, příkazový řádek, význam a uspořádání hlavního okna, nápověda, příkazy pro získání informací o prostředí a čase Použité nástroje:
Help Browser
Příkazy a funkce: clc, clock, computer, cputime, datestr, doc, dos, format, help, lookfor, now, tic, toc, ver
Otázky na procvičení 1. 2. 3. 4. 5. 6. 7. 8. 9.
Jaký typ modelu je využíván pro výpočty v MATLABu a SIMULINKu? Jaký je rozdíl mezi numerickým výpočtem a simulací? Jaké jsou další programy pro numerické výpočty mimo MATLAB? Co označují pojmy „toolbox“ a „blockset“? Jaké je hlavní omezení licence Classroom Kit? Jaký je rozdíl mezi příkazem help a lookfor? Které funkce či příkazy umožňují změřit časový interval? Jak je označen chybný příkaz? Jak lze zapsat v MATLABu příkaz operačního systému?
Odkazy a další studijní prameny • • •
základní informace o MATLABu včetně jeho součástí a licencích – www.humusoft.cz on‐line dokumentace k programu nebo www.mathworks.com/help/ – části „Instalation Guide“, „Product Overview“, „Starting a MATLAB Sessi‐ on“ elektronická učebnice Learning MATLAB 7 – www.mathworks.com/academia/student_version/learnmatlab_sp3.pdf (části „Introduction“ a „What is MATLAB?“)
KŘP/IMSW Modelování ve výpočtových software
1‐16 (16) 13.7.11
František Dušek KŘP FEI Univerzita Pardubice