www.vsb.cz
Informace o předmětu, úvod do Matlabu
Michal Merta
VŠB – Technická univerzita Ostrava michal.merta@vsb.cz
10. února 2022
1 Základní informace
2 Základy Matlabu
Kontakt
Kontakt
Michal Merta
michal.merta@vsb.cz
https://homel.vsb.cz/~mer126/
budova FEI, kancelář EA545 Výuka
Čtvrtek 16:00 (přednáška), 17:15 (cvičení) EB413
Konzultace osobně nebo přes MS Teams po předchozí domluvě e-mailem
Zápočty jsou automaticky uznané, o zrušení nutno požádat během prvních 14 dnů semestru
Základní informace
Předběžný průběh semestru
Informace o předmětu, úvod do Matlabu
Opakování pojmů z lineární algebry, řízení toku programu Systémy ukládání řídkých matic, grafika v Matlabu Řešení soustav lineárních rovnic, motivace, LU rozklad Pivotizace v LU rozkladu, LDMT, LDLT Choleského rozklad Lineární a gradientní iterační řešiče
QR rozklad
Vlastní čísla a spektrální rozklad Singulární rozklad a jeho aplikace Prezentace projektů
Výukové materiály
Přednášky, poznámky, cvičení, DÚ:
https://homel.vsb.cz/~mer126/teaching.html Záznamy přednášek, řešených příkladů ze cvičení tamtéž
Kozubek, T. et al.Lineární algebra s Matlabem. VŠB-TU Ostrava 2012.
http://mi21.vsb.cz/sites/mi21.vsb.cz/files/unit/
linearni_algebra_s_matlabem.pdf
Golub, G., van Loan, C. F.Matrix Computations. The John Hopkins University Press 1996.
Trefethen, L. N., Bau, D.Numerical Linear Algebra. SIAM 1997.
Online dokumentace k Matlabu
https://www.mathworks.com/help/matlab/
https://stackoverflow.com/questions/tagged/matlab
Základní informace
Podmínky absolvování
Test (0 – 10 bodů)
Teoretická a praktická část Projekt (0 – 20 bodů)
Miniprojekty (DÚ) – 5×2 body
Zaslat na e-mail vždy nejpozději do čtvrtka 16:00 následujícího týdne Projekt (0 – 10 bodů)
Obsáhlejší projekt, téma bude upřesněno v druhé polovině semestru
Zkouška (0 – 70 bodů)
Pro udělení zápočtu je třeba získat alespoň 15 bodů Celkem minimálně 51 bodů
MathWorks Matlab
MATrix LABoratory
Prostředí pro numerické výpočty Jazyk pro numerické výpočty, vývoj algoritmů, analýzu a vizualizaci dat IDE pro interkativní zadávání příkazů a vývoj
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
Základy Matlabu
MathWorks Matlab
Obsahuje externí řešiče optimalizované pro danou architekturu (např. BLAS - Basic Linear Algebra Subroutines)
Interface k C/C++, Java, .NET, Python, SQL, MS Excel, atd.
Nástroje k vytváření grafického uživatelského rozhraní
Rozsáhlá dokumentace https:
//www.mathworks.com/help/matlab/
Přehled nejdůležitějších toolboxů
Toolboxy rozšiřují funkcionalitu Matlabu https://www.mathworks.com/products.html Parallel Computing Toolbox
Pro paralelní výpočty na vícejádrových procesorech, 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.) Alternativa např. Wolfram Mathematica, Maple Optimization Toolbox
Řešení optimalizačních problémů
Minimalizace nebo maximalizace objektivní funkce při splnění určitých podmínek
Např. optimalizace tvaru součástky, portfolia, atd.
Základy Matlabu
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ů
Výpočet šíření tepla nebo zvuku, deformací, atd.
Image Processing Toolbox
Segmentace obrazu, redukce šumu, atd.
Statistics and Machine Learning Toolbox Deep Learning Toolbox
Computer Vision Toolbox Automatic Driving Toolboxy atd.
Instalace
Pro studenty a zaměstnance je dostupná školní licence
https://install.vsb.cz/→Média pro zaměstnance a studenty→Matlab Požadováno přihlášení (pomocí LDAP hesla – stejné jako na školní e-mail)
Nutno požádat o instalační klíč a licenční soubor přes HelpDesk ve frontě SW a licence (https://idesk.vsb.cz/)
Uveďte, že žádáte o MATLAB ClassKit (licence pro výuku) pro předmět Numerická lineární algebra, první ročník
Vizhttps://idoc.vsb.cz/xwiki/bin/view/pc/sw/sw-zdarma/
Při používání je třeba být ve školní síti Fyzicky nebo přes VPN
Návod k instalaci:https://idoc.vsb.cz/xwiki/bin/view/tuonet/vpn/
Základy Matlabu
Alternativy
GNU Octave Freemat Scilab Python
V kombinaci s balíčky numpy, scipy, pandas, matplotlib
Jupyter Notebook R
Julia
Uživatelské rozhraní
Current Folder
Obsah aktuálního adresáře Umožňuje základní souborové operace Umožňuje přidat adresář doPATH
Command Window Umožňuje interkativní zadávání příkazů, volání vlastních skriptů a funkcí Workspace
Přehled proměnných Command History
Umožňuje listovat příkazy a znovu je provést
Základy Matlabu
Některé užitečné příkazy
help <nazev funkce>
Vypíše stručnou nápovědu k dané funkci doc <nazev funkce>
Zobrazí stránku s dokumentací dané funkce
help elfun
Zobrazí seznam elementárních matematických funkcí
ans
Proměnná s posledním výsledkem clc
Vyčistí Command Window clear
format
Ovlivňuje, s jakou přesností jsou proměnné vypisovány
format long →pi = 3.141592653589793
format short→pi = 3.1415 format long →pi = 3.14 tic, toc
Slouží k měření času Znak% uvozuje komentář
Zastavení výpočtu: Ctrl+C, Ctrl+Break, Cmd+. (Mac)
Konstanty
pi– Ludolfovo číslo i, j– imaginární jednotka
eps – relativní přesnost reálných čísel
realmin – nejmenší podporované kladné reálné číslo realmax – největší podporované reálné kladné číslo Inf – nekonečno, např. výsledek operace1/0
NaN – nedefinovaná hodnota, např. výsledek operace0/0
Základy Matlabu
Matice, vektory, skaláry
Matlab je slabě typový jazyk - nedeklaruje typ proměnné
Interně jsou numerické hodnoty defaultně ukládány jakodouble Základní datový typ je matice
Matici zapisujeme do hranatých závorek, prvky na řádku oddělujeme mezerou nebo čárkou, řádky oddělujeme středníkem
Např. matici
1 2 3 4 5 6
zadáme do Matlabu těmito způsoby
A = [1 2; 3 4; 5 6]
A = [1, 2; 3, 4; 5, 6]
A = [1 2 3 4
Matice, vektory, skaláry
Vektor je matice o rozměrechn×1 nebo1×n:
sloupcovyV = [1; 2; 3],radkovyV = [1, 2, 3]
Skalár je matice o rozměrech 1×1:
scalar = [1]neboscalar = 1
Základy Matlabu
Základní operace
Podobně jako v jiných jazycích:+, -, *, /, ^ Operátory pracují se skaláry 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átorem
[1, 2; 3, 4] .* [5, 6; 7, 8]→[5, 12; 21, 32]
Transpozice pomoci apostrofu:A'
V případě komplexní matice se jedná o hermitovskou transpozici (transpozice + komplexní konjugace). Klasickou transpozici vynutíme tečkou před apostrofem.
Základní operace
Operátory porovnání a logické operátory
==, ˜ =, <, <=, >, >=
|(nebo)
&(a současně)
˜
Lze porovnávat dvě matice se stejnými rozměry nebo matici a skalár
Základy Matlabu
Operátor zpětného lomítka
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í zlevax = inv(A)*b Obsahuje interface na externí optimalizované knihovny (např.
UMFPACK)
Vyvarujte se použití explicitní inverze inv(A)
Numericky nestabilní
Časově a paměťově náročnější (zejména pro matice obsahující hodně nulových prvků)
Generování matic
zeros(m, n)– matice nul o rozměřech m×n ones(m, n)– matice jedniček o rozměřech m×n eye(m, n) – jednotková matice rozměřechm×n
rand(m, n)– matice náhodných čísel o rozměřechm×n magic(m, n)– magický čtverec o rozměřech m×m diag(v) – diagonální matice s vektoremv na diagonále
Základy Matlabu
Dvojtečkový operátor
Generuje vektor po sobě jdoucích čísel
Manipulace s maticí
Velikost: size(A)
Délka vektoru:length(v) Výběr prvků z matice
Matlab indexuje od jedničky Ai,j→A(i,j)
Lze vybrat více prvků najednou (submatici)
např.A([1 2], 2), A(3, :), A(:, 2:2:10), A(2:end, 2:4) 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]
Základy Matlabu
Manipulace s maticí
Skripty a funkce
Soubory s příponou.m
Umožňují spusti posloupnost příkazů Skript
Nepřijímá vstupní argumenty a nemá výstupní argumenty Pracuje s proměnnými v pracovním prostoru (workspace) Funkce
Přijímá vstupní argumenty a může vracet výstupní argumenty Matlab je interpretovaný jazyk
Při prvním volání funkce se 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.
Run-time interpreter poté vykoná funkci podle pseudokódu
Pseudokód lze uložit do souboru s příponou.ppomocí příkazupcode (není třeba publikovat zdrojové m-soubory, ale jen nečitelné p-soubory)
Základy Matlabu
Základní struktura funkce
function [vystup1, vystup2] = nazevFunkce(vstup1, vstup2)
%NAZEVFUNKCE strucny popis (H1)
% Podrobna napoveda k funkci
% ...
%
% See also jinaFunkce1, jinaFunkce2, ...
end
Základní struktura funkce
Základy Matlabu
Řetězce
Vektory znaků
str = ’muj retezec’
Spojování pomocstrcat()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 řetězce na čísla a naopak, např.str2num Vytvoření formátovaného řetězce pomocí sprintf
Tisk formátovaného řetězce na obrazovku nebo do souboru pomocí fprintf
Michal Merta
VŠB – Technická univerzita Ostrava michal.merta@vsb.cz
10. února 2022