Matlab - přímé metody, vlastnosti matic

formát čísel:

>> format short  % 4 desetinna mista (default)
>> format long   % 14 desetinnych mist
>> format rat    % zlomky


řešení soustavy A X = B přímými metodami

>> A = [6 3 -2 ; 3 5 -1 ; -1  2  8 ]
>> B = [2 ; -3 ; 1 ]

příkazem Matlabu:

>> X = A \ B

pomocí inverzní matice:

>> A1 = inv(A)
>> X = A1 * B

LU rozklad (řešíme L Y = P B, U X = Y, přičemž P je permutační matice):

>> [L, U, P] = lu(A)

Vlastnosti matic

>> M = [1  2.7 -3; 4  5  1]

hodnost matice:

>> h = rank(M)

normy matice nebo vektoru:

>>   % sloupcova
>> max(sum(abs(M)))
>> norm(M,1)  

>>   % radkova
>> max(sum(abs(M')))
>> norm(M,inf)

>>   % Frobeniova (nekdy nazyvana euklidovska):
>> sqrt(sum(diag(M'* M)))
>> norm(M,'fro')

>>   % spektralni (nekdy nazyvana euklidovska) - max. singularni cislo
>> max(sqrt(eig(M'* M)))
>> max(svd(M))
>> norm(M)     
>> norm(M,2) 


Vlastnosti čtvercových matic

>> A = [0.5 1 ; -1 0 ]

determinant matice:

>> d = det(A)

vlastní čísla matice:

>> lambda = eig(A)         % vlastni cisla
>> alambda = abs(lambda)   % velikost vlastnich cisel
>> sp = max(alambda)       % spektralni polomer
>> sp = max(abs(eig(A)))   % alternativa, chceme-li jen spektralni polomer

můžeme si napsat funkci pro spektrální poloměr (do souboru sp_rad.m):

function sp = sp_rad(A)
  sp =  max(abs(eig(A)));
end 

nakreslení vlastních čísel:

>> lambda = eig(A);                % vlastni cisla
>> plot(real(lambda),imag(lambda),'r*',0,0,'bo')
>> r = sp_rad(A);                  % vypocet spekt. polomeru pomoci funkce def. vyse
>> r = max(abs(eig(A)));           % alternativne
>> axis([ -r-1  r+1  -r-1  r+1 ])  % uprava rozsahu os
>> axis square                     % stejne meritko na obou osach

stopa matice:

>> tr = sum(diag(A))

ověření, zda A je symetrická, tedy A = AT, neboli rozdíl matice a matice transponované je nulová matice:

>> norm(A-A')       % = 0

ověření, zda A je pozitivně definitní (pouze pro malé matice):
- například ověříme, že všechny minory jsou kladné:

>> A(1,1)           % > 0 
>> det(A(1:2,1:2))  % > 0
>> det(A(1:3,1:3))  % > 0
>> ...
>> det(A)           % > 0

- nebo, pro symetrickou matici, ověříme, že všechna vlastní čísla jsou reálná a kladná:

>> eig(A)           % > 0