15. Matlab – Lineárna algebra
18. September, 2009, Autor článku: Blaho Michal, MATLAB/Comsol
Ročník 2, číslo 9
Pridať príspevok
Matlab pracuje s dátami vo forme vektorov a matíc. Základnej práci s vektormi a maticami sme sa už venovali v predchádzajúcej časti. Prácou s maticami sa zaoberá niekoľko oblastí matematiky a jednou z najznámejších je lineárna algebra. Využitie Matlabu a jeho funkcií pri výpočtoch lineárnej algebry sa venuje dnešný článok.
Sústava lineárnych rovníc
Jedným z najdôležitejších problémov výpočtov je riešenie sústavy lineárnych rovníc. Problém by sa dal formulovať nasledovne: Ak su dané matice A a B, existuje jedinečná matica taká, že platí jeden z nasledujúcich vzťahov?
(1) |
Jednou z možností by bolo využitie inverznej matice A a vynásobenie matice B zo správnej strany. Matlab však takéto sústavy nerieši pomocou inverzných matíc kôli presnosti. Využíva symboly lomítok \ , / a im zodpovedajúce funkcie mldivide a mrdivide. Nasledujúce zápisy zodpovedajú riešeniam vzťahov z predchádzajúcich rovníc v Matlabe
(2) |
Nato, aby sme mohli dané rovnice vypočítať je potrebné pri prvej rovnici, aby mali matice A a B rovnaký počet riadkov. Riešenie X má potom rovnaký počet stĺpcov ako matica B a dimenzia riadkov je rovná dimenzii stĺpcov matice A. Pri druhej rovnici sa vlastnosti riadkov a stĺpcov vymenia. Matica A nemusí byť štvorcová. Ak je matica A rozmeru (m,n) môžu nastať tri prípady
- m = n – sústava je štvorcová
- m > n – sústava je preurčená
- m < n – sústava je podurčená
O vlastnostiach jednotlivých prípadov a hľadaní ich riešení pojednáva [1]. V užívateľskej príručke nájdete aké postupy sa využívajú pri riešení lineárnych rovníc pomocou príkazu mldivide. Za pozornosť stojí spomenúť príkaz rref, ktorý vracia redukovaný stupňovitý tvar matice. Pomocou príkazu môžeme riešiť sústavu lineárnych rovníc tak, že k matici A pridáme stĺpcový vektor b, ako posledný sĺpec a riešenie rovníc bude ako posledný stĺpec redukovanej matice. Je to analógia ku Gaussovej eliminačnej metóde. Príkaz rref však vnáša do výpočtov chyby zaokrúhľovania.
>>A=[6 3 8;2 0 5;7 3 4];
>>b=[5;1;8];
>>A=[A b];
>>X=rref(A)
X =
1.0000 0.0000 0.0000 1.4615
0.0000 1.0000 0.0000 -0.2308
0.0000 0.0000 1.0000 -0.3846
Inverzné matice a determinanty
Ak je matica A štvorcová a regulárna potom rovnice
(3) |
majú rovnaké riešenie. Toto riešenie sa nazýva aj inverzia matice A. V Matlabe ju vypočítame pomocou príkazu inv
>>A=pascal(3);
>>B=inv(A)
B =
3.0000 -3.0000 1.0000
-3.0000 5.0000 -2.0000
1.0000 -2.0000 1.0000
Determinant sa využíva pri niektorých typoch symbolických výpočtov, ale jeho výpočet je zaťažený výpočtovými chybami. V Matlabe sa vypočíta pomocou príkazu det
>>C=det(A);
C = 1
Obdĺžnikové matice nemajú inverznú maticu ani determinant. Aspoň jedna z hore uvedených rovníc nemá riešenie. Čiastočné riešenie týchto vzťahov nahrádza Moore-Penrose pseudoinverzia, ktorá sa v Matlabe počíta cez príkaz pinv
>>D=[1 4 3 8;2 7 1 0;6 2 3 9];
>>E=pinv(D)
E =
-0.2011 0.0639 0.1789
0.0516 0.1251 -0.0502
0.0411 -0.0033 -0.0062
0.1089 -0.0693 0.0051
Rozklady matíc
Rozklady matíc, ktoré v tejto časti popíšeme, využívajú trojuholníkové matice, ktoré majú pod alebo nad diagonálou nulové prvky. Systém lineárnych rovníc sa s pomocou trojuholníkových matíc dá ľahko vypočítať pomocou spätných substitúcií.
Choleskyho rozklad vyjadruje symetrickú maticu ako súčin trojuholníkovej matice a jej transpozície
(4) |
nie všetky symetrické matice sa dajú takýmto spôsobom faktorizovať. Sústavu lineárnych rovníc potom môžeme vypočítať pomocou vzťahu
(5) |
Choleskyho rozklad získame pomocou príkazu chol
>>F=pascal(4);
>>G=chol(F)
F =
1 1 1 1
0 1 2 3
0 0 1 3
0 0 0 1
LU rozklad vyjadruje štvorcovú maticu ako súčin dolnej (L – lower) a hornej (U – upper) trojuholníkovej matice. Dá sa ukázať, že matice L a U sú produktom Gaussovho eliminačného procesu (GEM) [1].
(6) |
podobne ako pri prvej faktorizácii môžeme vypočítať sústavu lineárnych rovníc aj pomocou LU rozkladu
(7) |
determinanty a inverzné matice sa dajú vypočítať aj pomocou LU rozkladu
(8) |
V Matlabe sa LU rozklad vypočíta pomocou príkazu lu
>> H=pascal(3);
>>[L,U]=lu(H)
L =
1.000 0.000 0.000
1.000 0.500 1.000
1.000 1.000 0.000
U =
1.000 1.000 1.000
0.000 2.000 5.000
0.000 0.000 -0.500
Ortogonálna matica (matica s ortonormálnymi stĺpcami) je matica so stĺpcami jednotkovej dĺžky, ktoré sú na seba kolmé, pričom platí
(9) |
Ortogonálny alebo QR rozklad reprezentuje maticu ako súčin ortogonálnej matice Q a hornej trojuholníkovej matice R
(10) |
QR rozklad vypočítame pomocou príkazu qr
>>[Q,R]=qr(H)
Q =
-0.5774 0.7071 0.4082
-0.5774 0.0000 -0.8165
-0.5774 -0.7071 0.4082
R =
-1.7321 -3.4641 -5.7735
0.0000 -1.4142 -3.5355
0.0000 0.0000 0.4082
Mocniny matíc
V článku o maticiach sme sa už výpočtom mocnín matíc. Teraz si ešte v krátkosti zopakujeme niektoré príkazy a využitie inverznej matice pri výpočtoch záporných mocnín. Ak je matica A štvorcová jej kladnú mocninu vypočítame pre celú maticu alebo pre jej jednotlivé prvky nasledujúcimi príkazmi
>>X=A^2;
>>X=A.^2;
>>X=A.^(-2);
Ak je mocnina záporná a matica A regulárna je výhodné mocniť inverznú maticu ku matici A. Mocninu matice môžeme vypočítať aj pomocou spektrálneho rozkladu matice, venuje sa tomu aj časť nasledujúcej kapitoly.
Vlastné čísla
Vlastné čísla λ (eigenvalues, skaláry) a vlastné vektory v (eigenvectors, nenulové vektory) štvorcovej matice A vyhovujú vzťahu
(11) |
Vlastné čísla sa dajú získať pomocou charakteristického polynómu matice avšak pre matice veľkých rozmerov sa neodporúča [1]. Ak vlastné čísla budú na diagonále diagonálnej matice Λ a zodpovedajúce vlastné vektory stĺpce matice V potom dostávame
(12) |
pokial je matica V regulárna dostávame spektrálny rozklad matice A
(13) |
Spektrálny rozklad sa dá využiť pri mocninách matíc [1], pretože matica Λ je diagonálna stačí umocniť prvky na diagonále
(14) |
Matice, ktoré majú násobné vlastné čísla sa nedajú spektrálne rozkladať. Niektoré výpočty v Matlabe nevyužívajú spektrálny rozklad, ale Schur-ovu dekompozíciu
(15) |
kde U je ortogonálna matica a S je horná trojuholníková matica s vlastnými číslami na diagonále (viac v užívateľskej príručke Matlabu pre príkaz schur). Spektrálny rozklad matice dostaneme v Matlabe príkazom eig (matica delta je označená ako D, vlastné čísla sú na jej diagonále)
>>M=[2,3;1,5];
>>[V,D]=eig(M)
V =
-0.9669 -0.6205
0.2550 -0.7842
D =
1.2087 0.0000
0.0000 5.7913
Singulárny rozklad matice
Singulárne číslo (skalár) σ a jemu odpovedajúce singulárne vektory u,v obdĺžnikovej matice A (m,n) vyhovujú vzťahom
(16) |
Ak singulárne čísla dáme na diagonálu matice Σ (m,n) a singulárne vektory budu tvoriť stĺpce dvoch ortogonálnych matíc U (m,m) a V (n,n) potom môžeme vzťah prepísať do tvaru
(17) |
pretože sú U a V ortogonálne matice môžeme vzťah prepísať na
(18) |
tento vzťah reprezentuje singulárny rozklad (SVD – Singular Value Decomposition) matice A. Matlab využíva singulárny rozklad matice na zistenie hodnosti matice pomocou príkazu rank (hodnosť matice je rovný počtu kladných singulárnych čisel matice), ktorý dáva stabilnejšie výsledky ako klasický eliminačný proces (môžu sa vyskytnúť chyby zaokrúhľovania). Singulárny rozklad je v Matlabe realizovaný QR algoritmom [1]. V Matlabe na výpočet spektrálneho rozkladu využijeme príkaz svd (matica sigma je označená ako S)
>>N=[9,4;6,8;2,7];
>>[U,S,V]=svd(N)
U =
-0.6105 0.7174 0.3355
-0.6646 -0.2336 -0.7098
-0.4308 -0.6563 0.6194
S =
14.9359 0.0000
0.0000 5.1883
0.0000 0.0000
V =
-0.6925 0.7214
-0.7214 -0.6925
Lineárna algebra predstavuje jednu z oblastí matematiky napriek tomu je rozsiahla nato, aby sa zmestila do jedného článku, ktorý bol však viac zameraný na funkcie Matlabu. Detailnejší pohľad na lineárnu algebru nájdete v knihe doc. Volaufa [1], ktorá obsahuje aj ďaľšie príklady v Matlabe.
Literatúra
- Volauf, P.: Numerické a štatistické výpočty v Matlabe, Vydavateľstvo STU Bratislava, 2005, ISBN 80-227-2259-6