Lineární algebra s Matlabem Přednáška 1
Základní informace Kontakt Michal Merta michal.merta@vsb.cz Kancelář IT447 homel.vsb.cz/~mer126 Čt 16:00 (předn.), 17:45 (cv.), PorEB413 Konzultace po předchozí domluvě Zápočty jsou automaticky uznané, o zrušení nutno požádat v prvních 14 dnech semestru.
Základní informace Průběh semestru (pravděpodobně se změní) Přednášky Úvod do MATLABu (přehled toolboxů a funkcí, help). Programování v MATLABu (matice, vektory, příkazy řízení toku, 2D a 3D grafika, vektorizace). Systémy ukládání řídkých matic (pásové, profilové, komprese po řádcích, sloupcích). Řešení soustav lineárních rovnic (regulární, nedourčené a přeurčené systémy). Gaussova eliminace (řádková a sloupcová verze, pivotizace). LU a Choleského rozklad (řádková a sloupcová verze, pivotizace). Iterační řešiče QR rozklad (Givensova a Householderova transformace). Vlastní čísla a spektrální rozklad (QR a LR algoritmus, shift). Singulární rozklad, pseudoinverzní matice. Lanczosova metoda, metoda sdružených gradientů. Prezentace projektů. Cvičení Seznámení se s MATLABem, přehled funkcí. Programovací techniky v MATLABu, tvorba matic, vektorů, aplikace příkazů řízení toku, vykreslení 2D a 3D funkcí. Tvorba grafů. Implementace řídkých matic (pásové, profilové, komprese po řádcích, sloupcích). Výpočet řešení soustav lineárních rovnic (regulární, nedourčené a přeurčené systémy). Řešení soustav pomocí Gaussovy eliminace (implementace, řádková a sloupcová verze, pivotizace). Řešení soustav pomocí LU a Choleského rozkladu (implementace, řádková a sloupcová verze, pivotizace). Užití QR rozkladu (implementace, Givensova a Householderova transformace, aplikace). Výpočet vlastních čísel a spektrálního rozkladu (implementace, QR a LR algoritmus, shift, aplikace). Výpočet singulárního rozkladu a pseudoinverzní matice (implementace, aplikace) Aplikace Lanczosovy metody a metody sdružených gradientů (implementace, řešení soustav). Prezentace projektů.
Základní informace Výukové materiály Kozubek T. et al. Lineární algebra s Matlabem. VŠB-TUO 2012. http://mi21.vsb.cz/modul/linearni-algebra-s-matlabem Golub G., Loan C. F. Matrix Computations. The John Hopkins University Press 1996. Trefethen, L. N., Bau, D. Numerical Linear Algebra. SIAM 1997. Online dokumentace. Podmínky absolvování Test max. 10 b. Projekt max. 20 b. (min 10 b.) Zkouška max. 70 b. Celkem min. 51 b.
Matlab MATrix LABoratory Prostředí pro numerické výpočty Jazyk pro numerické výpočty, vývoj algoritmů, analýzu a vizualizaci dat GUI pro interaktivní zadávání příkazů Knihovna funkcí pro základní a pokročilou matematiku, import a export dat, datovou analýzu, vizualizaci, atd. Velké množství toolboxů První verze z roku 1984
Matlab Má v sobězahrnuty externí řešiče optimalizované pro danou architekturu (např. BLAS Basic Linear Algebra Subroutines, UMFPACK, atd.) Interface k C/C++, Java,.NET, Python, SQL, Hadoop, MS Excel Nástroje k vytváření GUI Rozsáhlá dokumentace https://www.mathworks.com/help/matlab/index.html
Přehled nejdůležitějších toolboxů https://www.mathworks.com/products.html Parallel Computing Toolbox Pro paralelní výpočty na vícejádrových počítačích, grafických kartách a clusterech Symbolic Math Toolbox Pro analytické výpočty (derivace, integrály, zjednodušování výrazů, řešení rovnic, atd.) Optimization Toolbox Řešení optimalizačních problémů
Přehled nejdůležitějších toolboxů Partial Differential Equation Toolbox Řešení parciálních diferenciálních rovnic pomocí metody konečných prvků Statistics and Machine Learning Toolbox Signal Processing Toolbox Image Processing Toolbox Segmentace obrazu, redukce šumu, transformace, atd. Computer Vision, Automatic Driving, Neural Network Toolbox, atd.
Instalace https://install.vsb.cz/stu/matlab/ (požadováno přihlášení) Nutno požádat o licenci přes helpdesk http://idoc.vsb.cz/xwiki/wiki/infra/view/pc/stu-zam Při spuštění je třeba být v síti VŠB (nebo VPN)
Alternativy GNU Octave Freemat Scilab Python (NumPy, SciPy, Matplotlib)
Uživatelské rozhraní Current folder Command window Workspace Command history
Některé užitečné příkazy help <nazev funkce> Vypíše stručný help k dané funkci doc <nazev funkce> Zobrazí stránku s dokumentací dané funkce help elfun Zobrazí seznam elementárních matematických funkcí ans Poslední výsledek clc Vyčistí command window clear Vymaže proměnné z workspace format format long à pi = 3.141592653589793 format short à pi = 3.1416 format bank à pi = 3.14 Ovlivňuje pouze to, jak jsou proměnné vypsány, ne přesnost výpočtu! tic, toc Slouží k měření času Znak % značí komentář Zastavení výpočtu: Ctrl+C, Ctrl+Break, Command+. (Mac)
Konstanty
Matice, vektory, skaláry Základní datový typ je matice A = [1 2; 3 4; 5 6] A = [1, 2; 3, 4; 5, 6] A = [1 2 3 4 5 6] Skalár je matice 1x1 skalar = [1] nebo skalar = 1 Vektor je matice nx1 nebo 1xn sloupcovyvektor = [1; 2; 3], radkovyvektor = [1 2 3];
Základní operace Podobně jako v jiných jazycích: +, -, *, /, ^ (mocnina) Operátory pracují s čísly i maticemi [1, 2; 3, 4] * [5, 6; 7, 8] násobení matice-matice [1, 2] * [3; 4] skalární součin vektorů [1, 2; 3, 4]^2 mocnina matice atd. Operace po prvcích Symbol tečky před operátor [1, 2; 3, 4].* [5, 6; 7, 8] Transpozice pomocí apostrofu: V případě komplexních matic se jedná o hermitovskou transpozici (transpozice + komplexni konjugace). Klasickou transpozici vynutíme tečkou před apostrofem.
Základní operace Operátory porovnání a logické operátory ==, ~=, <, <=, >, >=, &, ~ Lze porovnávat dvě matice se stejnými rozměry nebo matici a skalár
Lomítkové operátory K řešení soustav lineárních rovnic AX=B slouží operátor zpětného lomítka: \ X = A\B Přibližně odpovídá násobeníinverzní maticí zleva: X = inv(a)*b K řešení soustav lineárních rovnic XA=B slouží operátor klasického lomítka: / X = B/A Přibližně odpovídá násobeníinverzní maticí zprava: X = B*inv(A) Mezi oběma lomítky platí vztah Vyvarujte se použití explicitní inverze inv(a)!
Generování matic zeros(m, n) matice nul ones(m, n) matice jedniček eye(m, n) jednotková matice rand(m, n) matice náhodných čísel magic(m, n) magický čtverec
Dvojtečkový operátor Generuje vektor po sobě jdoucích čísel
Manipulace s maticí Velikost: size(a), pro vektor length(a) Výběr prvků matice: Matlab indexuje od jedničky [A] ij à A(i, j) Lze vybrat více prvků najednou (submatici), např. A([1 2], 2) diag(a) vybere diagonálu sum(a) vrací vektor se součty přes každý sloupec matice Mazání sloupců, řádků: A(:, 1) = [], A(1, :) = []; Slučování (konkatanace): C = [A, A+10];
Skripty a funkce Soubory s příponou.m Umožnují spustit celouposloupnost příkazů Skript Nepřijímávstupní argumenty a nemá výstupníargumenty Funkce Přijímá vstupní argumenty a může vracet výstupníargumenty Matlab není interpret Při prvním volání funkce se vždy m-soubor s její definicí přeloží do pseudokódu, který se uloží do paměti a zůstává tam po celou dobu běhu aplikace. Maže se příkazem clear, např. clear jmeno_funkce. Pseudokód lze uložit do souboru s příponou.p pomocí příkazu pcode jmeno_funkce Není třeba publikovat zdrojové m-soubory, ale jen nečitelné p-soubory.
Základní struktura funkce
Řetězce Vektory znaků str = muj retezec Spojování pomocí strcat() nebo podobně jako vektory strcat( Hello, world ), [ Hello, world ] Porovnávání pomocí strcmp, strncmp, strcmpi, strncmpi Prohledávání pomocí findstr, strrep Funkce pro konverzi z řetězce na čísla a naopak