====== Matlab v předmětu Optimalizace ====== Na cvičeních budete používat systém [[http://www.mathworks.com/products/matlab|Matlab]], který sdružuje prostředky pro výpočty, vizualizaci, ladění a programování numerických úloh. Jedná se o široce rozšířeným systémem pro vědecko-technicé výpočty. Je používán na více než 3500 universitách a ve stovkách velkých firem, koukněte např. [[http://www.iflscience.com/technology/40-tech-skills-that-will-land-you-an-82000plus-salary/all/|sem]]. ===== Jak ho získat ===== /* [[http://www.feld.cvut.cz/user-info/matlab.html|multilicenci FEL]]. */ Matlab není zadarmo. Nicméně student si může doma zadarmo nainstalovat [[http://download.cvut.cz|multilicenci ČVUT]] Matlabu s pomocí Hlavního přístupového hesla. Matlab vyžaduje ČVUT ip (147.32.x.x). /* Instalace poběží na jakémkoliv stroji trvale připojeném na síť (tedy i doma, máte-li připojení). */ **Pozor:** [[http://www.feld.cvut.cz/user-info/matlab.html|Multilicenci FEL]] neobsahuje optimalizační toolbox, ze kterého budete potřebovat pro některá cvičení funkci linprog. V nouzi lze použít volně dostupnou okleštěnou variantu Matlabu zvanou [[http://www.gnu.org/software/octave|Octave]]. ===== Jak se ho naučit ===== Programovací jazyk Matlabu není obtížný a naučíte se jej rychle. Po instalaci začněte [[http://cmp.felk.cvut.cz/cmp/courses/OPT/cviceni/01/Matlab-Tutorial.html|rychlokursem základních příkazů]]. Pak doporučujeme si vytisknout a doma přečíst tento {{primer40.pdf|tutorial}} (sice starý, ale stále vyhovující). Užitečné je vědět, [[http://www.getreuer.info/matopt.pdf|jak psát matlabský kód]]. Zbytek se naučíte používáním a častým vypisováním dokumentace příkazem 'help'. Nadšený student ocení dále např. [[http://www.mathworks.com/moler/chapters.html|knihu]] o numerickém počítání v Matlabu. Matlab má integrované prostředí: příkazové okno, grafiku, editor a debugger. I když to svádí k velmi časté práci myší, tak ten správný způsob práce je dělat co možná nejvíce z //příkazové řádky//. Z té zadáváme příkazy, vypisujeme proměnné, spouštíme vytvořený kód. Jednou z mála výjimek je debugger, který je pohodlnější obsluhovat myší. Kód vám typicky nebude chodit "na první zapojení". I když programovací jazyk je //syntakticky// jednoduchý, //význam// příkazů může být složitý, díky použití maticového zápisu. Matlab umožňuje velice hutný zápis a tedy už jediný řádek programu může dělat velmi mnoho. Proto je třeba kód ladit //kousek po kousku//. Každý kousek (pokud možno každý řádek) je nutno pečlivě otestovat: vypsat si vektory a matice před a po jeho vykonání a zkotrolovat, zda splňují všechny matematické vztahy, které mají splňovat. Setkáváme se často s tím, že studenti //neumějí programovat//, ať už používají Matlab nebo jiný jazyk. Takovým studentům mohou být užitečné rady o [[https://cw.felk.cvut.cz/doku.php/help/common/ladeni_programu|psaní a ladění programu]] (i když jsou primárně určené pro jiný předmět). ===== Jiné optimalizační toolboxy ===== Kromě optimalizačního toolboxu prodávaného firmou Mathworks existuje mnoho jiných optimalizačních toolboxů do Matlabu. Příkladem je [[http://mosek.com/products/mosek/|Mosek Optimization Software]]. Mosek není freeware, ale lze ho [[http://mosek.com/resources/downloads|stahnout zde]] a získat [[http://license.mosek.com/academic/|Free Academic License]]. Pro instalaci na váš operační systém (Linux/MacOS/Windows) můžete použít [[http://docs.mosek.com/7.0/toolsinstall.pdf|návod]].