15. Matlab – Lineárna algebra

18. September, 2009, Autor článku: Blaho Michal, MATLAB/Comsol
Ročník 2, číslo 9 This page as PDF 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?

A.X=B \\ X.A=B (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

X=A \backslash B \\ X=B/A (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

A.X=I \\ X.A=I (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

A=R'R (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

Ax=b \\ x=R \backslash (R' \backslash b) (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].

A = L U (6)

podobne ako pri prvej faktorizácii môžeme vypočítať sústavu lineárnych rovníc aj pomocou LU rozkladu

Ax=b \\ x=U \backslash (L \backslash b) (7)

determinanty a inverzné matice sa dajú vypočítať aj pomocou LU rozkladu

det(A)=det(L).det(U) \\ inv(A)=inv(L).inv(U) (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í

Q'Q=1 (9)

Ortogonálny alebo QR rozklad reprezentuje maticu ako súčin ortogonálnej matice Q a hornej trojuholníkovej matice R

A=Q 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

Av=\lambda v (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

AV=V \Lambda (12)

pokial je matica V regulárna dostávame spektrálny rozklad matice A

A=V \Lambda V^{-1} (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

A^{n}=V \Lambda^{n} V^{-1} (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

A=U S U' (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

Av=\sigma u \\ A'u=\sigma v (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

AV=U \Sigma \\ A'U=V \Sigma (17)

pretože sú U a V ortogonálne matice môžeme vzťah prepísať na

A=U \Sigma V' (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

  1. Volauf, P.: Numerické a štatistické výpočty v Matlabe, Vydavateľstvo STU Bratislava, 2005, ISBN 80-227-2259-6

Napísať príspevok