Sunteți pe pagina 1din 31

7.

ALGEBR NUMERIC LINIAR


7.1. Analiz matriceal
De notat c, n MATLAB, indicii matricei ncep ntotdeauna cu 1 i nu cu
0; de aici rezult c elementele matricei A(1, 1), B(1, 1) i C(1, 1) corespund
mulimilor matematice (elementele matricelor) A(0, 0), B(0, 0) i C(0,0).
7.1.1. Urma unei matrice
Urma unei matrice A, A Ur , este, prin definiie, suma elementelor de pe
diagonala principal,

=
=
n
i
i i
a
1
,
Ur A .
Urma produsului a dou matrice este independent de ordinea factorilor,
) ( Ur ) ( Ur
,
1
,
1
,
1
,
1
A B B A = = =

= = = =
j i
n
i
i j
n
j
i j
n
j
j i
n
i
b b b a .
De meionat c urma unei matrice este nealterat de o transformare
ortogonal i c aceasta este totodat i suma valorilor proprii ale lui A.
n Matlab, se calculeaz cu funcia trace(A), care este similar cu
sum(diag(A)).
Considernd matricea A=[1 2 3; 4 5 6; 7 8 9], atunci urma acesteia,
calculat cu trace(A), este 15, la fel ca i cu sum(diag(A)).
7.1.2. Calculul normelor vectorilor i ale matricelor
Conceptele de norm vectorial, norm matriceal i raz spectral a unei
matrice, joac un rol important n analiza matriceal.
Prin definiie, norma euclidian sau lungimea vectorului x este
( )
1/2
n
1 i
2
i
1/2
x
|
|

\
|
= =

=
x x x
T

unde x i x
T
sunt, prin definiie:
[ ]
n
T
n
x x x
x
x
x
... ,
...
2 1
2
1
=
(
(
(
(

= x x .
Normele vectorilor i ale matricelor se calculeaz cu funcia norm, apelat
cu una dintre sintaxele:
Algebr numeric liniar 139
n=norm(X) sau n=norm(X,p),
unde p=1, 2, inf, sau fro.
Pentru o matrice, X, sunt definite urmtoarele tipuri de norme:
norma 1 a lui X, respectiv cea mai mare sum a elementelor de pe
coloan, N j 1 cu , x max X
N
1 k
jk
|

\
|
=

=
, calculat cu funcia
norm(X,1), care este egal cu max(sum(abs((X))));
norma 2, sau raza spectral a lui X, definit prin aceea c toate valorile
proprii (reale, pentru matrice real simetrice i complexe, pentru matrice
real nesimetrice) se nscriu ntr-un cerc, de raz egal cu maximul
valorilor proprii n modul, ntr-un plan (real sau complex), cu centrul n
origine, respectiv ( ) N i 1 cu , max X X
i
2
= = , unde este raza
spectral, iar
i
sunt valorile singulare, calculat cu funcia norm(X)
sau norm(X,2), egal cu max(svd(X));
norma infinit a lui X, sau cea mai mare sum a elementelor de pe
linie, respectiv N k 1 cu , x max X
N
1 j
jk

|
|

\
|
=

=

, calculat cu
funcia norm(X,inf), egal cu max(sum(abs((X')))) ;
norma Frobenius, calculat cu funcia norm(X,fro), definit cu
relaia
2
NN
2
22
2
11
N
1 k j,
jk
F
... x X x x x + + + =
|
|

\
|
=

=
i egal cu
sqrt(sum(diag(X'*X))).

Pentru cazul matricelor rare (sparse) sau foarte mari, se recomand
utilizarea funciei normest(X), n locul funciei norm(X), sau norm(X,2). Aceast
funcie se poate utiliza sub forma [nrm,cnt] = normest(X,tol), unde nrm norma,
cnt numrul de iteraii, iar tol eroarea relativ, avnd valoarea implicit 10
-6
.
Considernd matricea X=[1 2 3; 4 5 6; 7 8 9], atunci: norm(X)= 16.8481;
norm(X,1)=18; norm(X,2)= 16.8481; norm(X,'fro')= 16.8819; norm(X,inf)=24, iar
[nrm,cnt] = normest(X,1e-9) conduce la nrm=16.8481, cnt=4.

Pentru un vector V, pot fi definite urmtoarele tipuri de norme:
norma, norma 2 sau lungimea vectorului definit de relaia
2
N
2
2
2
1
2
N
1 k
k
2
V ... V V V V + + + = |

\
|
=

=
se calculeaz cu
funcia norm(V) sau norm(V,2) ;
norma de gradul p sau lungimea de ordinul p, definit cu relaia
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 140
p
p
N
p
2
p
1
p
p
N
1 k
k
p
V ... V V V V + + + = |

\
|
=

=
, se calculeaz cu
norm(V,p), egal cu sum(abs(V).^P)^(1/P);
valoarea maxim n modul, respectiv ( ) N k 1 , V max V
k
=

,
este calculat cu funcia norm(V,inf) ;
valoarea minim n modul, respective ( ) N k 1 , V min V
k
=

,
este calculat cu funcia norm(V,-inf) .

Considernd vectorul V=[-10 12 0 11 15 25], atunci:
norm(V)=34.8569; norm(V,2)= 34.8569; norm(V,3)= 28.4630; norm(V,inf)=25;
norm(V,-inf)=0.
7.1.3. Determinantul unei matrice
O matrice ptrat este o matrice care are numrul de linii egal cu numrul
de coloane. Dac tipul su este {n, n}, se spune c matricea este de ordinul n. Fie o
matrice ptrat de ordinul n, [ ]
ij
a A = , cu elementele n R (sau C).

Determinantul format cu elementele maticei [ ]
ij
a A = , pstrndu-le
poziia, se numete determinantul matricei A i se noteaz cu
[ ]
ij ij
a A a A det , det , , , fiind calculat n Matlab cu funcia det(A).
Considernd matricele A=[1 2; 3 4] i B=[1 2 3; 4 5 6; 7 8 9],
determinanii acestora sunt: det(A)=-2 i det(B)=0.

O matrice B se numete singular dac det(B)=0, iar dac determinantul
det(A)0, matricea A este nesingular (sau nedegenerat).
Determinantul produsului a dou matrice ptrate, de ordinul n, este egal cu
produsul determinanilor celor dou matrice,
det(A*B)=det(B*A)=det(A)*det(B) .
7.1.4. Rangul unei matrice
Considerm o matrice A, dreptunghiular, mxn i p, un numr natural,
astfel nct,
n m p ,
. Dac alegem din A, p linii
p
i i i ,..., ,
2 1
i p coloane
p
j j j ,..., ,
2 1
, oarecare, obinem, nlturnd elementele matricei care nu se gsesc
pe liniile i coloanele alese, o matrice ptrat, M, de ordinul p
(
) , min( , ,..., 2 , 1 n m q q p = =
,
Algebr numeric liniar 141
(
(
(
(
(

=
p p p p
p
p
j i j i j i
j i j i j i
j i j i j i
a a a
a a a
a a a
M
...
... ... ... ...
...
...
2 1
2 2 2 1 2
1 2 1 1 1
.
n modul acesta, cu liniile i coloanele matricei A se poate forma un numr
de
( ) ( )! ! ! !
! !
p n p p m p
n m
C C
p
n
n
m

= matrice de ordinul p. Determinanii acestor
matrice se numesc determinanii de ordinul p ai matricei A. Dac 0 A , atunci nu
toi aceti determinani sunt nuli.
Se observ c, dac toi determinanii de ordinul s sunt nuli, atunci toi
determinanii de ordin superior lui s sunt nuli, deoarece, dezvoltnd determinanii
de ordinul s+1, de exemplu, dup o linie sau coloan, coeficienii elementelor
respective sunt determinani de ordinul s, care sunt nuli. Dac 0 A , exist un
numr ) , min( n m q r = , astfel nct cel puin un determinant al matricei A, de
ordinul r, este diferit de zero i toi determinanii de ordin r+1 sunt nuli. Numrul
r, care ndeplinete aceast condiie, se numete rangul matricei A. Dac A=0,
rangul matricei A este zero, r=0.
Calculul rangului se efectueaz cu funcia r=rank(A) sau r=rank(A,tol),
unde tol este eroarea relativ, avnd valoarea implicit 10
-6
sau tol = max(size(A))
* norm(A) * eps.
De exemplu, dac A=[2 3 1 4 -1; 1 4 -2 1 6; 1 -1 3 3 -7], atunci
rangul matricei este rank(A)=2. Toi determinanii de ordinul trei sunt nuli,
deoarece, dac n matricea A scdem linia a doua din linia nti, obinem linia a
treia. Aceast operaie, fiind efectuat n toi determinanii de ordinul trei, arat c
toi sunt nuli. Rangul matricei este doi, deoarece matricea format cu primele dou
linii i coloane, [2 3; 1 4], are determinantul diferit de zero.
Rangul matricei este egal cu ordinul determinantului.
7.1.5. Matricea transpus
Considernd [ ]
ij
a A = , o matrice n m , deci n j m i ,... 2 , 1 , ,..., 2 , 1 = = ,
atunci, prin definiie, matricea care se obine din A, prin nlocuirea liniilor cu
coloanele de acelai rang, se numete matricea transpus i se noteaz cu A
t
sau A
T
,
iar n Matlab se calculeaz i se noteaz cu A' sau transp(A). Pentru transpusa
neconjugat, se utilizeaz transpose(A).
Din definiie rezult c [ ]
ji t
a A = , m i n j ,..., 2 , 1 , ,... 2 , 1 = = . Dac,
B = [ 2 3 1 4 -1
1 4 -2 1 6
1 -1 3 3 -7 ],
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 142
atunci:
B' = [ 2 1 1
3 4 -1
1 -2 3
4 1 3
-1 6 -7].
O matrice ptrat A, se spune c este simetric dac elementele simetrice
fa de diagonala principal sunt egale,
ji ij
a a = i c este antisimetric dac
ji ij
a a = . Prin urmare:
o matrice simetric este egal cu transpusa sa, deoarece
ji ij
a a = ;
ntr-o matrice antisimetric, elementele de pe diagonala principal sunt
nule, 0 =
ii
a (pentru a putea satisface definiia
ji ij
a a = ) ;
transpusa unei matrice antisimetric este opusa matricei iniiale, A'= -A;
dac A'= -A atunci, matricea A este antisimetric ;
traspusa transpusei este matricea iniial, (A') ' = A ;
transpusa sumei a dou matrice este suma transpuselor, (A+B) '=A'+B' ;
transpusa produsului a dou matrice este (A*B) '= B' * A';
orice matrice ptrat poate fi considerat ca suma a dou matrice, una
simetric, cealalt antisimetric, iar aceast descompunere este unic.

Dat fiind o matrice, cu un numr oarecare de linii sau coloane, ale crei
elemente sunt numere reale sau complexe, conjugata sa este matricea format prin
nlocuirea fiecrui element cu imaginarul su conjugat. n matematica clasic, se
utilizeaz notaia A
*
.
Matricea adjunct a unei matrice este conjugata transpusei sale. Conjugata
unei matrice este obinut prin nlocuirea fiecrui element cu imaginarul su
conjugat.
n general, un numr complex, Z, este scris ca suma dintre o parte real i
una imaginar,
Z = x + i*y = real(Z) + i*imag(Z)
astfel nct, conjugatul lui Z este:
conj(Z) = x - i*y = real(Z) - i*imag(Z)
De exemplu, pentru matricea X,
X = [1+i 2-i ; 3+2*i 1-2*i]
conjugata este,
conj(X) = [1 - i 2 + i; 3 2 i 1 + 2 i].
Se numete matrice real, o matrice care are toate elementele numere reale.
innd seama de cele anterioare, rezult c o matrice real este egal cu
conjugata sa i, reciproc, dac o matrice este egal cu conjugata sa, matricea este
real.
Matricea conjugat are urmtoarele proprieti evidente:
Algebr numeric liniar 143
conj(X+Y)=conj(X)+conj(Y) - conjugata sumei a dou matrice este egal
cu suma conjugatelor;
conj(X*Y)=conj(X)*conj(Y) conjugata produsului este produsul
conjugatelor;
transpose(conj(X))= conj(transpose(X)) i totodat conj(X')= (conj(X))';
conj(conj(X)) = X.

Matricea adjunct a unei matrice este conjugata transpusei sale. Dac,
X =[ 1.0000 + 1.0000i 2.0000 - 1.0000i
3.0000 + 2.0000i 1.0000 - 2.0000i ]
transpusa acestei matrice (neconjugat) este,
XT=transp(X) = [ 1.0000 + 1.0000i 3.0000 + 2.0000i
2.0000 - 1.0000i 1.0000 - 2.0000i ]
iar conjugate transpusei este,
Xa=conj(XT)=conj(transp(X)) = X' = [ 1.0000 - 1.0000i 3.0000 - 2.0000i
2.0000 + 1.0000i 1.0000 + 2.0000i ]
care este matricea adjunct, notat X
+
, care se vede c n Matlab este: X
+
= X'.

Din proprietile matricelor transpuse i ale matricelor conjugate, rezult
proprietile:
(X+Y)' = X'+Y' ;
(X*Y)' = Y'*X' ;
(X')' = X .

Se numete matrice hermitic sau autoadjunct, o matrice ptrat care este
egal cu adjuncta sa, Z
+
=Z = Z' . n particular, matricea hermitic are toate
elementele de pe diagonala principal reale, iar cele simetrice fa de aceast
diagonal sunt imaginar conjugate.
Urmtoarele matrice sunt hermitice sau autoadjuncte:
Z=[ 1 1-i ; 1+i -3], ZZ=[3 -i 2+3*i ; i 0 5 ; 2-3*i 5 1].
Principalele proprieti ale matricelor hermitice sunt:
dac o matrice hermitic are toate elementele reale, matricea este simetric,
adic a
ij
= a
ji
;
suma a dou matrice hermitice este tot o matrice hermitic;
produsul a dou matrice hermitice este tot o matrice hermitic, dac i
numai dac, cele dou matrice sunt permutabile.
7.1.6. Matricea invers i pseudoinvers
Pentru o matrice ptrat [ ]
ij
a A = , de ordinul n, nesingular, deci det(A)0,
matricea de ordinul n este
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 144
(

=
(
(
(
(
(
(
(

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
ji
nn n n
n
n
det
det
...
det det
... ... ... ...
det
...
det det
det
...
det det
2 1
2 22 12
1 21 11
1
,
unde
ji
A este complementul algebric al lui
ij
a , din determinantul [ ]
ij
a i se numete
matricea invers a matricei A, fiind notat cu A
-1
. Notarea matricei inverse cu A
-1
este
justificat prin faptul c, n compunerea transformrilor A i A
-1
, acestea se comport
ca puterile unui numr real sau complex, dac convenim s notm transformarea
unitate i, cu A
0
,
A
-1
*A = A*A
-1
= A
0
= I = [1] ,
respectiv,
inv(A)*A = A*inv(A) = ones(size(A)) .
Principalele proprieti ale matricei inverse sunt:
A
-1
*A = A*A
-1
= A
0
= I = [1] - produsul dintre o matrice i inversa sa este
egal cu matricea unitate;
reciproc, dac avem dou matrice, astfel nct A*B = I =[1], atunci una
este inversa celeilalte;
det(A
-1
) = det(inv(A)) = 1/det(A) - inversa unei matrice proprii este tot o
matrice proprie;
(A
-1
)
-1
= inv(inv(A)) = A - inversa matricei inverse este matricea iniial;
(A*B)
-1
= B
-1
* A
-1
, respectiv inv(A*B) = inv(B)*inv(A)

Fie matricele,
A = [ cos (pi/3) -sin (pi/3) ; sin (pi/3) cos (pi/3) ];
B= [ 1 -1 i ; 0 1 0 ; i 3 1] ,
transpusele sunt,

A' = [ cos (pi/3) sin (pi/3) ; -sin (pi/3) cos (pi/3) ]
B' = [ 1 0 -i ; -1 1 3 ; -i 0 1 ]
iar inversele sunt,
inv(A) = ( A
-1
) = [ cos (pi/3) sin (pi/3) ; -sin (pi/3) cos (pi/3) ]
inv(B) = ( B
-1
) = [0.5 0.5 + 1.5 i - 0.5 i ; 0 1 0; - 0.5 i -1.5-0.5 i 0.5 ]
de unde se verific uor c A*inv(A) = [1] i B*inv(B) = [1] .
Instruciunea inv(X), returneaz un mesaj de avertizare, dac matricea X
este singular sau band.

Pseudoinversa sau inversa generalizat, Moore-Penrose, a unei matrice,
se calculeaz cu funcia pinv, apelat cu sintaxa:
B=pinv(A),
Algebr numeric liniar 145
sau
B=pinv(A,tol),
unde tol este tolerana, care are valoarea implicit (cnd lipsete la apelare),
tol = max(size(A)) * norm(A) * eps,
cu eps, depinznd de acurateea calculelor n virgul mobil.
Se utilizeaz, de regul, pentru rezolvarea sistemelor de ecuaii liniare, n
sensul celor mai mici ptrate.
Matricea B este de aceleai dimensiuni ca i matricea A' i verific patru
condiii:
ABA = A
BAB = B
AB este hermitic
BA este hermitic.
De exemplu, calculul pseudoinversei matricei A=[1 2 3; 4 5 6; 7 8 9],
conduce la,
B = pinv(A) =
[ -0.6389 -0.1667 0.3056
-0.0556 0.0000 0.0556
0.5278 0.1667 -0.1944 ],
A*B*A = A =
[ 1.0000 2.0000 3.0000
4.0000 5.0000 6.0000
7.0000 8.0000 9.0000 ]
B*A*B = B =
[ -0.6389 -0.1667 0.3056
-0.0556 0.0000 0.0556
0.5278 0.1667 -0.1944 ]
iar A*B i B*A sunt matrice hermitice i n acest caz sunt egale ntre ele fiind,
[ 0.8333 0.3333 -0.1667
0.3333 0.3333 0.3333
-0.1667 0.3333 0.8333 ].

Dac matricea A este ptrat i nesingular, funcia pinv(A) consum un
timp de calcul mai mare dect inv(A).
Dac matricea A nu este ptrat sau este ptrat i singular, atunci nu
exist invers, inv(A). n acest caz, pinv(A) are unele, dar nu toate, proprieti ale
lui inv(A).
Dac matricea A are mai multe rnduri dect coloane i rangul matricei
este mai mic dect minimul dintre rnduri i coloane, atunci problema celor mai
mici ptrate, de minimizare a norm(A*x-b), nu are soluie unic. Se obin dou
infiniti de soluii date de:
x=pinv(A)*b
i
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 146
y=A\b,
care se disting prin aceea c norm(x) este mai mic dect norma oricrei alte soluii, iar
y are, pe ct posibil, componente diferite de zero.
De exemplu, matricea generat de,
A = magic(8); A = A(:,1:6)
este o matrice de 8-pe-6 care are rank(A) = 3.
A = [ 64 2 3 61 60 6
9 55 54 12 13 51
17 47 46 20 21 43
40 26 27 37 36 30
32 34 35 29 28 38
41 23 22 44 45 19
49 15 14 52 53 11
8 58 59 5 4 62 ]

Termenul liber, din partea dreapt, este:
b = 260*ones(8,1) = [ 260; 260; 260; 260; 260; 260; 260; 260 ].
7.1.7. Baz ortogonal i baz ortonormal
Dup cum se cunoate, doi vectori x, y sunt ortogonali, dac produsul lor
scalar este nul.
nt-un spaiu euclidian, real sau complex, deseori se prefer ca baz un
sistem de vectori,
n
e e e ,..., ,
2 1
, ortogonali doi cte doi , avnd fiecare norma egal
cu 1,
( )

=
j i
j i
e e
j i
daca , 1
daca , 0
, .
Dac numai prima condiie este ndeplinit, se spune c
n
e e e ,..., ,
2 1

formeaz o baz ortogonal. Dac sunt ndeplinite amndou condiiile, baza este
ortonormal.
Cu vectorii unei baze oarecare,
n
u u u ,..., ,
2 1
, se poate construi ntotdeauna o
baz ortonormal,
( )

=
j i
j i
u u
j i
daca , 1
daca , 0
,
iar vectorii bazei sunt ortogonali doi cte doi i au norma ( ) 1 , = =
i i i
u u u .
n Matlab, funcia care realizeaz o baz ortogonal pentru o matrice A
este orth(A). Ea se apeleaz cu sintaxa:
Q=orth(A),
n care numrul de coloane ale lui Q este egal cu rangul matricei A.
Baza ortogonal are proprietatea c Q'*Q = I .

Algebr numeric liniar 147
Obinerea unei baze ortogonale, Z, pentru un spaiu nul al matricei A, prin
descompunerea n valori proprii, se face prin funcia null, apelat prin:
Z = null(A) sau Z=null(A, 'r')
unde r este o baz raional avnd elemente mici ntregi, astfel nct A*Z s aib
elemente neglijabile, size(Z,2) = 1, iar Z'*Z = I.
De exemplu, dac
A=[1 2 3;4 5 6; 7 8 9]
atunci,
z=null(A) = [ -0.4082 ; 0.8165 ; -0.4082 ]
size(z,2)= 1
z'*z = 1
z=null(A,'r') = [ 1 ; -2 ; 1 ]

Descompunerea unei matrice, A, n vederea determinrii rangului, se face
cu funcia rref, apelat cu sintaxa,
[R,jb] = rref(A) su [R,jb] = rref(A,TOL)
unde r=length(jb) este rangul matricei A, A(:,jb) este matricea luat ca baz la
determinarea rangului; R(1:r,jb) este matricea identitate de r x r; x(jb), sunt numrul de
variabile independente; TOL este tolerana impus la determinarea rangului.
Dac A=[1 2 3 4; 5 6 7 8; 9 10 11 12 ; 13 14 15 16; 17 18 19 20]
atunci prin comanda,
[R,jb]=rref(A)
rezult:
R=[ 1 0 -1 -2 ; 0 1 2 3 ; 0 0 0 0 ; 0 0 0 0 ; 0 0 0 0 ]
jb=[ 1 2 ] ; R(1:2,jb) = [ 1 0 ; 0 1 ]
A(:,jb) = [1 2 ; 5 6 ; 9 10 ; 13 14 ; 17 18 ].

Unghiul dintre dou subspaii este calculat cu funcia subspace. Prin
urmare, subspace(A,B) d unghiul dintre coloanele matricei A i matricei B.
Atunci cnd A i B sunt vectori de lungime unitar, atunci subspace(A,B)
este identic cu acos((A'*B).
Dac unghiul este mic, atunci cele dou subspaii sunt practic liniar
dependente. Funcia este util pentru evidenierea diferenelor ce nu sunt cauzate de
fluctuaia erorilor statistice, n dou experimente succesive (A i B), aplicate
aceluiai fenomen fizic.
7.2. Condiionarea unei matrice
Importana cunoaterii condiionrii unei matrice rezid n faptul c
rezultatele obinute prin calcul numeric au ntotdeauna erori de rotunjire, fiind, prin
urmare, soluiile unei probleme perturbate.
Determinarea condiionrii are la baz teoria matematic a perturbaiilor.
Se spune c o funcie f(x) este ru condiionat, dac pentru un x
1,
apropiat de x,
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 148
funcia f(x
1
) difer mult de f(x). Invers, o funcie se spune c este bine condiionat,
dac pentru un x
1
apropiat de x, funcia f(x
1
) este apropiat de f(x). Din pcate,
termenii apropiai sunt calitativi i, pentru a putea fi cuantificai, este necesar
utilizarea numerelor de condiionare.

Numrul de condiionare al unei matrice indic sensibilitatea soluiei unui
sistem de ecuaii liniare i d indicaii despre precizia rezultatelor la inversarea
matricelor i la rezolvarea ecuaiilor liniare. O matrice bine condiionat este o
matrice relativ insensibil la aceste mici perturbaii.

Numrul de condiionare al unei matrice, calculat ca raportul dintre cea mai
mare i cea mai mic valoare singular a acesteia, se determin cu funcia cond,
care se apeleaz cu sintaxa:
c=cond(X,p)
unde c este numrul de condiionare al matricei X, n norma p, care poate fi 1, 2, inf sau
'fro', dup norma calculat, astfel nct, norm(X,p) * norm(inv(X),p).

O funcie mai performant, care calculeaz numrul de condiionare, c,
dup un algoritm din codul de calcul LAPACK, este rcond, care se apeleaz cu
sintaxa:
c=rcond(X).

Estimarea celui mai mic numr de condiionare se realizeaz cu funcia
condest, care se apeleaz cu sintaxa:
c = condest(X).

Dac considerm, iniial, sistemul de ecuaii:

= +
= +
095 . 1 152 . 1
543 . 6 917 . 6 6
2 1
2 1
x x
x x

i un sistem perturbat,

= +
= +
095 . 1 152 . 1
543 . 6 912 . 6 6
2 1
2 1
x x
x x

atunci, cu secvena Matlab,
A1=[6 6.917; 1 1.152]; A2=[6 6.912; 1 1.152]; c1=cond(A1);
c2=cond(A2);
d1=condest(A1);d2=condest(A2);r1=rcond(A1);r2=rcond(A2);
se obine:
c1 = 1.7234e+004, c2 = 3.1875e+016, d1 = 2.0845e+004, d2 = Inf,
r1 = 4.7972e-005, r2 = 0,
de unde rezult c sistemul este ru-condiionat.
Dac se rezolv cele dou sisteme (iniial si perturbat), folosind secvena,
A1=[6 6.917; 1 1.152]; A2=[6 6.912; 1 1.152]; b=[6.543; 1.095];
x1=A1\b; x2=A2\b;
Algebr numeric liniar 149
se obin soluiile:
x1=[ 7.3158 -5.4000] ; x2= [Inf Inf];
de unde se observ diferenele foarte mari ntre acestea, datorate slabei condiionri.
7.3. Generarea unei matrice rare
Generarea unei matrice rare i afiarea coeficienilor se realizeaz cu
funcia sparse, care se apeleaz cu una dintre sintaxele:
S = sparse(A), transform o matrice plin ntr-o form rar, nlturnd
toate elementele egale cu zero, iar dac o matrice S este deja rar, atunci
sparse(S) napoiaz tot S ;
S = sparse(i,j,s,m,n,nzmax), folosete vectorii i, j i s pentru a genera
matricea de m x n, de forma S(i(k),j(k)) = s(k), cu spaii alocate pentru
nzmax, diferit de zero ; vectorii i, j, i s au toi aceeai lungime, dar sunt
mai mici dect 2^31-1, iar oricare element din s, ce apare i n i sau j, este
adugat ;
S= sparse(i,j,s,m,n), folosete nzmax = length(s) ;
S =sparse(i,j,s), folosete m = max(i) i n = max(j), calculai nainte s fie
nlturate zerourile, deci una dintre coloanele [i j s] poate fi [m n o] ;
S= sparse(m,n) sau sparse([],[],[],m,n,0), genereaz ultima matrice rar, de
forma m x n.

Aplicarea operatorilor specifici Matlab (aritmetici, logici, etc.) pe matricea
rar, detemin apariia unei matrice rare, iar n cazul unor combinaii de matrice
rare i ntregi, se va obine o matrice ntreag.
Excepiile apar atunci cnd rezultatul este o structur rar; de exemplu,
A.*S este cel puin o matrice rar ca i S.
De exemplu,
S = sparse(1:n,1:n,1)
genereaz o reprezentare rar, de forma n x n, fa de
S = sparse(eye(n,n))
care va genera o matrice complet, n x n, cu multe dintre elementele sale egale cu zero.

Utilitatea matricelor rare se relev la matrice foarte mari, ca de exemplu,
cazul unei matrice B = sparse(10000,10000,pi), cu care poate opera Matlabul, pe
cnd cu matricea complet, full(B), nu poate opera, datorit memoriei insuficiente,
aceasta necesitnd 800 megabytes.

Reasamblarea unei matrice rare se face prin succesiunea de instruciuni,
[i,j,s] = find(S); [m,n] = size(S); S = sparse(i,j,s,m,n);
sau, dac ultima linie i coloan are elemente diferite de zero,
[i,j,s] = find(S); S = sparse(i,j,s).
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 150
7.4. Ecuaii liniare
Fie sistemul de ecuaii liniare:
1 1 1 1 11
... ... b x a x a x a
n n j j
= + + + +
...........................................................
i n in j ij i
b x a x a x a = + + + + ... ...
1 1

...........................................................
m n mn j mj m
b x a x a x a = + + + + ... ...
1 1

de m ecuaii liniare cu n necunoscute, m i n fiind dou numere naturale oarecare.
Dac notm,
;
....
....
B ;
....
....
X ;
... ...
.. .......... ..........
... ...
.. .......... ..........
... ...
A
1 1
1
1
1 1 11
|
|
|
|
|
|

\
|
=
|
|
|
|
|
|
|

\
|
=
|
|
|
|
|
|
|

\
|
=
m
i
n
j
mn mj m
in ij i
n j
b
b
b
x
x
x
a a a
a a a
a a a

atunci sistemul de ecuaii liniare se poate scrie, matriceal, sub forma: A*X = B.
Un ir ordonat de numere,
0 0
2
0
1
,..., ,
n
x x x , care satisfac relaiile:
; ,..., 2 , 1 ; ... ...
0 0 0
1 1
m i b x a x a x a
i n in j ij i
= = + + + +
se numete soluie a sistemului. Numerele
0 0
2
0
1
,..., ,
n
x x x , care verific sistemul, se mai
numesc i rdcinile sistemului.
Dac sistemul admite o soluie unic, se numete compatibil determinat, iar
dac admite cel puin dou soluii, se numete compatibil nederminat. Dac
sistemul nu are soluii, este incompatibil.
n cazul n care sistemul este compatibil nedeterminat, poate avea o
infinitate simpl, dubl, ... , multiplu de ordinul r de soluii (sau un numr finit, n
numere ntregi).

Deoarece nu toi
ij
a sunt nuli, rangul matricei A, cu m linii i n coloane,
format cu coeficienii necunoscutelor, va fi 1 p . Presupunem c unul dintre
determinanii de ordinul p, diferit de zero, este chiar
pp p p
p
p
p
... a a a
... a a a
... a a a
2 1
2 22 21
1 12 11

..... .......... ..........


=
Algebr numeric liniar 151
ceea ce este ntotdeauna posibil s se realizeze, schimbnd, la nevoie, att ordinea
ecuaiilor, ct i indicii necunoscutelor.
Determinantul 0
p
, se numete determinantul principal al sistemului.
Evident, exist i ali determinani de ordinul p diferii de zero, ns toi
determinanii de ordinul p+1, p+2, ..., p+q, cu q=min(m,n) ce se pot forma cu
liniile i coloanele matricei A, sunt nuli.
Putem ntotdeauna aranja necunoscutele i schimba ordinea ecuaiilor,
astfel nct
p
s fie format cu coeficienii primelor p necunoscute, luate din
primele p ecuaii.
Ecuaiile care intervin n formarea determinantului principal se numesc
ecuaii principale, iar necunoscutele
p
n
x x x ,..., ,
2 1
, cu ale cror coeficieni se
formeaz determinantul principal, se numesc necunoscute principale.
Celelalte ecuaii i necunoscute se numesc secundare.
Se numete determinant caracteristic, un determinant de ordinul p+1 din
A, obinut prin completarea determinantului principal,
p
, cu o coloan format
din termenii liberi corespunztori ai ecuaiilor principale i cu o linie format cu
coeficienii necunoscutelor principale i cu termenul liber al unei ecuaii secundare,

( )
1 1 , 1 1 , 1
2
1
1
1
....
...


+ + +
+

=
p p p
p
p
p
b a a
b
b
b
D , ,
( )
m m m
p
p
p m
p
b a a
b
b
b
D
1 1
2
1
1
....
...

+
.

Dac n m p < (sau m n p < ) vom putea forma p m determinani,
numii determinani caracteristici.
Conform teoremei lui Rouch, un sistem liniar de m ecuaii cu n
necunoscute este compatibil, dac i numai dac, toi determinanii caracteristici
sunt nuli.
Dac toi determinanii caracteristici sunt nuli, dar:
n>p, exist n-p necunoscute secundare, care apar ca parametri n soluiile
gsite ,
0 0
2
0
1
,..., ,
p
x x x , i avem
p n
soluii, iar sistemul este compatibil
nedeterminat;
n=p, nu avem necunoscute secundare, iar sistemul este compatibil
determinat;
m=n=p, nu exist determinani caracteristici (formal putem spune c sunt
nuli),
sistemul este compatibil determinat, cu soluie unic.
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 152
Dac cel puin unul dintre determinanii caracteristici este diferit de zero,
sistemul este incompatibil sau imposibil, respectiv nu are soluii.

Analiza soluiilor unui sistem de ecuaii liniare se poate face mai comod
aplicnd teorema Kronecker-Capelli, care se bazeaz, n esen, pe rangul
matricelor A i B. Dac notm p=rang A i q=rang (A|B), atunci, pentru ca
sistemul de m ecuaii cu n necunoscute s fie complet compatibil, este suficient ca:
rang A = rang (A|B),
( ) ;
... ...
.. .......... ..........
... ...
... ... .......... ..........
... ...
B | A ;
... ...
.. .......... ..........
... ...
.. .......... ..........
... ...
A
1
1
1 1 1 11
1
1
1 1 11
|
|
|
|
|
|
|
|

\
|
=
|
|
|
|
|
|
|

\
|
=
m mn mj m
i in ij i
n j
mn mj m
in ij i
n j
b a a a
b a a a
b a a a
a a a
a a a
a a a

sau n Matlab,
p=rank(A)==rank([A,B]).
Funcia rank se poate apela i sub forma:
p=rank(A,tol),
unde tol este tolerana, care are valoarea implicit (cnd lipsete la apelare),
tol = max(size(A)) * norm(A) * eps,
cu eps depinznd de acurateea calculelor n virgul mobil.

Dac:
m=n=p, sistemul este compatibil determinat, cu soluie unic;
p = q < n, sistemul este compatibil nedeterminat, cu
p n
soluii;
p < q, sistemul este incompabitil sau nedeterminat i nu va avea nici o
soluie.

Una dintre metodele de rezolvare a sistemelor de n ecuaii, cu n
necunoscute, const n mprirea matricelor.
Soluiile unui sistem de ecuaii liniare de forma,
A*X=B
pot fi determinate n Matlab, prin instruciunile:
X=B/A mprirea la dreapta
sau
X=A\B mprirea la stnga.
De meionat c mprirea la stnga este mai rapid dect mprirea la
dreapta. Pentru un sistem de 1000 ecuaii cu 1000 necunoscute, ai crui coeficieni
i termeni liberi sunt numere aleatoare, cu secvena Matlab,
A=rand(1000); B=rand(1000);
tic; X=A\B; ts=toc
tic; X=B/A; td=toc
Algebr numeric liniar 153
s-au obinut, pe un calculator PC 1.7 MHz, timpi: ts=2.614 s i td=2.663 s, n cele dou
variante de mprire, la stnga i la dreapta.

O alt cale de rezolvare a sistemelor de n ecuaii, cu n necunoscute,
const n folosirea matricei inverse.
Deoarece det(A)0, matricea A este nesingular i are deci, o invers A
-1
,

A det
A
1 ji
A
=


calculat n Matlab cu inv(A).
Dac n sistemul, A*X=B, nmulim la stnga cu A
-1
, avem X=A
-1
*B,
respectiv n Matlab, X=inv(A)*B.
Relund acelai sistem, de 1000 ecuaii cu 1000 necunoscute, cu
coeficienii i termenii liberi numere aleatoare, timpul de calcul rezult din,
A=rand(1000); B=rand(1000);
tic; X=inv(A); ti=toc
i, pentru acelai calculator, este ti= 2.1430 s.

O serie de metode de rezolvare a sistemelor de ecuaii sunt cunoscute ca
fiind metode prin triunghiularizare. Din aceast categorie fac parte: factorizarea
Cholesky, factorizarea LU, factorizarea QR etc.
O matrice ptrat A, de forma,


..... .......... ..........


A
2 1
2 22 21
1 12 11
|
|
|
|
|

\
|
=
nn n n
n
n
... a a a
... a a a
... a a a

poate fi descompus sub forma,
A = Ls + D +Us,
cu:

0 ...
... ... ... ... ...
0 0 ... 0
0 0 ... 0 0
Ls
1 2 1
21
|
|
|
|
|

\
|
=
nn n n
a a a
a
;
0 ... 0 0
... ... ... ... ...
0 0 ... 0
0 0 ... 0
D
12
11
|
|
|
|
|

\
|
=
nn
a
a
a
;

0 ... 0 0 0
... ... ... ... ...
... 0 0
... 0
Us
2 23
1 13 12
|
|
|
|
|

\
|
=
n
n
a a
a a a

Matricea Ls, care conine elemente diferite de zero numai sub diagonala
principal, se numete strict inferior triunghiular. Similar, matricea Us, care
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 154
conine elemente diferite de zero doar deasupra diagonalei principale, se numete
strict superior triunghiular. Matricea D este evident diagonal.
O matrice L, definit ca, L=Ls+D se numete inferior triunghiular.

n acest caz, este evident c det(L)=det(D) i, dac det(D)0, atunci exist
inversa matricei L, respectiv L
-1
, care este de forma,
L
-1
= L' + D'
i este de asemenea inferior triunghiular.
Asemntor, dac U=Us+D i dac U
-1
exist, ea este superior
triunghiular.
Pentru un sistem liniar neomogen, L*x = b, avnd matricea L a
coeficienilor sistemului inferior triunghiular,

...
... ... ... ... ...
0 ... 0
0 ... 0 0
L
3 2 1
22 21
11
|
|
|
|
|

\
|
=
nn n n n
l l l l
l l
l
,
...
x
2
1
|
|
|
|
|

\
|
=
n
x
x
x
,
...
b
2
1
|
|
|
|
|

\
|
=
n
b
b
b
,
componentele vectorului x, soluiile sistemului, pot fi gsite prin substituie nainte,
respectiv:
( ) . 1,2,..., ;
1
x ;
1
x ; x
1
1
1 21 2
22
2
11
1
1
n m x l b
l
x l b
l l
b
m
j
j mj m
mm
m
=
|
|

\
|
= = =

=

Un caz mai complicat, dar i mai instructiv, este cazul n care matricea A
este produsul unei matrice inferior triunghiulare L, cu o matrice superior
triunghiular U. Prin urmare, avem
A*x = L*U*x = b.

Pentru rezolvare, se introduce un vector auxiliar definit ca
z=U*x
ceea ce face ca ecuaia iniial s devin
L*z = b,
care este de forma anterioar, avnd necunoscutele:
( ) . 1,2,..., ;
1
z ;
1
z ; z
1
1
1 21 2
22
2
11
1
1
n m z l b
l
z l b
l l
b
m
j
j mj m
mm
m
=
|
|

\
|
= = =

=

Odat vectorul z cunoscut, ecuaia z=U*x (care este identic cu U*x=z)
avnd,

... 0 0 0
... ... ... ... ...
... 0
...
U
2 23 22
1 13 12 11
|
|
|
|
|

\
|
=
nn
n
n
u
u u u
u u u u
,
...
x
2
1
|
|
|
|
|

\
|
=
n
x
x
x
,
...
z
2
1
|
|
|
|
|

\
|
=
n
z
z
z
,
Algebr numeric liniar 155
din care, din ultima linie, rezult,

11
n
x
u
z
n
= ,
i n general,
1. ,..., 1 , ;
1
1
=
|
|

\
|
=

+ =
n n m x u z
u
x
n
m j
j mj m
mm
m

Se remarc faptul c, n acest caz, se utilizeaz o substituie nainte i apoi
o substituie napoi.
Cazuri particulare ale acestui caz general sunt atunci cnd matricea
sistemului este o matrice tridiagonal, o matrice tridiagonal simetric sau o matrice
multidiagonal.
O matrice tridiagonal este, prin definiie, o matrice care are dou diagonale
secundare adiacente diagonalei principale, toate cu elemente diferite de zero. Se
ntlnete, de regul, la aproximaia difuziei multigrupale monodimensionale.
Matricea tridiagonal simetric are elementele simetrice nepozitive i se mai
numete i matrice Stieltjes.
O matrice ptrat de ordinul n, multidiagonal, este o matrice cu un numr
m, impar de diagonale, m<n, de elemente diferite de zero. O astfel de matrice poate
fi adus la forma unei matrice quasitridiagonale, prin utilizarea unor submatrice
adecvate.

Factorizarea Cholesky este o metod de rezolvare a unui sistem de ecuaii
liniare, de forma A*x=B, cu matricea A pozitiv definit.
Un sistem dat, avnd forma matriceal,
A*x-B=0
prin metoda Cholescky, se nlocuiete cu un sistem echivalent,
R'*R *x=B
n care R este o matrice unic, superior triunghiular, nesingular, care satisface relaia:
A=R'*R.
Factorizarea Cholesky utilizeaz numai matricea superior triunghiular, iar
cea inferior triunghiular este considerat ca fiind transpusa complex conjugat a
celei superioare, astfel c, A este o matrice hermitic.
Funcia Matlab, care factorizeaz Cholesky, este chol, apelat cu sintaxa:
R=chol(A),
care necesit ca A s fie pozitiv definit, altfel returnnd numai un mesaj de eroare.
Exemple de matrice pozitiv definite sunt,
A1=[3 2+i 3-i;-2-i 8 5; 6 3+i 7]; A2=pascal(5)
pentru care,
R1 = [ 1.7321 1.1547 + 0.5774i 1.7321 - 0.5774i
0 2.5166 1.3245 + 0.6623i
0 0 1.2140 ],
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 156
R2 = [ 1 1 1 1 1
0 1 2 3 4
0 0 1 3 6
0 0 0 1 4
0 0 0 0 1 ].
Factorizarea Cholesky, pentru coeficienii binomului lui Pascal, i
aranjeaz ntr-o matrice superior triunghiular.
Dac matricea nu este pozitiv definit, ca de exemplu,
A3=[1 2 3 4;5 6 7 8; 9 10 11 12; 13 14 15 16]
atunci se utilizeaz apelarea funciei chol sub forma,
[R3,p]=chol(A3),
care conduce la,
R3 = [ 1.0000 2.0000 3.0000
0 1.4142 0.7071
0 0 1.2247 ]
p=4,
astfel nct:
R'*R = A(1:q,1:q) , q = p-1.
Rezolvarea unui sistem de ecuaii,
A*x=B,
se realizeaz cu secvena Matlab:
R=chol(A); x=R\R\b.

Pentru o matrice X, factorizarea incomplet Cholesky, aplicabil pentru
matrice rare i factorizarea Cholesky infinit este realizat, n Matlab, cu una dintre
sintaxele:
R = cholinc(X,dtol), n care, dtol este un scalar nenegativ, ce evideniz
tolerana permis la factorizarea incomplet, iar dac dtol=0,, se realizeaz
factorizarea complet;
R = cholinc(X,opt), n care, opt poate fi dtol, michol (0 pentru factorizarea
Cholesky nemodificat i 1 pentru modificat ) sau rdiag (0, n mod normal
sau 1, cnd se foreaz R ca o matrice cu zero pe diagonala principal);
R = cholinc(X,'0'), care realizeaz o factorizare incomplet Cholesky, a
unei matrice rare simetric pozitive, care nu garanteaz existena lui R i
putnd aprea un mesaj de eroare;
[R,p] = cholinc(X,'0'), evit mesajul de eroare i dac p=0, atunci R exist,
altfel R'*R corespunde cu X , pentru primele q=p-1 linii i coloane;
R = cholinc(X,'inf'), care produce o factorizare Cholosky infinit, ceea ce
presupune c, la ntlnirea unui pivol egal cu zero, atunci se completeaz
Inf pe diagonal, iar pe rnduri 0, iar X este pozitiv semidefinit, astfel c,
la ntlnirea unui pivot negativ, acesta se nlocuiete cu Inf.

Modificarea factorizrii Cholesky se realizeaz cu funcia cholupdate.
Algebr numeric liniar 157
Dac R=chol(A) este factorizarea Cholesky inial a matricei A, atunci
R1=cholupdate(R,x) returneaz o matrice superior triunghiular, rezultat din
factorizarea matricei A + X*X', cu X un vector coloan. Funcia lucreaz numai cu
matrice pline, nu rare.

Prin factorizarea LU (lower-upper), o matrice ptrat este descompus sub
forma produsului a dou matrice triunghiulare: una inferior triunghiular, matricea
L, cu elemente 1 pe diagonala principal i cealalt, matricea U, superior
triunghiular.
Factorizarea LU a unei matrice se realizeaz n Matlab cu funcia lu, care
se apeleaz cu una dintre sintaxele:
[L,U]=lu(X), cnd se returneaz o matrice superior triunghiular U i o
matrice inferior triunghiular permutat L, astfel nct X=L*U;
[L,U,P]=lu(X), cnd se returneaz o matrice superior triunghiular U, o
matrice inferior triunghiular permutat L i permutarea matriceal P, astfel
nct L*U=P*X.

Factorizarea LU este utilizat n Matlab pentru obinerea inversei unei
matrice, cu funcia inv i pentru calculul determinantului, cu funcia det.
S considerm sistemul A*x=b unde,
A = [ 1 1 2 1 1 2 b = [ 0
3 -1 -2 1 -2 1 -6
-1 1 3 -1 4 2 6
1 2 -1 2 -1 -3 1
-2 -3 1 -2 -3 -1 6
1 -2 4 2 -1 4 ] -1 ].

Prin factorizarea LU,
[L1,U1] = lu(A) sau [L,U,P] = lu(A)
obinem:
L1 = [ 0.3333 -0.3636 0.5283 0.5143 0.8676 1.0000
1.0000 0 0 0 0 0
-0.3333 -0.1818 0.4717 1.0000 0 0
0.3333 -0.6364 -0.1132 -0.5429 1.0000 0
-0.6667 1.0000 0 0 0 0
0.3333 0.4545 1.0000 0 0 0 ],

U1 = [ 3.0000 -1.0000 -2.0000 1.0000 -2.0000 1.0000
0 -3.6667 -0.3333 -1.3333 -4.3333 -0.3333
0 0 4.8182 2.2727 1.6364 3.8182
0 0 0 -1.9811 1.7736 0.4717
0 0 0 0 -1.9429 -2.8571
0 0 0 0 0 1.7647 ],

SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 158
L = [ 1.0000 0 0 0 0 0
-0.6667 1.0000 0 0 0 0
0.3333 0.4545 1.0000 0 0 0
-0.3333 -0.1818 0.4717 1.0000 0 0
0.3333 -0.6364 -0.1132 -0.5429 1.0000 0
0.3333 -0.3636 0.5283 0.5143 0.8676 1.0000 ],

U = [ 3.0000 -1.0000 -2.0000 1.0000 -2.0000 1.0000
0 -3.6667 -0.3333 -1.3333 -4.3333 -0.3333
0 0 4.8182 2.2727 1.6364 3.8182
0 0 0 -1.9811 1.7736 0.4717
0 0 0 0 -1.9429 -2.8571
0 0 0 0 0 1.7647 ],

P = [ 0 1 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 1 0 0 0
0 0 0 1 0 0
1 0 0 0 0 0 ].

Se observ c L1*U1 este identic cu A, iar L*U este identic cu P*A..
Inversa matricei A, calculat cu funcia inv, este egal cu produsul
inverselor, respectiv:
inv(A) = inv(U1)*inv(L1) i inv(P*A) = inv(U)*inv(L).
De asemenea, pentru determinani, sunt valabile relaiile:
det(A) = det(L1)*det(U1) i det(P*A) = det(L)*det(U).
Rezolvarea sistemelor de ecuaii A*x = b, prin factorizarea Lu, presupune
soluionarea succesiv a sistemelor:
y=L1\b i x=U1\y,
rezultnd,
x = [2 -1 3 -2 1 -3 ].
Pentru o matrice X, factorizarea incomplet LU, luinc, aplicabil pentru
matrice rare, este realizat n Matlab cu una dintre sintaxele:
[L,U,P] = luinc(X,dtol) sau [L,U] = luinc(X,dtol) , n care dtol este un
scalar nenegativ, ce evideniaz tolerana permis la factorizarea LU
incomplet, aplicabil fiecrei coloane a lui X, iar dac dtol=0, se
realizeaz factorizarea LU complet;
[L,U,P] = luinc(X,opt) sau [L,U] = luinc(X,opt) , n care opt poate fi dtol,
milu (0, pentru factorizarea LU nemodificat i 1, pentru modificat) sau
udiag (0, n mod normal sau 1, cnd se foreaz U ca o matrice cu zero pe
diagonala principal);
[L,U] = luinc(X,'0'), care realizeaz o factorizare incomplet LU a unei
matrice rare, simetric pozitive, fr a da permutarea;
Algebr numeric liniar 159
[L,U,P] = luinc(X,'0'), prezint i matricea de permutare i se bazeaz pe
algoritmul de pivotare parial.

Factorizarea QR este o descompunere a unei matrice, A, ca produsul
dintre o matrice ortonormal, Q, cu o matrice superior triunghiular, R, astfel nct
A = Q*R.
Factorizarea QR se utilizeaz pentru rezolvarea sistemelor de ecuaii liniare
cu mai multe ecuaii dect necunoscute. Cea mai bun soluie a unor astfel de
sisteme, A*x = b, n sensul celor mai mici ptrate, este calculat cu x = A\b, care
utilizeaz implicit aceast factorizare.
Prin utilizarea factorizrii QR, cu funcia Matlab qr, soluia este calculat
n doi pai:
y=Q`*b i apoi x=R\y.
Apelarea funciei qr se poate face cu una dintre sintaxele:
[Q,R]=qr(A), returneaz matricea triunghiular superioar R, de aceeai
dimensiune cu A i matricea unitar Q, astfel nct, A = Q*R.
[Q,R,E]=qr(A), returneaz matricea de permutare E, a matricei
superior triunghiulare R, cu elementele diagonalei descresctoare i
matricea unitar Q, astfel nct A*E = Q*R, cu meniunea c, matricea E
are coloanele aranjate n ordinea descrescatoare a abs(diag(R));
[Q,R]=qr(A,0), realizeaz o descompunere economic a matricei A,
care, dac este de mxn, cu m>n, lucreaz numai cu primele n coloane;
[Q,R,E]=qr(A,0), realizeaz o descompunere economic a matricei A,
prezentnd i vectorul de permutare E, avnd coloanele aezate n ordinea
descresctoare a abs(diag(R)), astfel nct Q*R = A(:,E);
R = qr(A), returneaz numai matricea R, care R = chol(A'*A).

Pentru matrice rare, versiunea QR nu permut coloanele.
Soluia sistemului A*x=b, prin metoda celor mai mici ptrate, bazat pe
descompunerea QR, se afl fie ntr-un pas,
x = R\(R'\(A'*b))
fie succesiv,
r = b - A*x
e = R\(R'\(A'*r))
x = x + e;
De exemplu, descompunerea QR a matricei aceleiai matrice A, utilizat la
descompunerea LU, conduce la:
Q = [ -0.2425 0.1866 -0.4555 0.2090 -0.5768 0.5679
-0.7276 -0.3466 0.2364 0.4411 -0.1208 -0.2923
0.2425 0.2666 -0.5238 0.5303 0.0392 -0.5595
-0.2425 0.4133 0.0328 -0.5493 -0.4742 -0.4927
0.4851 -0.5999 0.0671 0.0150 -0.6101 -0.1670
-0.2425 -0.4932 -0.6758 -0.4227 0.2325 -0.0919 ],
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 160
R = [ -4.1231 -0.7276 1.4552 -3.1530 1.2127 -1.4552
0 4.4125 -1.1198 0.6132 3.8260 -2.0530
0 0 -5.6239 -1.1158 -2.5818 -4.5909
0 0 0 -1.8541 2.3748 1.8616
0 0 0 0 1.8936 1.7669 ]
astfel nct soluia se obine prin,
R\(R'\(A1'*b))
sau secvenial,
r = b - A*x ; e = R\(R'\(A'*r)) ; x = x + e;
rezultnd x = [2 -1 3 -2 1 -3 ], la fel ca i prin metoda LU.

Modificarea factorizrii QR iniiale se realizeaz cu funcia qrupdate, care
se apeleaz [Q1,R1] = qrupdate(Q,R,U,V), care returneaz factorizarea matricei
A + U*V', iar matricele U i V sunt de tipul coloan.

tergerea unei coloane din factorizarea QR se realizeaz cu funcia
qrdelete, care se apeleaz cu sintaxa:
[Q,R]=qrdelete(Q0,R0,j),
unde Q0 i R0 sunt factorizrile iniiale, [Q0,R0]=qr(A), iar Q i R sunt factorizrile
obinute dup ce din matricea A, a fost tears coloana j, respectiv elementele A(:,j).

Inserarea unei coloane n factorizarea QR se realizeaz cu funcia
qrinsert, care se apeleaz cu sintaxa:
[Q,R]=qrdelete(Q0,R0,j),
unde Q0 i R0 sunt factorizrile iniiale, [Q0,R0]=qr(A), iar Q i R sunt factorizrile
obinute dup ce, n matricea A, a fost inserat coloana j, respectiv elementele A(:,j),
dup ultima coloan a matricei iniiale.

Gsirea planului de rotaie al unei matrice X, de 2 x 2, se realizeaz cu
funcia planerot, apelat sub forma [G,Y]=planerot(X), care returneaz dou
matrice ortogonale, astfel c Y = G*X i Y(2) = 0.

Realizarea factorizrii QZ, pentru valori proprii generalizate, se
realizeaz cu funcia qz. Apelarea funciei se face cu:
[AA, BB, Q, Z, V] = qz(A,B); pentru matricele ptrate A i B, produce
matricele quasitriunghiulare superioare AA i BB, matricele unitare Q i
Z, astfel nct Q*A*Z = AA i Q*B*Z = BB, i matricea vectorilor
proprii generalizai, V.

Dac matricele iniiale, A i B, sunt complexe, atunci AA i BB sunt
triunghiulare.

Factorizarea unei matrice la forma Hessenberg, se realizeaz prin funcia
hess. Forma Hessenberg a unei matrice are elementele de sub prima diagonal nule
i aceleai valori proprii, ca matricea original. Dac matricea iniial este
Algebr numeric liniar 161
simetric sau hermitic, atunci matricea Hessenberg are form tridiagonal. Se
apeleaz:
H=hess(A) aduce la forma Hessenberg, H, matricea iniial A;
[H,P]=hess(A) calculeaz o matrice unitar P i o matrice Hessenberg
H, astfel nct A = P*H*P' i P'*P = eye(size(P)).

Dac considerm matricea X, de test a valorilor proprii, de 3 x 3,
X = [ -149 -50 -154 ; 537 180 546 ; -27 -9 -25 ]
forma Hessenberg are elementul (3,1) zero,
hess(X) = [ -149.0000 42.2037 -156.3165
-537.6783 152.5511 -554.9272
0 0.0728 2.4489 ]

Factorizarea unei matrice la forma Schur, se realizeaz cu funcia schur.
Descompunerea Schur produce o matrice quasitriunghiular T i o matrice unitar
U, astfel nct, X = U*T*U' i U'*U = eye(size(U)), n care matricea iniial X,
trebuie s fie ptrat. Sintaxele de apelare sunt: [U,T] = schur(X), T = schur(X).
Pentru aceeai matrice X, de mai sus, descompunera Schur este:
schur(X) = [ 1.0000 7.1119 815.8706
0 2.0000 -55.0236
0 0 3.0000 ].
Pentru matricea X complex, forma Schur este superior triunghiular, cu
valorile proprii pe diagonal.

Transformarea matricei de ieire de forma Schur, din real n complex,
pentru o matrice de intrare X real, se face cu funcia rsf2csf, apelat sub forma:
[U,T]=rsf2csf(U0,T0),
unde U0 i T0 sunt matricele Schur iniiale din [U0,T0]=schur(X), iar U, T
sunt cele finale, complexe, respectiv o matrice superior triunghiular, cu valorile
proprii pe diagonal.

Aplicarea metodei celor mai mici ptrate la rezolvarea unui sistem de
ecuaii liniare omogene, cu restricii nenegative, se realizeaz n Matlab de ctre
funcia lsqnonneg. Aceasta se apeleaz cu una dintre sintaxele:
X=lsqnonneg(C,d), cu C i d reale, care returneaz un vector X, ce
minimizeaz norm(C*X-d), atunci cnd X >= 0;
X=lsqnonneg(C,d,x0), utilizeaz x0 (x0>0) ca punct de plecare al soluiei;
X=lsqnonneg(C,d,x0,tol) utilizeaz o toleran impus la aflarea soluiei;
altfel aceasta este 10*max(size(C))*norm(C,1)*eps, cu eps=2.2204e-016.

Aplicarea metodei celor mai mici ptrate la rezolvarea unui sistem de
ecuaii liniare omogene, cu covarian oarecare, se realizeaz n Matlab de ctre
funcia lscov.
Aceasta se apeleaz cu una dintre sintaxele:
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 162
X=lscov(A,B,V), returneaz vectorul X, ca soluie a ecuaiei A*X=B+E,
unde E este o funcie de distribuie normal, cu media zero i covaraina V,
iar matricea A este de dimensiuni mxn, cu m>n, astfel nct, vectorul X
minimizeaz (A*X-B)'*inv(V)*(A*X-B) i soluia sistemului este dat de
X=inv(A'*inv(V)*A)*A'*inv(V)*B;
[X,DX]=lscov(A,B,V), returneaz erorile standard ale lui X n DX, erori
calculate cu relaiile
mse=B'*(inv(V)-inv(V)*A*inv(A'*inv(V)*A)*A'*inv(V))*B./(m-n)
dx = sqrt(diag(inv(A'*inv(V)*A)*mse)).

7.5. Vectori i valori proprii
n foarte multe aplicaii, apar situaii n care se pune problema
determinrii acelor valori ale unei constante , pentru care exist soluii nebanale
ale unui sistem de ecuaii liniar omogen, de forma:
1 1 1 1 11
... ... x x a x a x a
n n j j
= + + + +
...........................................................
i n in j ij i
x x a x a x a = + + + + ... ...
1 1

...........................................................
n n nn j nj n
x x a x a x a = + + + + ... ...
1 1

de n ecuaii liniare cu n necunoscute, avnd matricea A simetric.

Dac un vector 0 x are proprietatea c x x = A , se spune c x
reprezint o direcie proprie a transformrii A, iar numrul (real sau complex),
este o valoare proprie a acestei transformri.
Denumirea de direcie proprie a transformrii este justificat prin aceea c,
dac x satisface relaia x x = A , aceeai proprietate o va avea orice vector x k ,
unde k este un numr oarecare, real sau complex. Acest fapt este o consecin a
proprietilor transformrii liniare, ( ) ( ) x k x k x A k x k = = = A .
O astfel de problem este cunoscut ca o problem cu valori i vectori
proprii. Valorile lui , pentru care exist soluii nebanale, se numesc valori
proprii sau caracteristice ale matricei A a coficienilor sistemului, iar soluiile
vectori corespunztoare se cunosc sub denumirea de vectori proprii sau
caracteristici ai matricei A.
Forma matriceal a sistemului x x = A este echivalent cu,
( ) 0 I - A = x
unde I, este matricea identitate, calculabil n Matlab cu eye(A). Aceast matrice este
denumit uneori i unitate, are toate elementele de pe diagonala principal egale cu 1,
iar celelalte nule. Se mai noteaz i cu [1] sau [e], avnd elementele,
Algebr numeric liniar 163

=
j i
j i
e
ij
dac , 1
dac , 0

Acest sistem omogen posed soluii nebanale, dac i numai dac,
determinantul matricei coeficienilor se anuleaz, adic matricea I - A este
singular,
( ) 0
...
... ... ... ...
...
...
I - A
2 1
2 22 21
1 12 11
=

= =


nn n n
n
n
a a a
a a a
a a a
P
Aceast condiie necesit ca s fie o rdcin a ecuaiei algebrice de mai
sus, cunoscut sub denumirea de ecuaie caracteristic a transformrii A sau
ecuaie secular. Fiind de gradul n n , va avea n rdcini, fie distincte, fie unele
dintre ele confundate. Aceste rdcini sau soluii
n
,..., ,
2 1
, sunt valorile proprii
ale matricei sau transformrii A. Polinomul ( ) P , se numete polinomul
caracteristic al transformrii liniare A.
Corespunztor cu fiecare valoare proprie
k
, exist cel puin un vector
soluie
k
x , a sistemului x x = A , determinat pn la o constant arbitrar.
n continuare, se enun principalele teoreme i proprieti ale valorilor
proprii.
Dac o transformare liniar A, are n direcii proprii, reprezentate prin
vectorii
n
u u u ,..., ,
2 1
, liniar independeni, aceti vectori pot fi luai ca baz a
spaiului, iar matricea transformrii A, n aceast baz, va avea forma diagonal,
[ 0 ,..., 0 ,
1
; 0 ,..., , 0
2
; ... ;
n
,..., 0 , 0 ].
Reciproc, dac matricea transformrii A, n baza
n
u u u ,..., ,
2 1
, are form
diagonal, atunci
n
,..., ,
2 1
sunt valorile proprii, iar
n
u u u ,..., ,
2 1
reprezint
direciile proprii corespunztoare.
Dac valorile proprii
n
,..., ,
2 1
sunt distincte, direciile proprii
corespunztoare sunt reprezentate prin vectorii
n
u u u ,..., ,
2 1
, liniar independeni.
Valorile proprii ale unei transformri liniare autoadjuncte (hermitice), sunt
reale.
La dou valori proprii distincte, ale unei transformri autoadjuncte,
corespund dou direcii proprii ortogonale.
ntr-un spaiu euclidian cu n dimensiuni (matricea A de nxn), o
transformare autoadjunct (hermitic) are n direcii proprii, ortogonale, dou cte
dou. Vectorii
n
e e e ,..., ,
2 1
, care reprezint cele n direcii proprii ale transformrii
A, ortogonale dou cte dou, pot fi luai de lungime unitate,
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 164
( )

=
j i
j i
e e
j i
pentru , 1
pentru , 0
, . Drept consecin, matricea A, fa de aceast baz are
forma diagonal, [ 0 ,..., 0 ,
1
; 0 ,..., , 0
2
; ... ;
n
,..., 0 , 0 ].
Un caz particular de matrice hermitic l formeaz matricele simetrice
reale. n acest caz, transformarea are n direcii proprii ortogonale, dou cte dou i
valorile proprii reale. Transformarea se va reprezenta printr-o matrice care poate fi
adus la forma diagonal. Pe diagonala principal, n noua matrice, vor figura
valorile proprii, nu ntotdeauna distincte.
Valorile proprii ale transformrilor unitare au modulul egal cu 1.
Orice transformare unitar ntr-un spaiu euclidian cu n dimensiuni are n
direcii proprii ortogonale, dou cte dou. Matricea transformrii, raportat la
aceste direcii, va avea form diagonal.

n Matlab, calculul valorilor i al vectorilor proprii ai unei matrice ptrate
se realizeaz cu funcia eigs, care se apeleaz cu una dintre sintaxele:
E=eigs(A) returneaz un vector E, care conine valorile proprii ale
matricei ptrate A;
[V,D]=eigs(A) returneaz o matrice diagonal D, care conine valorile
proprii ale matricei A i o matrice V, modal, ale crei coloane sunt
vectorii proprii, astfel nct A*V = V*D;
[V,D] = eigs(A,'nobalance') returneaz valorile i vectorii proprii, fr a
executa o balansare, deoarece dac matricea conine elemente mici,
comparabile cu erorile de rotunjire, balansarea le scaleaz, fcndu-le la
fel de semnificative ca celelalte elemente ale matricei originale i, acest
fapt, ar conduce ,n final, la vectori proprii incoreci.

n cazul matricelor nesimetrice de ordinul n, pentru care A
T
A (sau n
Matlab A'A), dac valorile proprii sunt distincte, atunci exist n vectori proprii,
liniar independeni asociai.
Dac matricea are numai valori proprii de ordinul nti (valorile proprii
sunt distincte), atunci vectorii proprii sunt independeni. Dac vectorii proprii nu
sunt independeni, atunci matricea original este neregulat.
Dac valorile proprii ale unei matrice nesimetrice de ordin n nu sunt toate
distincte, atunci setul de vectori proprii asociai poate s nu fie de rang n. n cazul
n care vectorii proprii ai matricei A nesimetrice nu formeaz un set complet, este
totui posibil s gsim un set complet de ali vectori, denumii vectori principali,
care mpreun cu setul vectorilor proprii, vor determina un set complet de vectori.
Dac multiplicitatea unei rdcini este k, avem n-k+1 vectori proprii i nu putem
gsi mai mult dect k-1 vectori principali independeni.
i pentru matrice nesimetrice exist ntotdeauna o matrice Jordan, aproape
diagonal (avnd valoarea proprie multipl
k
, pe diagonala principal i 1, pe
diagonala adiacent superioar).
Algebr numeric liniar 165
Dac toate valorile proprii ale matricei A sunt pozitive, matricea A se
numete pozitiv definit. Invers, dac toate valorile proprii ale matricei A sunt
negative, matricea A se numete negativ definit.

Valorile i vectorii proprii generalizai determin soluiile nebanale ale
ecuaiei:
x B x = A
unde A i B sunt matrice ptratice de ordinul n, iar este un scalar.
Valorile lui , care satisfac ecuaia, se numesc valori proprii generalizate
i valorile x, corespunztoare, sunt vectorii proprii generalizai.
Dac B este o matrice nesingular, det(B)0, adic matrice iversabil,
problema calculului valorilor i al vectorilor proprii se reduce la o problem
standard de valori proprii, prin nlocuirea lui A cu B
-1
*A, dearece ecuaia este
echivalent cu:
x x = .A B
-1
.
Calculul vectorilor i valorilor proprii generalizate se realizeaz cu funcia
eig, apelat cu sintaxa:
V=eig(A) returneaz un vector V, care conine valorile proprii
generalizate;
[V,D] = eig(A,B) produce o matrice diagonal D, care conine valorile
proprii ale matricei A i o matrice V, modal, ale crei coloane sunt
vectorii proprii, astfel nct A*V = B*V*D;
[V,D] = eig(A,B,'chol') se aplic la matricele A, B, simetrice, utiliznd
factorizarea Cholesky, pentru B;
[V,D] = eig(A,B,'qz') se aplic la matricele A, B, utiliznd factorizarea
QZ.

De exemplu, considernd A=[ -2 1 0 ; 1 -2 1; 0 1 -2], atunci
[V,D]=eig(A), conduce la:
V = [ 0.500 -0.707 -0.500 ; -0.707 0.000 -0.707; 0.500 0.707 -
0.500]
D=[ -3.41 0 0; 0 -2.00 0 0 0 -0.59].

Pentru calculul valorilor proprii generalizate se utilizeaz funcia eig, care
permite redarea unui set de ase valori proprii generalizate i, n plus, se poate
utiliza i n cazul matricelor mari i/sau rare.

Transformarea matricelor de ieire, V i D, ale funciei eig(X), cu X real,
din forma complex diagonal n forma real, se realizeaz cu funcia cdf2rdf,
apelat sub forma [V,D]=cdf2rdf(V,D). n forma complex diagonal, matricea D
are valori proprii complexe sub diagonal. n form real, valorile proprii
complexe formeaz un bloc diagonal de 2 x 2.

Analiza inial a acurateei determinrii valorilor proprii se realizeaz cu
SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 166
funcia balance, apelat cu:
[T,B] = balance(A),
unde T i B sunt transformrile de similaritate, astfel c B = T\A*T, i normele pe linii
i coloane s fie egale. Matricea T este o matrice diagonal de permutare.

Calculul valorilor singulare ale unei matrice se realizeaz cu funcia svd,
fiind i un mijloc sigur de determinare a rangului unei matrice. Funcia svd se
apeleaz cu una dintre sintaxele:
S1=svd(X), cnd se returneaz un vector S1, care conine valorile
singulare ale matricei X;
[U,S,V]=svd(X), care returneaz o matrice diagonal S, cu aceleai
dimensiuni ca X, avnd elementele diagonale nenegative (care sunt i
valorile singulare), n ordine descresctoare i matricele unitare U i V,
astfel nct X= U*S*V' ;
[U,S,V]=svd(X,0), realizeaz un calcul mai rapid al valorilor singulare,
considernd, n cazul unei matrice X, de m x n, cu m>n, numai primele n
coloane, pentru U i S de n x n.

Descompunerea n valori singulare a matricei X=[1 2;3 4;5 6;7 8] se poate
realiza cu
S1=svd(X) ; [U,S,V]=svd(X) ; [U0,S0,V0]=svd(X,0);
rezultnd:
S1 = [ 14.2691 ; 0.6268];
U = [ -0.1525 -0.8226 -0.3945 -0.3800
-0.3499 -0.4214 0.2428 0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 0.0407 ]
S = [ 14.2691 0 ; 0 0.6268 ; 0 0; 0 0 ]
V = [ -0.6414 0.7672 ; -0.7672 -0.6414 ]
U0 = [ -0.1525 -0.8226 ; -0.3499 -0.4214 ; -0.5474 -0.0201; -0.7448
0.3812 ]
S0 = [ 14.2691 0 ; 0 0.6268 ] ; V0 = [ -0.6414 0.7672 ; -0.7672 -
0.6414 ]

Calculul valorilor singulare generalizate se realizeaz cu funcia gsvd.
Funcia gsvd se apeleaz cu relaia
[U,V,X,C,S] = gsvd(A,B),
care returneaz matricele unitare U i V ale matricei, de regul, ptrate X i matricele
diagonale nenegative C i S, astfel nct:
A = U*C*X'
B = V*S*X'
C'*C + S'*S = I.
Matricele A i B trebuie s aib acelai numr de coloane, dar pot avea
Algebr numeric liniar 167
numr de linii (rnduri) diferite. Dac A este de m x p i B de n x p, atunci U este
de m x m, V este de n x n i X este de p x q, unde q=min(m+n,p).
Funcia gsvd apelat SIGMA = gsvd(A,B) returneaz vectorul valorilor
singulare generalizate, adic sqrt(diag(C'*C)./diag(S'*S)).

Pentru manipularea valorilor i a vectorilor proprii ai unor matrice mari sau
rare, calculate cu eigs, se utilizeaz funcia svds, n locul funciei svd.

Calculul coeficienilor unui polinom, avnd date rdcinile, se realizeaz
cu funcia poly, care se apeleaz cu sintaxele:
c=poly(r) cnd returneaz un vector linie, c, coninnd coeficienii
polinomului, n ordinea descresctoare a puterilor, iar r este un vector ce
conine rdcinile polinomului;
c=poly(A) returneaz coeficienii c, n ordinea descresctoare, ai
polinomului caracteristic al matricei A, de tipul n x n .

Calculul coeficienilor unui polinom, la care se cunosc valorile proprii, se
realizeaz cu funcia polyeig.

Calculul numrului de condiionare, innd seama de valorile proprii ale
unei matrice, se obine cu funcia condeig, care se apeleaz frecvent,
[V,D,s] = condeig(A)
care este echivalent cu: [V,D] = eig(A); s = condeig(A).

7.6. Funcii de matrice
Exponeniala unei matrice iniiale ,X, se calculeaz cu funcia expm.
Calculul se face utiliznd aproximaia Pade, iar apelarea cu Y=expm(X), Y fiind
matricea exponenial a lui X. Dac X are un set de vectori proprii V, cu valorile
proprii corespondente D, atunci:
[V,D]=eig(X)
expm(X)=V*diag(exp(diag(D)))/V.
De menionat c, exponeniala unei matrice, funcia expm(X), este
diferit de funcia exp(X), care calculeaz element cu element.
Sunt disponibile trei variante de calcul:
Y=expm1(X), care este identic cu expm, iar calculul se face cu
aproximaia Pade;
Y=expm2(X), la care calculul exponenialei este cel clasic, prin serii
Taylor, dar carculul este lent i cu erori;
Y=expm3(X), calculul se efectueaz prin intermediul vectorilor i
valorilor proprii i diagonalizare, dar poate da erori dac matricea X nu
are un set de vectori proprii liniar independeni.

SISTEME DE PROGRAMARE PENTRU MODELARE I SIMULARE 168
Considerm matricea X= [ 1 1 0 ; 0 0 2 ; 0 0 -1 ]. Aplicnd diversele
funcii de calcul ale exponenialei, obinem:
exp(X) = [ 2.7183 2.7183 1.0000
1.0000 1.0000 7.3891
1.0000 1.0000 0.3679 ],
expm(X) = [ .7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679 ].
Pentru acest caz, toate varianteleexpm1, expm2, expm3, conduc la acelai
rezultat.
Logaritmul unei matrice ,X, se calculeaz cu funcia logm(X) i este inversa
funciei expm(X). Dac X are valori proprii negative, atunci rezultatul este complex.
Dac logaritmul matricei nu se calculeaz cu suficient precizie, se d un mesaj de
eroare. Pentru a evita mesajul de eroare, se prefer apelarea funciei sub forma,
[L,esterr] = logm(A),
care returneaz eroarea rezidual egal cu norm(expm(L)-A)/norm(A).
Dac X este real simetric sau hermitic complex, atunci are log(X).
Unele matrice, ca de exemplu A=[0 1 ; 0 0], nu au logaritm, nici real i nici
complex i, prin urmare, funcia log(A) nu returneaz nimic.
Pentru majoritatea cazurilor,
logm(expm(X)) = X = expm(logm(X)).
Calculele se efectueaz dup algoritmul Parlett, care utilizeaz
descompunerea (factorizarea) Schur.
Radicalul unei matrice A este calculat de funcia sqrtm. Apelat sub
forma X=sqrtm(A), aceasta calculeaz radicalul matricei A, astfel nct X*X = A.
Matricea X este unic, dac valorile proprii ale prii reale nu sunt negative. Dac o
valoare proprie a prii reale este negativ, atunci rezultatul este complex.
Dac matricea A este singular, aceasta poate s nu aib matrice radical i,
n acest caz, se d un mesaj de eroare. Apelat cu dou argumente, [X,
RESNORM] = sqrtm(A), nu d nici un mesaj de eroare, ci returneaz reziduu
norm(A-X^2,'fro')/norm(A,'fro').
Apelat cu trei argumente de ieire,
[X, ALPHA, CONDEST] = sqrtm(A),
returneaz factorul de stabilitate, ALPHA i numrul de condiionare, CONDEST, al
matricei. Reziduu norm(A-X^2,'fro')/norm(A,'fro') este aproximat de N*ALPHA*EPS,
iar norma relativ Frobenius, a erorii lui X este aproximat de
N*ALPHA*CONDEST*eps, unde N = max(size(A)).
Funcia general de evaluare a unei matrice, A, este funm i este apelat
sub forma:
F=funm(A,fun),
unde fun poate fi expm, logm, sqrtm sau o alt funcie intern, ca de exemplu sin,
introdus ca funcie handler, @.