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