Špeciálne jazykové prostriedky počítačov - SJPP

7. Matice a lineárna algebra

Základné vlastnosti maticových funkcií sú:

Prehľad týchto funkcií zobrazí príkaz help matfun.

7.1. Príkazy na analýzu vlastnosti matíc

Funkcia Opis
det determinant matice
null nulové zobrazenie matice
orth ortogonalizacia matice
rank počet lineárne nezávislých riadkov
trace suma diagonálnych prvkov matice

7.1.1. Determinant a operácie s prvkami matice

Príklad 7.1: Výpočet determinantu
>> A = [4 -2 1;-1 5 6;2 0 5];
det(A)
ans =
     56
Príklad 7.2: Súčet diagonálnych prvkov
>> B = [1 0 2;2 3 4;4 6 8];
trace(B)
ans =
     12
Príklad 7.3: Počet lineárne nezávislých riadkov matice
>> rank(B)
ans =
     2

7.1.2. Nulové zobrazenie a ortogonalizácia matice

Príkazom null(A) je možné získať takú maticu Q, pre ktorú platí:

  1. Súčin transponovanej a matice Q sa rovná jednotkovej matici, Q'*Q=I
  2. Súčin matíc A a Q je rovný nulovej matici A*Q=0

Ak taká matica Q neexistuje, funkcia vráti [].

Pod pojmom ortogonalizácia matice A t.j. použitím príkazu orth(A) rozumieme získanie takej matice Q, pre ktorú platí:

  1. Súčin matíc Q' a Q sa rovná jednotkovej matici, Q'*Q=I
  2. Stĺpce sa menia v tom istom intervale ako stĺpce matice A
  3. Počet stĺpcov je daný počtom nezávislých riadkov matice A
Príklad 7.4: Nulové zobrazenie - existuje matica Q
>> A = [1 -2;-3 6];
>> Q = null(A)
Q  =
    0.8944
    0.4472
% Spätná kontrola
>> Q'*Q
ans =
    1.0000
>> A*Q
ans =
     0
     0
Príklad 7.5: Nulové zobrazenie - neexistuje matica Q
>> B = [1 2;3 5];
>> Q = null(B)
Q  =
   Empty matrix: 2-by-0
Príklad 7.6: Ortogonalizácia matice - riadky matice sú nezávislé
>> A = [1 2 -3;3 5 2;4 6 1];
>> Q = orth(A)
Q =
   -0.1806    0.9505   -0.2527
   -0.6298   -0.3091   -0.7126
   -0.7555    0.0305    0.6545
% Spätná kontrola
>> Q'*Q
ans =
    1.0000    0.0000    0.0000
    0.0000    1.0000    0.0000
    0.0000    0.0000    1.0000
Príklad 7.7: Ortogonalizácia matice - riadky matice sú závislé
>> B = [4 2 -3;1 -2 2;2 -4 4];
>> Q = orth(B)
Q =
    0.4939    0.8695
   -0.3889    0.2209
   -0.7777    0.4417
% Spätná kontrola
>> Q'*Q
ans =
    1.0000    0.0000
    0.0000    1.0000
top

7.2. Príkazy pre riešenie sústavy lineárnych rovníc

Na riešenie soustavy lineárnych rovníc, ktorá je prevedená do maticového tvaru (Ax = b), môžeme použiť okrem operátora \ aj inverznú maticu.

Príkaz Opis
inv inverzná matica
pinv pseudoinverzná matica

Príkaz Y = pinv(A) vracia maticu, pre ktorú platí:

  1. je rozmerov ako A'
  2. A*Y*A=A; Y*A*Y=Y
  3. Y, A*Y a Y*A sú Hemiltovské matice
Príklad 7.8: Inverzná matica
>> A = [1 5 2;4 -2 1;-3 3 2];
>> B = inv(A)
B =
    0.1400    0.0800   -0.1800
    0.2200   -0.1600   -0.1400
   -0.1200    0.3600    0.4400
% Spätná kontrola
>> A*B
ans =
    1.0000    0.0000         0
   -0.0000    1.0000    0.0000
    0.0000   -0.0000    1.0000
Príklad 7.9: Pseudoinverzná matica
>> C = [1 0 -0.04;0 1 0.2];
>> B = pinv(C)
B =
    0.9985    0.0077
    0.0077    0.9616
   -0.0384    0.1920
% Spätná kontrola 
>> C*B*C
ans =
    1.0000    0.0000   -0.0400
    0.0000    1.0000    0.2000
>> B*C*B
ans =
    0.9985    0.0077
    0.0077    0.9616
   -0.0384    0.1920
>> C*B
ans =
    1.0000    0.0000
    0.0000    1.0000
Príklad 7.10: Maticová rovnica Ax = b
>> A = [5 8 9; 1 -2 3;2 -5 3];
>> b = [48;6;1];
>> x = inv(A)*b
x =
    1.0000
    2.0000
    3.0000
top

7.3. Rozklady matice na vlastné a singulárne hodnoty

Príkaz Opis
eig rozklad matice na vlastné hodnoty a vlastné vektory
svd singulárny rozklad
Príklad 7.11: Rozklad matice na vlastné hodnoty
>> A = [1 5 2;4 -2 1;-3 3 2];
>> eig(A)
ans =
  -5.0766          
   3.0383 + 0.7859i
   3.0383 - 0.7859i
Príklad 7.12: Rozklad matice na vlastné hodnoty a vlastné vektory
>> [vektor, hodnota] = eig(A)
vektor =
   0.4445   0.6998             0.6998          
  -0.7414   0.4647 - 0.0120i   0.4647 + 0.0120i
   0.5027   -0.4485 + 0.3049i  -0.4485 - 0.3049i

hodnota =
  -5.0766        0                  0          
        0   3.0383 + 0.7859i        0          
        0        0             3.0383 - 0.7859i

7.3.1. Singulárny rozklad matice

Na singulárne hodnoty je možné rozložiť maticu A pomocou príkazu [U,S,V] = svd(A), kde S je diagonálna matica a U, V sú také matice, aby bol splnený vzťah U*S*V' = A.

Príklad 7.13: Celý rozklad
>> A = [1 5 2;4 -2 1;-3 3 2];
>> [U,S,V] = svd(A)
U =
    0.6265    0.6963   -0.3503
   -0.4509    0.6904    0.5657
    0.6357   -0.1965    0.7465

S =
    7.0082         0         0
         0    4.6389         0
         0         0    1.5380

V =
   -0.4401    0.8724   -0.2125
    0.8478    0.3258   -0.4185
    0.2959    0.3643    0.8830
% Spätná kontrola 
>> U*S*V'
ans =
    1.0000    5.0000    2.0000
    4.0000   -2.0000    1.0000
   -3.0000    3.0000    2.0000
Príklad 7.14: Výpis iba prvkov diagonály matice
>> svd(A)
ans =
    7.0082
    4.6389
    1.5380
top

7.4. Úlohy

  1. Vyvorte maticu C = [2 5 -3;-1 4 7;5 4 8] a zistite:
    • determinant matice
    • súčet diagonálnych prvkov
    • inverznú maticu
    • počet nezávislých riadkov matice
  2. Vyvorte maticu B = [2 8 1;1 4 7;5 2 6] a určte ortogonalizáciu matice
  3. Urobte singulárny rozklad matice D = [5 -1 3;2 7 6;-2 0 5]
top