Documente Academic
Documente Profesional
Documente Cultură
04 Capitolul IV PDF
04 Capitolul IV PDF
CAPITOLUL IV - MATRICE
101
Petru Florin Gavril Capitolul IV - Matrice
Noiunea de matrice:
Fie M = 1, 2, m, N = 1, 2, n mulimea primelor m respectiv n numere naturale
nenule. Vom nota cu C, aa cum am obinuit, mulimea numerelor complexe i fie E C.
Definiia 4.1.2
Numim matrice de tipul (m, n) cu elemente din E o funcie A : M N E, astfel
nct perechii ordonate (i, j) i corespunde elementul a ij E,:
A(i, j) = aij E, () (i, j) M N.
Reprezentarea n mod natural a unei matrice este un tablou bidimensional cu m linii i n
coloane se face astfel:
a11 a12 ... a1n
a21 a22 ... a2 n
A= (3)
... ... ... ...
a ... amn
m1 am 2
Datorit notaiei (3), n loc de matrice de tipul (m, n) se mai spune matrice cu m linii i n
coloane. Numerele aij se numesc elementele matricii A; i reprezint linia, iar j reprezint
coloana n care este situat elementul a ij al tabloului A.
De multe ori matricea A se mai noteaz i astfel:
A = aij 1im sau A = aij i1,...m (3)
1 j n j 1,...n
Restricia funciei A la mulimea elementelor de forma (i, 1), (i, 2), (i, n) definete linia
de rang i a matricei. De fapt, linia de rang i a matricei este determinat de irul de
elemente ai1, ai2 , ain, i 1, 2, m.
n mod analog, restricia funciei A la mulimea elementelor de forma (1, j), (2, j), (n, j),
unde j 1, 2, n, definete coloana de rang j a matricei A.
O matrice de tipul (m, n) are m*n elemente.
Noiunea de matrice a fost introdus n studiul sistemelor de ecuaii liniare de ctre
matematicianul englez Arthur Caylay (1821-1895) n anul 1858. El a folosit notaia A =
102
Petru Florin Gavril Capitolul IV - Matrice
Cazuri particulare:
1) Dac n = 1, matricea de tipul (m, 1) se numete matrice coloan i este de
forma:
a11
a 21
A = a31 .
a
m1
2) Dac m = 1, matricea de tipul (1, n) se numete matrice linie i este de forma:
A = (a11, a12 , a13, a1n)
3) Dac m = n, matricea de tipul (m, n) se numete matrice ptratic de ordinul n
i este de forma:
a11 a12 ... a1n
a21 a22 ... a2 n
A= .
... ... ... ...
a ... ann
n1 an 2
Pentru o matrice ptratic de ordin n, sistemul ordonat de elemente
(a11, a22, a33, ann) se numete diagonala principal a matricei A, iar sistemul ordonat de
elemente (a1n, a2n-1, a3n-2, a n1 ) se numete diagonala secundar a matricei A.
Suma de forma a11 + a22 + a33 + + a nn se numete urma matricei A i se
noteaz:
n
Tr(A) = a
i 1
ii .
Vom nota cu M n(C) mulimea tuturor matricelor ptratice de ordin n cu elemente din C i
cu M mn(C) mulimea tuturor matricelor de tip (m, n) cu elemente din C. n mulimea M
n(C) exist i urmtoarele cazuri particulare de matrice:
1) matricea unitate de ordin n de forma:
1 0 0 ... 0
0 1 0 ... 0
In = cu a11 = 1, i = 1, n i aij =0, () i j.
... ... ... ... ...
0 1
0 0 ...
Se mai noteaz astfel:
In = (ij) 1 i , j n , unde ij este simbolul lui Kronecker, definit astfel
103
Petru Florin Gavril Capitolul IV - Matrice
1 daca i j
ij = .
0 daca i j
2) matricea diagonal de ordin n de forma:
a11 0 0 ... 0
0 a22 0 ... 0
A= = (aijij) 1 i , j n .
... ... ... ... ...
0
0 0 ... a nn
104
Petru Florin Gavril Capitolul IV - Matrice
Elementele mulimii M mn(C) se noteaz cu litere mari din alfabetul latin: A, B, C, sau
A, B, C, .
Egalitatea matricelor
Fie A i B M mn(C) dou matrice. Cum A i B sunt funcii A, B : M N C, spunem
c matricele A i B sunt egale dac i numai dac sunt egale ca funcii.
Deci, A = B () i M, j N, A(i, j) = B(i, j).
Folosind notaia (3) corespunztoare unei matrice i presupunnd c:
a11 a12 ... a1n b11 b12 ... b1n
a 21 a 22 ... a 2 n b21 b22 ... b2 n
A= i B =
... ... ... ... ... ... ... ...
a ... a mn b ... bmn
m1 am2 m1 bm 2
Atunci A = B aij = bij, () i M, j N.
105
Petru Florin Gavril Capitolul IV - Matrice
Deci, nmulirea cu scalari din corpul K a matricelor din M mn(K) este o operaie
extern, care asociaz fiecrei perechi (, A) K M mn(K) o matrice A M mn(K).
Observaie:
nmulirea cu scalari din corpul K se poate defini pentru orice matrice, adic este
o operaie peste tot definit pe M (K), unde am notat cu M (K) mulimea tuturor matricelor
cu elemente din corpul K.
Operaia astfel definit are urmtoarele
Proprieti:
1) 1A = A, 1 K este elementul unitate din K.
2) (A) = ()A, unde , K, A M (K).
3) (A + B) = A + B, unde K, A, B M (K).
4) ( + )A = A + A, unde , K, A M (K).
Se constat deci c operaiile de adunare i nmulire a matricelor cu scalari din
corpul K determin pe M mn(K) o structur de spaiu liniar peste corpul K.
IV.1.2.3. nmulirea matricelor
Definiia 4.1.6
Fie A = aij 1im o matrice de tip (m, n) i B = bij 1in o matrice de tip (n, p). Prin
1 j n 1 j p
produsul matricelor A i B, notat AB se nelege o nou matrice C= cij 1im de tipul (m, p)
1 j p
106
Petru Florin Gavril Capitolul IV - Matrice
n care orice element cij situat la intersecia liniei i cu coloana j este egal cu suma
produselor elementelor din linia i a matricei A cu elementele din coloana j a matricei
B, efectuat dup regula urmtoare.
n
cij = ai1b1j + ai2b2j + + ainbnj = a
k 1
b , () i= 1, m , j= 1, n
ik kj (1)
Proprieti:
1) Distributivitatea fa de adunare
Dac A M mn(K), iar B1 , B2 M np(K), atunci are loc relaia:
A(B 1 + B2) = A B 1 + AB2 (2)
Dac A1, A2 M mn(K), iar B M np(K), atunci are loc relaia:
(A1 + A2)B = A1B + A2B (3)
2) Asociativitatea
() A M mn(K), B M np(K) i C M pq(K), are loc egalitatea:
(AB)C = A(BC) (4)
3) () A M mn(K), au loc relaiile:
ImA = A (5)
AI n = A (6)
unde I m este matricea unitate de ordin m, iar I n matricea unitate de ordin n.
4) () A M mn(K), au loc relaiile:
Opm A = Opn (7)
A O np = O mp (8)
unde Opm , Opn , O np , O mp sunt matrice nule.
5) nmulirea matricelor, n general, nu este comutativ
Definiia 4.1.7
Dac A B = B A, atunci matricele A i B se numesc permutabile.
Observaii:
1) Matricea nul On i matricea unitate In de ordin n sunt permutabile cu orice
matrice de acelai ordin, adic au loc relaiile urmtoare:
A In = In A = A (10)
A On = On A = On (11)
() A M nn(K).
107
Petru Florin Gavril Capitolul IV - Matrice
t
akl = alk, () k = 1, n, l = 1, 2, m se numete transpusa matricei A.
Observaii:
1) Matricea tA este o matrice de tipul (n, m) i se obine din A lund liniile ,
respectiv coloanele lui A drept coloane, respectiv linii pentru tA (mai precis,
prima linie din a matricei tA este prima coloan a matricei A, a doua linie a
lui tA este a doua coloan a lui A . a. m. d.).
2) Dac A este o matrice ptratic de ordin n, atunci transpusa sa tA este de
asemenea o matrice ptratic de ordin n. dac k = l, atunci takk = akk i deci
diagonala principal a matricei tA este aceeai cu diagonala principal a
matricei A.
Proprieti:
1) Aplicaia de transpunere este o aplicaie bijectiv a mulimii M mn(K) care
satisface relaia:t(tA) = A , () A M mn(K).
2) t(A + B) = tA + tB, () A, B M mn(K).
3) t(A) = tA, () A M mn(K) i () .
4) Dac A aik 1i m i B bkj 1k p , atunci t(A B) = tB tA.
1 k p 1 j n
108
Petru Florin Gavril Capitolul IV - Matrice
Propoziia 4.1.1
Mulimea matricelor simetrice de ordin n formeaz un subspaiu liniar al
spaiului liniar M n (K).
Observaie:
Produsul a dou matrice simetrice nu este, n general, o matrice simetric.
Definiia 4.1.10
O matrice A se numete antisimetric dac satisface condiia: tA = - A.
Observaie:
ntr-o matrice antisimetric, elementele situate simetric n raport cu diagonala
principal sunt opuse, iar elementele diagonalei principale sunt nule, adic:
aij = aji , () i, j = 1, 2, n, i j
aii = 0, () i = 1, 2, n.
Propoziia 4.1.2
Mulimea matricelor antisimetrice de ordin n formeaz un subspaiu liniar al lui
M n (K).
Propoziia 4.1.3
Produsul a dou matrice antisimetrice de ordin n, permutabile ntre ele, este o
matrice simetric de ordin n.
Definiia 4.1.11
O matrice A M n () se numete ortogonal dac i numai dac A tA = In , unde
In este matricea unitate de ordin n.
Definiia 4.1.12
O matrice AM n (C)este cu elemente pur imaginare dac a ij= aij , ( )i, j= 1, n
unde aij este conjugatul numrului complex a ij.
Definiia 4.1.13
109
Petru Florin Gavril Capitolul IV - Matrice
2 n(n 1)
Deci, 0 m() C n = .
2
Numrul () = (-1)m() se numete signatura permutrii .
Permutarea se numete par, respectiv impar dac () = +1 respectiv
() = -1.
Determinani
Definiia 4.1.18
Se numete determinant asociat unei matrice de ordin 2 cu a ij K,
a11 a12
K corp comutativ, i, j 1, 2, A = , numrul K, notat cu:
a21 a22
110
Petru Florin Gavril Capitolul IV - Matrice
a11 a12
= detA = = a11a22 - a12a21
a21 a22
Observaie:
Mulimea S2 a permutrilor mulimii 1, 2 este format din dou elemente:
1 2 1 2
1 = i 2 = . m(1) = 0; m(2) = 1 deci 1 permutare par, iar 2
1 2 2 1
permutare impar.
Definiia 4.1.19
Se numete determinant asociat unei matrice de ordin 3 cu a ij K (K corp
a11 a12 a13
comutativ), i, j 1, 2, 3 , A= a 21 a 22 a 23 , numrul K, notat cu:
a a33
31 a32
Definiia 4.1.22:
Se numete determinant asociat unei matrice ptratice de ordin n cu a ij K
a11 a12 a1n
a21 a22 a2 n
(K corp comutativ), i, j 1, 2, , n, A = numrul unic
a ann
1n a2 n
determinat K, dat de formula:
a11 a12 a1n
a21 a22 a2 n
= detA = = ( )a1 (1) a 2 ( 2) ...a n ( n )
S n
an1 an 2 ann
Observaii:
1. Produsul a1(1)a2(2)a n(n) se numete termen al determinantului de ordinul n.
111
Petru Florin Gavril Capitolul IV - Matrice
a11 a12
=
a21 a22
cu dou linii i dou coloane format din 4 elemente. Valoarea determinantului (4) este dat
de expresia
= a11a22 a12a21
Valoare care se obine fcnd diferena dintre produsul elementelor de pe
diagonala principal i produsul elementelor de pe diagonala secundar.
S considerm acum determinantul de ordin trei
Regula triunghiurilor
Valoarea determinantului (5) este dat de expresia:
= a11a22a33 + a13a21a32 + a12a23a31 a13a22a31 a11a23a32 a12a21a32
Termenii cu + din (5) sunt: produsul elementelor de pe diagonala principal i
dou produse de elemente situate n vrfurile a dou triunghiuri (isoscele) care au bazele
paralele cu prima diagonal (vezi Fig.1). Termenii cu - sunt: produsul elementelor de pe
112
Petru Florin Gavril Capitolul IV - Matrice
egalitatea:
d = ai1Ai1 + ai2Ai2 + + ainAin
egalitatea
d = a1jA1j + a2jA2j + + anjAnj
Egalitatea (3) poart denumirea de dezvoltarea determinantului d dup coloana j.
113
Petru Florin Gavril Capitolul IV - Matrice
Determinani triunghiulari
Sunt acei determinani care au toate elementele situate deasupra uneia din diagonale, nule.
a11 0 0 0
a21 a22 0 0
=
... ... ... ...
an1 an 2 ... ann
(1)
Dezvoltndu-l dup prima linie, vom avea:
a22 0 ... 0
a32 a33 ... 0
= a11
... ... ... ...
an 2 an 3 ... ann
Dac lum din matricea a k linii i k coloane, elementele care se gsesc la intersecia
acestor linii i coloane formeaz o matrice ptratic al crei determinant se numete minor
de ordin k al matricei A.
Din matricea A se pot obine Cm Cn minori de ordin k.
k k
114
Petru Florin Gavril Capitolul IV - Matrice
Definiia 4.1.23
Fie A M mn(C) o matrice de tip (m,n) nenul. Spunem c matricea A are
rangul r (rangA = r) dac are un minor de ordin r, nenul, iar toi minorii de ordin mai
mare din A (dac exist) sunt nuli.
Observaie
Dac A este matricea nul, convenim s spunem c rangul ei este 0, adic
rangOmn = 0.
Teorema 4.1.5
Fie A M mn (C) o matrice nenul. Numrul natural r este rangul matricei A
dac i numai dac exist un minor de ordin r din A nenul i toi minorii de ordin r+1
(dac exist) sunt nuli.
Teorema 4.1.6
Fie A M mn (C) i BM np (C) dou matrice. Atunci orice minor de ordin k
(lk min(m,p)) al produsului AB se poate scrie ca o combinaie liniar de minori de
minori de ordin k ai matricei A (sau, ca o combinaie liniar de minori de ordin k ai
matricei B).
Consecin:
Rangul produsului a dou matrice este mai mic sau egal dact rangul fiecrei
matrice n parte.
rang(AB) rangA i rang(AB) rangB.
Observaii:
1) Deoarece fiecare linie (ai1 , ai 2 ,..., ain ) a unei matrice A M mn(C), poate fi
115
Petru Florin Gavril Capitolul IV - Matrice
116
Petru Florin Gavril Capitolul IV - Matrice
unde aij, bi K.
Sistemul (1) poate fi scris sub form condensat astfel:
n
a
j 1
ij x j bi , 1 i m (2)
117
Petru Florin Gavril Capitolul IV - Matrice
avnd primele n coloane, coloanele matricei A i ultima coloan format din coloana
termenilor liberi ai sistemului se numete matricea extins.
b1 x1
b2 x2
Matricea B = este matricea termenilor liberi, iar dac notm cu X = ... ,
...
b x
m m
matricea necunoscutelor, sistemul (1) se mai scrie i sub forma matriceal:
A X= B (3)
Definiia 4.1.24:
Un sistem ordonat de elemente 1 , 2 ,..., n din K se numete soluie a
sistemului (1), dac nlocuind n (1) x j prin j, 1 j n, toate cele m ecuaii sunt
verificate, adic
n
a
j 1
ij j bi , 1 i m.
Dac sistemul (1) are mcar o soluie, se spune c este compatibil determinat
dac soluia este unic i nedeterminat, dac exist mai multe soluii.
Dac sistemul (1) nu admite soluii, se spune c este incompatibil.
A rezolva un sistem de ecuaii liniare (1) nseamn a decide dac acesta este
compatibil sau incompatibil, iar n cazul compatibilitii, a-i gsi soluia unic, atunci cnd
este determinat, i soluia general cnd este nedeterminat.
De studiul compatibilitii unui sistem de ecuaii liniare m voi ocupa n
continuare n cadrul acestui capitol al lucrrii, totodat trecnd n revist i cteva clase
importante de astfel de sisteme.
118
Petru Florin Gavril Capitolul IV - Matrice
n care matricea A a sistemului este o matrice ptratic cu elemente din corpul comutativ
K, A M n(K) i B = t(b1, b2 , , bn) este o matrice nenul de tip n1, sunt sisteme de tip
Cramer.
Sistemele de mai sus se pot scrie sub form matriceal astfel:
A X= B (5)
t
unde, X = (x1, x2 , , xn) este coloana necunoscutelor.
Teorem: - regulile lui Cramer
Cu notaiile de mai sus, dac d = detA este nenul, atunci sistemul (4) are soluie
unic i anume
d1 d d
x1 = , x2 = 2 , , xn = n (6)
d d d
dj fiind determinantul care se obine din d prin nlocuirea coloanei j cu coloana termenilor
liberi.
Observaie:
Formulele (6) poart numele de formulele lui Cramer. n concluzie, un sistem de
tip Cramer este compatibil determinat dac matricea sa este nesingular, iar soluia este
dat de formulele (6). Pentru a gsi soluia sistemului (4) avem de calculat aadar n+1
determinani i de efectuat n mpriri.
IV.1.6.3. Sisteme de m ecuaii cu n necunoscute
Revenim la un sistem de forma (1) prezentat la nceputul capitolului, i anume:
a11x1 a12 x2 ... a1n xn b1
a x a x ...a x b
21 1 22 2 2n n 2
(1)
......................................
am1 x1 am 2 x2 ... amn xn bm
Vom pstra de asemenea toate notaiile fcute la nceput. Evident, n cele ce urmeaz, se
pune problema compatibilitii unui astfel de sistem de ecuaii liniare. Pentru rezolvarea
acestei situaii exist cteva rezultate remarcabile i anume:
119
Petru Florin Gavril Capitolul IV - Matrice
rmase din A .
Observaie:
Minori caracteristici exist dac m r, iar numrul lor este egal cu m-r (m
numrul de ecuaii, iar r rangul matricei A).
Presupunem c sistemul (1) este compatibil i c rangA = r. Vom lua minorul
principal ca fiind situat la intersecia primelor r linii cu primele r coloane din A:
120
Petru Florin Gavril Capitolul IV - Matrice
1) Dac r = n, sistemul (1) este de tip Cramer, compatibil determinat, iar soluia
unic a sistemului, dat de formulele (6), va fi soluia sistemului.
2) Dac r n, fixm minorul principal, necunoscutele corespunztoare lui
necunoscute principale i trecem n (1), n membrul drept, toi termenii care
conin necunoscutele secundare: x r+1 , xr+2 , , xn. Acestora din urm le atribuim
valori arbitrare, respectiv 1 , 2 , 3 , , n-r.
Se obine sistemul:
a11x1 a12 x2 ... a1r xr b1 a1,r 11 ... a1n nr
a x a x ...a x b a ... a
21 1 22 2 2r r 2 2 ,r 1 1 2 n nr
(1)
..........................................................................
ar1 x1 ar 2 x2 ... arr xrr br ar ,r 11 ... arnnr
care este un sistem Cramer, compatibil i se rezolv cu ajutorul formulelor (6). Soluia
unic a sistemului (1) este ( 1 , 2 ,..., r ) iar ( 1 , 2 ,..., r ,1, 2, 3 , , n-r) este
soluia sistemului (1), adic a sistemului (1). Deoarece 1, 2, 3, , n-r sunt alese
arbitrar, obinem pentru (1) o infinitate de soluii, care constituie mulimea tuturor
soluiilor sistemului (1).
Deci, pentru a rezolva un sistem de m ecuaii cu n necunoscute procedm n felul urmtor:
1) Se studiaz compatibilitatea sistemului. Pentru aceasta se caut un minor
principal al lui A, matricea sistemului, apoi se caut i se calculeaz minorii
caracteristici.
Putem avea cazurile:
exist cel puin unul nenul, sistemul fiind astfel incompatibil;
toi sunt nuli, sistemul fiind astfel compatibil.
2) Dac sistemul (1) este compatibil atunci formulm sistemul de tip (1).
3) Se rezolv sistemul (1) i se scrie apoi mulimea soluiilor sistemului (1) de
forma ( 1 , 2 ,..., r ,1, 2, 3 , , n-r).
IV.1.6.4. Sisteme omogene
Definiia 4.1.25:
Un sistem de ecuaii liniare se numete sistem omogen dac termenul liber al
fiecrei ecuaii este nul (adic fiecare ecuaie este omogen).
Forma general a unui sistem omogen cu m ecuaii i n necunoscute este
urmtoarea:
121
Petru Florin Gavril Capitolul IV - Matrice
122
Petru Florin Gavril Capitolul IV - Matrice
cu matricea A = aij i1,n . Cum rangA = n, se pot forma n+1 minori de ordin maxim n,
j 1.n1
nenuli. Vom considera un 1 , minor de ordin n nenul suprimnd din A coloana 1. Acesta
x1 x x xn1
=- 2 = 3 == = t.
1 2 3 1n n1
De obinem c:
x1 = t 1
x2 = -t 2
x3 = t 3
.
xn+1 = (-1) n t n 1 .
123
Petru Florin Gavril Capitolul IV - Matrice
1) metode directe, prin care soluia exact se obine ntr-un numr finit de operaii
aritmetice (fcnd abstracie de erorile de rotunjire);
2) metode iterative pentru care vectorul x soluia sistemului (1) Ax = b este
limita unui ir de vectori xn pentru n .
Metodele directe pot fi ncadrate n urmtoarea schem general:
Se determin transformarea P nesingular cu care sistemul (1) devine
PAx = Pb (2)
Astfel nct noua matrice PA, s fie de o form ct mai simpl, care s permit o rezolvare
imediat. Dac PA nu este suficient de simpl, se mai folosete o transformare nesingular
Q la dreapta, astfel nct sistemul devine:
PAQy = Pb, cu x = Qy (3)
De obicei, matricele PA i PAQ sunt matrice triunghiulare dar pot fi i de alt form
convenabil pentru rezolvarea sistemului (1).
De exemplu, dac n sistemul (3) PA este o matrice superior triunghiular
PA = tij i1,n i Pb = ci i1,n , atunci sistemul devine:
j 1,n
124
Petru Florin Gavril Capitolul IV - Matrice
n
cni t n i , j xj
, i = 1, n 1 .
j n i 1
xn-i =
t ni ,ni
125
Petru Florin Gavril Capitolul IV - Matrice
unde A = aij i, j 1,3 este matricea sistemului, X = xi i1,3 este matricea coloan a
necunoscutelor, iar B = bi i 1,3 este matricea coloan a termenilor liberi, notaii cu care ne-
am ntlnit i n capitolul 3.
La primul pas al metodei lui Gauss urmri eliminarea necunoscutei x 1 din toate
ecuaiile sistemului, cu excepia primei ecuaii. Pentru aceasta mprim mai nti prima
linie la elementul pivot a11, presupus nenul (dac nu este aa, reordonm i renumerotm
ecuaiile pentru a fi ndeplinit aceast condiie):
1
x1 a12
(1)
x2 a13 x3 b11
a21x1 a22 x2 a23 x3 b2
a x a x a x b
31 1 31 2 33 3 3
Scdem apoi prima ecuaie nmulit cu primul coeficient al celei de-a doua
ecuaii, din aceast ecuaie i, respectiv, nmulit cu primul coeficient al celei de-a treia
ecuaii, din aceasta din urm. Obinem astfel sistemul:
1
x1 a12
(1)
x2 a13 x3 b11
1 1 1
a22 x2 a23 x3 b2 ,
a 1 x a 1 x b 1
32 2 33 3 3
unde
a11j a1 j a11 , j 1,2,3
b11 b1 a11
1 1 .
aij aij ai1 a1 j , i 1,2,3, j 1,2,3
bi1 bi ai1b11
126
Petru Florin Gavril Capitolul IV - Matrice
Obinem:
1 1
1 a12 a13 x1 b11
2 2
0 1 a23 x 2 = b2 (4)
0 0 2 2
a33 x3 b3
unde
a22j a21j a22 1
, j 2,3
2 1 1
b2 b2 a22
2 1 1 2 .
aij aij ai 2 a2 j , i 3, j 2,3
bi2 bi1 ai12b22
2
n sfrit, ncheiem faza eliminrii mprind cea de-a treia ecuaie la elementul pivot a33 ,
unde
b33 b32 a33
2
.
x1 = b11 - ( a12
1 1
x2 + a13 x3)
127
Petru Florin Gavril Capitolul IV - Matrice
128
Petru Florin Gavril Capitolul IV - Matrice
InX=B(n) (21)
unde I n reprezint matricea unitate de ordinul n. Este evident c nu este necesar, ca n
cazul metodei Gauss, o faz a substituiei inverse, iar soluia sistemului este:
xk = bkk , k = 1,,n (22)
Ca i n cazul metodei Gauss, deoarece dup pasul k informaia util din matricea
A(k) se gsete exclusiv n coloanele k+1, , n, coloana k fiind n fond identic cu coloana
corespunztoare a matricei unitate, noile elemente ale matricei A(k) sunt calculate efectiv
numai pentru j=k+1, , n. n ceea ce privete pivotarea, aceasta se poate realiza la fel ca n
cazul metodei Gauss.
IV.1.6.5.2. Metode iterative de aproximare a soluiilor sistemelor de ecuaii
liniare
Fie sistemul de n ecuaii cu n necunoscute
Ax = b, det A 0 (1)
Ideea general a metodelor iterative const n construirea unor iruri de vectori ce
converg la soluia exact, care se obin fr a modifica forma matricei:
x 0 n , dat
k 1
x
F x k , k 0,1,2...
129
Petru Florin Gavril Capitolul IV - Matrice
B x ( k 1) C x ( k ) b , k = 1,2,3, (2)
Deoarece B este nesingular i uor de inversat pentru orice x (k) deja determinat,
se obine urmtorul vector din ir x (k+1) cu relaia
x ( k 1) B 1 C x ( k ) B 1 b (3)
adic
x ( k 1) M x ( k ) c , (4)
unde M B 1 C (matricea iteraiei) i c B 1 b .
Propoziia 4.1.4
Dac irul x (k ) este convergent atunci el converge la soluia sistemului (1).
S vedem n ce condiii irul x (k ) este convergent.
Teorema 4.1.9
Condiia necesar i suficient ca irul x (k ) dat de relaia (2) s fie convergent
pentru orice x(0)n este ca raza spectral a matricei M s fie subunitar, adic
(M ) 1 . O condiie suficient de convergen este existena unei norme naturale pentru
care
M 1 M max ; este valoare proprie a lui M .
Metoda lui Jacobi
Una dintre cele mai vechi i mai cunoscute metode iterative pentru rezolvarea
sistemelor de ecuaii liniare este metoda lui Jacobi.
x
k
x
k 1
respectiv . n ipoteza important a ii 0, i 1, n , care asigur c matricea
n
1 k
B este nesingular, obinem recurena xi k 1
bi a ij x j , i 1, n care se
a ii j1
ji
numete metoda lui Jacobi.
Conform teoremei anterioare, condiia necesar i suficient de convergen a
metodei lui Jacobi este ca modulele valorilor proprii ale matricei iteraiei s fie subunitare.
130
Petru Florin Gavril Capitolul IV - Matrice
a ij
, pentru i j
mij a ii . Dac lum 1, adic M 1 1 echivalent cu
0, pentru i j
n
M 1 max mij 1 (sume pe coloane) obinem condiia suficient de convergen
j1,n
i 1
n a ij
a
i 1
1, j 1, n .
ii
i j
1/ 2
n n 2
n a ij
Lund norma , adic M
1, iar M
max 1 (sume pe linii),
i 1,n a ii
j1
n a ij
obinem condiia suficient de convergen a
i 1
1, j 1, n sau
ii
i j
j1
a ij a ii , pentru i 1, n , condiie care se numete dominana diagonal pe linii.
ji
131
Petru Florin Gavril Capitolul IV - Matrice
Metoda Gauss-Seidel
Metoda Gauss-Seidel reprezint o modificare a metodei Jacobi, cu scopul
creterii vitezei de convergen i reducerii memoriei necesare. Ideea de baz a metodei
x i
k 1
Gauss-Seidel const n utilizarea n calculul componentei a aproximaiei soluiei
x1
k 1
, x 2
k 1
,...x i1
k 1
sistemului de la pasul k 1 a componentelor , deja calculate, n
locul componentelor x1k , x k2 ,...x ik1 de la iteraia anterioar, cum se ntmpl n cazul
metodei Jacobi.
n metoda Gauss-Seidel, recurena devine:
bi i1 a ij k 1 n a ij k
xi k 1
x j x j , pentru i 1, n , k = 0,1,2,
a ii j1 a ii ji 1 a ii
(1)
a ii j1 a ii ji 1 a ii
(2)
Bx
k 1
i 1, n Cx b , k = 0,1,2, se scrie sub forma (1).
k
pentru iar sistemul
Teorema 4.1.10
Criteriul de dominan a diagonalei pe linii asigur convergena metodei Gauss-
x
0
Seidel pentru orice iteraie iniial .
132
Petru Florin Gavril Capitolul IV - Matrice
133
Petru Florin Gavril Capitolul IV - Matrice
var <id_mat>:matrice;
Observaie:
Declaraia cu tipuri permite atribuiri de linii i coloane.
Declaraie C++
<tip_e> <id_mat>[<max_l>][<max_c>]
unde:
<id_mat> - identificatorul variabilei matrice
<tip_e> - tipul elementelor matricei
<max_l>,<max_c> - numrul maxim de linii, respectiv coloane
Exemplu:
Pascal: a:array[1..20,1..30] of integer; se declar o matrice cu 20 de linii
numerotate de la 1 la 20 i 30 de coloane numerotate de la 1 la 30. Numrul
maxim de valori ce poate fi memorat este 600.
C++: float a[20][30]; se declar o matrice cu 20 de linii numerotate de la 0 la
19 i 30 de coloane numerotate de la 0 la 29. Numrul maxim de valori ce poate fi
memorat este 600.
Dimensiunile declarate sunt maxime pentru programul surs n care au fost fcute, n
practic utilizndu-se declararea a dou variabile n respectiv m pentru a memora numrul
de linii i coloane. Valorile lui n i m se citesc anterior elementelor matricei sau se
determin pe parcursul execuiei programului(de obicei la citirea matricelor de dimensiuni
necunoscute din fiiere sau la utilizarea matricelor cu numr necunoscut de linii i un
numr variabil de coloane, caz n care se ataeaz un tablou d ce reine n d[i] numrul de
coloane completate pe linia i).
IV.2.2. Parcurgerea, citirea i afiarea unei matrice
Parcurgeri n matrice
Pentru a parcurge o matrice se utilizeaz n general dou structuri repetitive, una
pentru a parcurge liniile i una pentru a parcurge coloanele. Ordinea n care sunt executate
cele dou structuri determin prelucrarea elementelor pe linii sau pe coloane.
Descriem n continuare algoritmii de parcurgere precum i ordinea n care vor fi
prelucrate elementele:
Prelucrare pe linii
Pascal C++
var a:array[1..10,1..20] of <tip_e>; <tip_e> a[10][20];
n,m,i,j:integer; int n,m,i,j;
134
Petru Florin Gavril Capitolul IV - Matrice
............
for i:=1 to n do for(i=0;i<n;i++)
for j:=1 to m do for(j=0;j<m;j++)
<prelucreaz a[i,j]> <prelucreaz a[i][j]>
Ordinea de prelucrare a elementelor este :
a[1,1],a[1,2],...,a[1,m] a[0,0],a[0,1],...,a[0,m-1]
a[2,1],a[2,2],...,a[2,m] a[1,0],a[1,1],...,a[1,m-1]
................... ...................
a[n,1],a[n,2],....,a[n,m] a[n-1,0],a[n,1],....,a[n-1,m-1]
Prelucrare pe coloane
var a:array[1..10,1..20] of <tip_e>; <tip_e> a[10][20];
n,m,i,j:integer; int n,m,i,j;
............
for j:=1 to m do for(i=0;i<n;i++)
for i:=1 to n do for(j=0;j<m;j++)
<prelucreaz a[i,j]> <prelucreaz a[i][j]>
Ordinea de prelucrare a elementelor este :
a[1,1],a[2,1],...,a[n,1] a[0,0],a[1,0],...,a[n-1,0]
a[1,2],a[2,2],...,a[n,2] a[0,1],a[1,1],...,a[n-1,1]
................... ...................
a[1,m],a[2,m],....,a[n,m] a[0,m-1],a[1,m-1],....,a[n-1,m-1]
135
Petru Florin Gavril Capitolul IV - Matrice
Afirile a[i][j]=_ nu sunt obligatorii, ele se folosesc doar pentru a ti care este
elementul curent ce urmeaz a fi citit.
Diagonala principal
Diagonala principal este format din elementele care ndeplinesc relaia i=j
numrul liniei este egal cu numrul coloanei pe care se afl.
136
Petru Florin Gavril Capitolul IV - Matrice
Diagonala secundar
Diagonala secundar conine elementele a 1n, a2 n-1 , a3 n-2,...,a n1 caracterizate de
relaia i+j=n+1.
Zona de deasupra diagonalei principale
Elementele de deasupra diagonalei principale sunt a12, a13, a14,...,a1n, a23, a24,
a25,...,a2n, ...., a n-1 n-1 , a n-1 n. Relaia dintre coordonate comun tuturor elementelor din
aceast zon este i<j.
Zona de sub diagonala principal
Elementele a21, a31 , a32,...,a41, a42 , a43, .....,a n1, a n2 , a n n-1 se afl sub diagonala
principal i au ntre coordonate relaia i>j.
n practic prelucrarea elementelor se poate face exclusiv pe diagonale respectiv
pe zonele identificate mai sus(ex:ordonarea diagonalelor respectiv verificarea simetriei sau
a triunghiularitii) sau se poate opta pentru o parcurgere a tuturor elementelor matricei i
prelucrarea difereniat a elementelor n funcie de relaia dintre coordonate(ex:
completarea elementelor cu anumite valori, calculul simultan al mai multor rezultate
obinute pentru fiecare zon n parte).
n funcie de enun se mai pot identifica zona de deasupra diagonalei
secundare(i+j<n+1), zona de sub diagonala secundar(i+j>n+1), precum i zonele N, S, E,
V situate ntre cele dou diagonale.
Modaliti de prelucrare a elementelor n matrice ptratic de dimensiune n
Implementare Pascal Implementare C++
//primul element este a[1][1]
Diagonala principal
for i:=1 to n do for (i=1;i<=n;i++)
<prelucreaz a[i,i]> <prelucreaz a[i][i]>
Diagonala secundar
for i:=1 to n do for (i=1;i<=n;i++)
<prelucreaz a[i,n-i+1]> <prelucreaz a[i][n-i+1]>
Deasupra diagonalei principale
for i:=1 to n-1 do for (i=1;i<=n-1;i++)
for j:=i+1 to n do for(j=i+1;j<=n;j++)
<prelucreaz a[i,j]> <prelucreaz a[i][j]>
137
Petru Florin Gavril Capitolul IV - Matrice
139
Petru Florin Gavril Capitolul IV - Matrice
140
Petru Florin Gavril Capitolul IV - Matrice
calcul unul prin dezvoltare dup o linie, cellalt prin transformarea n matrice
triunghiular. Descrierea matematic a metodelor aplicat nu va fi reluat n seciunile
urmtoare ele fiind detaliate n seciunea IV.1 a capitolului curent. Ultima aplicaie
descris, Parantezarea optim a nmulirii matricelor, va fi descris pe larg. Sursele au fost
realizate n orele de curs cu elevii din clasele IX-XII.
IV.3.2.1 Suma a dou matrice
Pascal C++
program suma_matrice; #include<iostream.h>
type void citire(int a[][10],int n,int m)
vector=array[1..10] of integer; {int i,j;
matrice=array[1..10] of vector; cin>>"Introduceti elementele de pe
var n,m:integer; fiecare linie separate prin spatii!";
a,b,s:matrice; for(i=1;i<=n;i++)
procedure citire(var for(j=1;j<=m;j++)
a:matrice;n,m:integer); cin>>a[i][j];
var i,j:integer; }
begin void suma(int a[][10],int b[][10],int
writeln('Introduceti elementele c[][10],int n, int m)
de pe fiecare linie separate prin {int i,j;
spatii!'); for(i=1;i<=n;i++)
for i:=1 to n do for(j=1;j<=m;j++)
for j:=1 to m do c[i][j]=a[i][j]+b[i][j];
read(a[i,j]); }
end; void afisare(int a[][10],int n,int
procedure suma(a,b:matrice; var m);
c:matrice; n,m:integer); {int i,j;
var i,j:integer; for(i=1;i<=n;i++)
begin {
for i:=1 to n do for(j=1;j<=m;j++)
for j:=1 to m do cout<<a[i][j]<<' ';
c[i,j]:=a[i,j]+b[i,j]; cout<<endl;
end; }
procedure afisare(a:matrice; }
n,m:integer); void main()
var i,j:integer; {int a[10][10],b[10][10],s[10][10];
begin int n,m;
for i:=1 to n do cout<<"Numarul de linii:"<<endl;
begin cin>>n;
for j:=1 to m do cout<<"Numarul de coloane:";
141
Petru Florin Gavril Capitolul IV - Matrice
142
Petru Florin Gavril Capitolul IV - Matrice
143
Petru Florin Gavril Capitolul IV - Matrice
s:=0; m);
for k:=1 to m do {int i,j;
s:=s+a[i,k]*b[k,j]; //afisare matrice a
c[i,j]:=s; }
end; void main()
end; {int a[10][10],b[10][10],pr[10][10];
procedure afisare(a:matrice; int n,m,p;
n,m:integer); cout<<Matricea A:<<endl;
var i,j:integer; cout<<"Numarul de linii:";
begin cin>>n;
{afisare matrice a} cout<<"Numarul de coloane:";
end; cin>>m;
begin citire(a,n,m);
writeln(Matricea A:); cout<<Matricea B:<<endl;
write('Numarul de linii:'); cout<<Numarul de coloane:
readln(n); cin>>p;
write('Numarul de coloane:'); citire(b,m,p);
readln(m); citire(a,n,m); produs(a,b,pr,n,m,p);
writeln(Matricea B:); cout<<"Produsul dintre A:"<<endl;
write('Numarul de coloane:'); afisare(a,n,m);
readln(p); citire(b,m,p); cout<<"si B:"<<endl;
produs(a,b,pr,n,m,p); afisare(b,n,m);
writeln('Produsul dintre cout<<"este C:"<<endl;
A:');afisare(a,n,m);writeln('si afisare(pr,n,p);}
B:'); afisare(b,m,p); writeln('este
C:'); afisare(pr,n,p); end.
144
Petru Florin Gavril Capitolul IV - Matrice
a:matrice;n:integer) if (n==1)
var i,j:integer; return a[1][1];
begin else
{citire matrice a} if (n==2)
end; return a[1][1]*a[2][2]-
function det a[1][2]*a[2][1];
(a:matrice;n:integer;i,j,p:inte ger else
):integer; {//construim complementul
var b:matrice; algebric
k,l,x:integer; //al elementului a[i][j]
begin x:=a[i][j];
if n=1 for (l=1;l<=n-1;l++)
then for (k=1;k<=n-1;k++)
det:=a[1][1] if(l<i)
else if(k<j)
begin b[l][k]=a[l][k];
x:=a[i,j]; else
{constr. complementul algebric al b[l][k]=a[l][k+1];
a[i][j]} else
for k:=1 to i-1 do if(k<j)
b[k]:=a[k]; b[l][k]=a[l+1][k];
for k:=i to n-1 do else
b[k]:=a[k+1]; b[l][k]=a[l+1][k+1];
for l:=1 to n-1 do if (j<n)
for k:=j to n-1 do return p*x*det(b,n-
b[l][k]:=b[l][k+1]; 1,1,1,1)+det
if j<n
then (a,n,i,j+1,-p);
det:=p*x*det(b,n-1,1,1,1) else
+det(a,n,i,j+1,-p) return p*x*det(b,n-
else 1,1,1,1);
det:=p*x*det(b,n-1,1,1,1); }
end; }
end; void main()
{int a[10][10],n,L,p;
begin cout<<Dimensiune A:;
write(Dimensiune A:);readln(n); cin>>n;
citire(a,n); citire(a,n);
write(Se dezvolta linia:); cout<<Se dezvolta linia;
readln(L); cin>>L;
if L mod 2=1 then p=1 if(L%2==1)
145
Petru Florin Gavril Capitolul IV - Matrice
146
Petru Florin Gavril Capitolul IV - Matrice
Pascal C++
(secven program) (secven program)
program rang_matrice; #include <iostream.h>
type int
vector=array[1..10] of integer; ms[10][10],vlin[10],vcol[10],lr[10];
matrice=array[1..10] of vector; int nlin,nlr,ncr,ec,nec, cr[10];
var ms:matrice;
vlin,vcol,lr,cr:vector; void cauta(int a[][10],int m, int n,
int &x,int &y)
i,j,r1,r2,nlin,nlr,ncr,ec,nec:integ {int i,j;
er; /*se cauta in matricea a un element
diferit de 0; coordonatele sale se
procedure cauta memoreaza in x si y*/
(a:matrice;m,n:integer; var }
x,y:integer); void c_minor(int vlin[],int
var i,j:integer; vcol[],int nlin, int a[][10],int
begin minor[][10])
{se cauta in matricea a un element {int i,j;
diferit de 0; coordonatele sale se for(i=1;i<=nlin;i++)
memoreaza in x si y} for(j=1;j<=nlin;j++)
end; minor[i][j]=a[vlin[i]][vcol[j]];
}
procedure void init(int m,int n)
c_minor(vlin,vcol:vector;nlin: {int i;
integer;a:matrice;var /*lr si cr retin liniile si coloane
minor:matrice; m,n:integer); ramase neselectate; initial nu se
var i,j:integer; alege nimic*/
begin for(i=1;i<=m;i++)
for i:=1 to nlin do lr[i]=i;
for j:=1 to nlin do nlr=m;
minor[i,j]:=a[vlin[i],vcol[j]]; for(j=1;j<=n;j++)
end; cr[j]=j;
ncr=n;
procedure init (m,n:integer); }
var i:integer;
begin{lr si cr retin liniile si void elimina(int v[],int &dv, int x)
coloane ramase neselectate; initial {int i,j;
nu se alege nimic} i:=1;
for i:=1 to m do while (i<=dv && v[i]!=x)
lr[i]:=i; i++;
147
Petru Florin Gavril Capitolul IV - Matrice
148
Petru Florin Gavril Capitolul IV - Matrice
149
Petru Florin Gavril Capitolul IV - Matrice
begin
clrscr; citire; init(ec,nec);
for i:=1 to ec do
begin for j:=1 to nec do
write(ms[i,j]:5);
writeln; end;
r1:=rang(ms,ec,nec);writeln('Rangul
matricei A=',r1); end.
150
Petru Florin Gavril Capitolul IV - Matrice
151
Petru Florin Gavril Capitolul IV - Matrice
152
Petru Florin Gavril Capitolul IV - Matrice
madj[i,j]:=determinant(calg,n- cout<<elementul
1,1,1,1); a*(<<i<<','<<j<<
writeln('Elementul ) este determinantul complementului
a*(',i,',',j,') este determinantul adica <<madj[i][j]<<\n;
complementului adica ',madj[i,j]); }
end else
else {
begin madj[i][j]:=-
madj[i,j]:=- determinant(calg,n-1,1,1,1);
determinant(calg,n-1,1,1,1); cout<<elementul
writeln('Elementul a*(<<i<<','<<j<<
a*(',i,',',j,') este determinantul ) este determinantul complementului
complementului cu semn schimbat cu semn schimbat adica
adica ',madj[i,j]); <<madj[i][j]<<\n;
end; }
readkey; getch();
end; }
end; }
153
Petru Florin Gavril Capitolul IV - Matrice
end; este......;
writeln; for (i=1;i<=n;i++)
writeln('Matricea inversa {
este......'); cout<<\n;
for i:=1 to n do for( j=1;j<=n;j++)
begin cout<<minv[i][j]<< ;
writeln; }
for j:=1 to n do }
write(minv[i,j]:6:2);
end;end;
begin void main()
clrscr; {
write('Numarul de linii si coloane cout<<numarul de linii si coloane
al matricii este....');readln(n); al matricii este....;cin>>n;
writeln('Elementele cout<<elementele matricii....
matricii....');citire; citire();
writeln; cout<<\n determinantul matricii
write('Determinantul matricii este.....;
este.....'); detms:=determinant(ms,n,1,1,1);
detms:=determinant(ms,n,1,1,1); cout<<detms<<\n;
writeln(detms); if (detms!=0)
if detms<>0 {
then transpunere(mt,n);
begin transpunere(mt,n); adjuncta();
adjuncta; inversa(minv,n);
inversa(minv,n); end }
else else
writeln('Matricea nu este cout<<matricea nu este
inversabila!'); inversabila!;
readln; getch();}
readkey;
end.
154
Petru Florin Gavril Capitolul IV - Matrice
2. det A=0
- rang A=rang compatibil nedeterminat
- rang A rang incompatibil
m>n
1. rang A=rang
- rang A=n compatibil determinat
- rang A<n compatibil nedeterminat
2. rang A rang incompatibil
n>m
1. rang A=rang compatibil nedeterminat
2. rang A rang incompatibil
Pascal C++
(secven program) (secven program)
program // compatibilitatea_unui_sistem;
compatibilitatea_unui_sistem; int
uses crt; ms[10][10],ms1[10][10],vlin[10],
type vcol[10],lr[10],cr[10],vlin1[10],vc
vector=array[1..10] of integer; ol1[10],necsec[10],i,j,det_A,r1,r2,
matrice=array[1..10] of vector; nlin,nlr,ncr,nlin1,ncr1,ec,nec;
var ms,ms1:matrice;
vlin,vcol,lr,cr,vlin1, void cauta(int a[][10],int m, int
n, int &x,int &y)
vcol1, necsec:vector; {int i,j;
//vezi IV.3.5
i,j,det_A,r1,r2,nlin,nlr,ncr,nlin1, }
ncr1,
void c_minor(int vlin[],int
ec,nec:integer; vcol[],int nlin, int a[][10],int
procedure cauta minor[][10])
(a:matrice;m,n:integer; var {
x,y:integer); //vezi IV.3.5
var i,j:integer; };
begin
{vezi IV.3.5} void init (int m,int n)
end; {int i;
//vezi IV.3.5
procedure }
c_minor(vlin,vcol:vector;nlin:integ
155
Petru Florin Gavril Capitolul IV - Matrice
156
Petru Florin Gavril Capitolul IV - Matrice
write('Nr. de necunoscute...');
readln(nec); void afisare_sistem(int a[][10],int
writeln('Coeficientii matricii m,int n)
sistemului'); {
for i:=1 to ec do int i,j;
for j:=1 to nec+1 do cout<<Sistemul este:<<endl;
read(ms[i,j]); for( i=1;i<=n;i++)
end; {
for( j=1;j<=n-1;j++)
procedure if (a[i][j]<0)
afisare_sistem(a:matrice;m,n:intege cout<<a[i][j]<<'X'<<j;
r); else
var i,j:integer; cout<<'+'<<a[i][j]<<'X'<<j;
begin if (a[i,n]<0)
writeln('Sistemul este:');
for i:=1 to m do begin cout<<a[i][n]<<'X'<<n<<'='<<a[i][n+
for j:=1 to n-1 do 1];
if a[i,j]<0 then else
write(a[i,j],'X',j) cout<<'+'<<a[i][n]<<'X'<<n<<'='<<a[
else i,n+1]<<endl;
write('+',a[i,j],'X',j); }
if a[i,n]<0 }
then
write(a[i,n],'X',n,'=',a[i,n+1]) float calcul_solutie(int
else a[][10],int i,int xx);
write('+',a[i,n],'X',n,'=',a[i,n+1] {int b[10][10], l,c;
); for (l=1;l<=ec;l++)
writeln; for(c=1;c<=nec;c++)
end; b[l][c]=a[l][c];
end; /*Inlocuim coloana i cu coloana
termenilor liberi pentru calculul
function lui Xi*/
calcul_solutie(a:matrice;i,xx:integ for (l=1;l<=ec;l++)
er):real; b[l][i]=a[l][nec+1];
var l:integer; //Solutia este egala cu:
begin return det(b,ec,1,1,1)/xx;
{Inlocuim coloana i cu coloana }
termenilor liberi pentru calculul
lui Xi} void afisare_solutii(int ms[][10],
for l:=1 to ec do int x)
a[l,i]:=a[l,nec+1]; {int i;
157
Petru Florin Gavril Capitolul IV - Matrice
158
Petru Florin Gavril Capitolul IV - Matrice
ms1[i,nlin1+1]:=ms1[i,nlin1+1]- ec:=r1;
ms[vlin1[i],cr1[j]]*necsec[j]; nec:=r1;
end; det_A:=det(ms1,r1,1,1,1);
writeln('Obtinem:'); afisare_solutii(ms1,det_A);
afisare_sistem(ms1,r1,r1); };
writeln('O solutie in cazul in
care necunoscutele secundare au void main()
valorile de mai sus:'); {citire();
ec:=r1; afisare_sistem(ms,ec,nec);
nec:=r1; if (nec==ec)
det_A:=det(ms1,r1,1,1,1); {
afisare_solutii(ms1,det_A); det_A=det(ms,ec,1,1,1);
end; if (det_A!=0)
{
begin cout<<Sistem Cramer!;
clrscr; afisare_solutii(ms,det_A);
citire; }
afisare_sistem(ms,ec,nec); else
if nec=ec {
then init(ec,nec);
begin r1=rang(ms,ec,nec);
det_A:=det(ms,ec,1,1,1); cout<<Rangul matricei
if det_A<>0 A=<<r1 <<\n;
then for(i=1;i<=r1;i++)
begin
Writeln('Sistem Cramer!'); {vlin1[i]=vlin[i];vcol1[i]=vcol[i];
afisare_solutii(ms,det_A); }
end for(i=1;i<=ncr;i++)
else cr1[i]=cr[i];
begin nlin1=r1;
init(ec,nec); ncr1=ncr;
r1:=rang(ms,ec,nec); init(ec,nec+1);
writeln('Rangul matricei r2=rang(ms,ec,nec+1);
A=',r1); cout<<Rangul matricei
vlin1:=vlin; extinse= <<r2<<endl;
vcol1:=vcol; if (r1!=r2)
cr1:=cr; cout<<Sistem
nlin1:=r1; incompatibil!<<endl;
ncr1:=ncr; else
init(ec,nec+1); compatibil_nedeterminat();
r2:=rang(ms,ec,nec+1); }
159
Petru Florin Gavril Capitolul IV - Matrice
writeln('Rangul matricei }
extinse=',r2); else
if r1<>r2 if (ec>nec)
then {
writeln('Sistem init(ec,nec);
incompatibil!') r1=rang(ms,ec,nec);
else cout<<Rangul matricei A=<<r1
compatibil_nedeterminat; <<\n;
end for(i=1;i<=r1;i++)
end {vlin1[i]=vlin[i];
else vcol1[i]=vcol[i];}
if ec>nec for(i=1;i<=ncr;i++)
then cr1[i]=cr[i];
begin nlin1=r1;
init(ec,nec); ncr1=ncr;
r1:=rang(ms,ec,nec); init(ec,nec+1);
writeln('Rangul matricei r2=rang(ms,ec,nec+1);
A=',r1); cout<<Rangul matricei
vlin1:=vlin; extinse=<< r2<<\n;
vcol1:=vcol; if (r1==r2)
nlin1:=r1; if (r1==nec)
ncr1:=ncr; {
cr1:=cr; cout<<Sistem compatibil
init(ec,nec+1); determinat!!;
r2:=rang(ms,ec,nec+1); for( i=1;i<=nlr;i++)
writeln('Rangul matricei for( j=1;j<=nec+1;j++)
extinse=',r2); ms[vlin1[nlin1]][j]=
if r1=r2 ms[vlin1[nlin1]][j]+ms[lr[i]][j];
then ec=nec;
if r1=nec cout<<Obtinem:;
then
begin afisare_sistem(ms,ec,nec);
writeln('Sistem det_A=det(ms,ec,1,1,1);
compatibil determinat!!');
for i:=1 to nlr do afisare_solutii(ms,det_A);
for j:=1 to nec+1 do }
ms[vlin1[nlin1],j]:= else
ms[vlin1[nlin1],j]+ms[lr[i],j]; compatibil_nedeterminat();
ec:=nec; else
writeln('Obtinem:'); cout<<Sistemul este
incompatibil!!;
160
Petru Florin Gavril Capitolul IV - Matrice
afisare_sistem(ms,ec,nec); }
det_A:=det(ms,ec,1,1,1); else
{
afisare_solutii(ms,det_A); init(ec,nec);
end r1=rang(ms,ec,nec);
else cout<<Rangul matricei A=<<r1
compatibil_nedeterminat <<\n;
else for(i=1;i<=r1;i++)
writeln('Sistemul este
incompatibil!!'); {vlin1[i]=vlin[i];vcol1[i]=vcol[i];
end }
else for(i=1;i<=ncr;i++)
begin cr1[i]=cr[i];
init(ec,nec); nlin1=r1; ncr1=ncr;
r1:=rang(ms,ec,nec); init(ec,nec+1);
writeln('Rangul matricei r2=rang(ms,ec,nec+1);
A=',r1); cout<<Rangul matricei
vlin1:=vlin; extinse=<< r2<<\n;
vcol1:=vcol; if (r1!=r2)
nlin1:=r1; cout<<Sistem
ncr1:=ncr; incompatibil!<<\n;
cr1:=cr; else
init(ec,nec+1); compatibil_nedeterminat();
r2:=rang(ms,ec,nec+1); }
writeln('Rangul matricei }
extinse=',r2);
if r1<>r2
then
writeln('Sistem
incompatibil!')
else
compatibil_nedeterminat;
end;
readln;
end.
Observaie:
n cazul n care A X B este sistem de n ecuaii cu n necunoscute compatibil
determinat atunci o alt metod de rezolvare se obine astfel:
A 1 A X B I n X
A
1
B xi Bi'
B'
161
Petru Florin Gavril Capitolul IV - Matrice
162
Petru Florin Gavril Capitolul IV - Matrice
163
Petru Florin Gavril Capitolul IV - Matrice
164
Petru Florin Gavril Capitolul IV - Matrice
165