matcap11
DESCRIPTION
cursuri de facultate in romana MatLabTRANSCRIPT
11. CALCULE CU MATRICEn multe domenii formularea matriceal a problemelor a condus la simplificarea metodelor de rezolvare i a fcut posibil extinderea unor soluii deja cunoscute la domenii noi.11.1. Manipularea matricelorMATLAB-ul ofer urmtoarele funcii pentru manipularea matricelor:diagCreeaz sau extrage diagonalele matricei;fliplrRotete matricea n jurul axei verticale (inverseaz ordinea coloanelor);flipudRotete matricea n jurul axei orizontale (inverseaz ordinea liniilor);reshapeSchimb dimensiunile matricei (redimensioneaz matricea);rot90Rotete matricea cu un multiplu de 90 de grade;trilExtrage matricea inferior triunghiular dintr-o matrice;triuExtrage matricea superior triunghiular dintr-o matrice;:Specific indicii, rearanjeaz sau decupeaz o submatrice.11.1.1. Extragerea submatricelor prin indiciElementele individuale ale unei matrice se apeleaz cu numele acesteia, urmat de doi indici, cuprini ntre paranteze rotunde i separai de virgul. Primul indice semnific linia, iar al doilea coloana n care se gsete elementul apelat. De exemplu instruciunea:A(3,3) = A(1,3) + A(3,1)are ca rezultat nlocuirea elementului din linia 3 i coloana 3, A(3,3), al matricei A, cu suma dintre elementul liniei 1 - coloanei 3, A(1,3), i elementul din linia 3 - coloana 1.Indicii pot fi scalari sau vectori; indicii vectori permit definirea unor submatrice, procedeu prin care se pot referi pri disparate dintr-o matrice. Spre exemplu, instruciunea:B=M(1:5,3)extrage submatricea B de dimensiunea 5x1, constnd din primele 5 elemente din coloana a 3-a a matricei M. De asemenea, instruciunea:C=M(1:5,7:10)extrage submatricea C cu dimensiunea 5x4, constituit din elementele primelor 5 linii ( liniile 1-5) i ale ultimelor 4 coloane (coloanele 7-10) ale matricei M.Utilizarea numai a semnului dou puncte :" n locul indicilor pentru linii sau pentru coloane, presupune considerarea tuturor elementelor pe linii sau respectiv pe coloane. Astfel, instruciunea:D=M(:,3)extrage din matricea M, o submatrice D care conine toate liniile (datorit semnului dou puncte) din coloana a 3-a, n timp ce instruciunea:.E=M(1:5,:) extrage submatricea E care conine liniile de la 1 la 5 ale tuturor coloanelor matricei M.Crearea matricelor mari, precum i manipularea acestora se face cu multflexibilitate dac se utilizeaz indici vectori. Spre exemplu, instruciunea:A(:,[3,5,10]) = B(:,1:3)nlocuiete coloanele 3, 5 i 10 ale matricei A cu primele 3 coloane ale matricei B. n general, dac indicii x i y sunt vectori cu componente ntregi, atunci instruciunea:B=A(x,y)creeaz o submatrice B, care conine elementele din liniile x ale coloanelor y ale matricei A. Inversarea coloanelor unei matrice A se face cu instruciunea:A=A(:,n:-1:1) iar inversarea liniilor se face cu instruciunea :A=A(n:-1:1,:)De o mare importan este utilizarea fr indici, care are ca efect transformarea matricei ntr-un vector coloan, citind coloanele una dup alta. Astfel:A = [12;34]b = A(:) are ca rezultat transformarea unei matrice A ntr-un vector coloan:A=b =12
13 4 32 4Dac n partea stng a expresiei este asignat o instruciune de forma A(:), matricea A trebuie deja s existe dintr-o utilizare anterioar. Spre exemplu, secvena: A = {1 2; 3 4 ] A(:)= 11:14 retumeaz matricea: A =111312 14Pentru extragerea vectorilor cu elemente decupate din ali vectori, se folosesc formele:j:k - selecteaz elementele [j, j+1, ..., k] ale unui vector; dac j>k,vectorul rezultat este gol. j:i:k - selecteaz elementele [j, j+i, j+2i, ...,k] ale unui vector; vectorulrezultat este gol dac i>0 i j>k sau dac i0 (A( este notaia matricei transpuse );3. exist o matrice unic R, superior triunghiular, nesingular, care satisface relaia:A=R'R.Factorizarea Cholesky const n descompunerea matricei coeficienilor sistemului conform pct. 3, unde R este numit factorul Cholesky. Sistemul iniial devine:R'Rx=b iar soluia acestuia presupune rezolvarea succesiv a sistemelor: Rfy=b i apoi Rx=y.Factorizarea Cholesky se calculeaz cu funcia MATLAB chot, se apeleaz cu una dintre sintaxele:R=c/?o/(A)[R, p]=c/io/(X)unde:A - este o matrice pozitiv definit;R - este o matrice superior triunghiular, astfel nct R'*R=A;p - este un scalar de test, egal cu zero dac matricea A este pozitiv definit iun ntreg pozitiv n caz contrar. Rezolvarea n MATLAB a unui sistem de ecuaii liniare presupune etapele: se calculeaz factorul Cholesky, cu relaia: R=chol(A); se rezolv sistemul R'y=b cu relaia : y=R'\b; se rezolv sistemul Rx=y cu relaia: x=R\y.Aceste etape se pot scrie compact sub forma:R=c/?o/(A); x=R\R'\b
Cu secvena MATLAB:Exemplul 11.3.3. Calculai factorul Cholesky al matricei:A= [9,1,-1,0;1,9,0,-l;-l,0,9,1;0,-1,1,9] ; [R,p]=chol(A)se obine rezultatul: R =3.0000 0.3333-0.3333 002.98140.0373 -0.3354002.9812 0.3396000 2.9618p = 0(matrice pozitiv definit)11.3.4. Factorizarea LU (lower-upper)Prin factorizare LU, o matrice ptrat este descompus sub forma produsului a dou matrice triunghiulare: una inferior triunghiular, cu elemente 1 pe diagonala principal (matricea L) i cealalt superior triunghiular (matricea U). n MATLAB, factorizarea LU este utilizat pentru obinerea inversei unei matrice cu funcia nv i pentru calculul determinantului cu funcia det. Este totodat baza rezolvrii ecuaiilor liniare prin mprirea matricelor" obinut cu operatorii \ i /.Factorizarea LU a unei matrice se face cu funcia Iu; se apeleaz cu una dintre sintaxele: [L,U]=/u(X) - returneaz o matrice superior triunghiular U i o matrice inferiortriunghiular permutat L, astfel nct X=L*U;[L,U,P]=/u(X) - retumeaz o matrice superior triunghiular n U, inferior triunghiular n L i permutarea matriceal n P, astfel nct L*U=P*X.
Cu secvena MATLAB:A=[1 2 3;4 5 6;7 8 0]; [L,U]=lu(A) se obin rezultatele :L=U =0.1429 1.0000 07.0000 8.0000 00.5714 0.5000 1.000000.8571 3.00001.0000 00004.5000L este o permutare a matricei inferior triunghiulare, iar U este o matrice superior triunghiular. Secvena MATLAB:[L,U,P]=lu(A)retumeaz urmtoarele rezultate:L=U=P=1.0000 0 0 7.000 8.0000 0 0 0 10.1429 1.0000 00 0.8571 3.0000 1 0 00.5714 0.5000 1.0000 0 0 4.5000 0 1 0Inversa unei matrice, X=inv(A), poate fi calculat i cu expresia:X=inv(U)*inv(L) iar determinantul:D=det(A) poate fi calculat cu expresia:D=det{iydet{U)Rezolvarea sistemelor de ecuaii Ax=b prin factorizarea LU presupune soluionarea succesiv a sistemelor:y=L\b i x=U\y11.3.5. Factorizarea QRFactorizarea QR este o descompunere a unei matrice ca produs al unei matrice ortonormale, Q, cu o matrice superior triunghiular, 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, n sensul celor mai mici ptrate, este calculat cu instruciunea: x=A\b, care utilizeaz aceast factorizare. Prin utilizarea factorizrii QR, soluia x este calculat n doi pai:y=Q'*b;x=R\yDescompunerea ortogonal-triunghiular (factorizarea QR) se realizeaz cu funciaqr; se apeleaz cu una dintre sintaxele:[Q,R]=qa(X)- retumeaz matricea triunghiular superioar R de aceeai dimensiune cuX i matricea Q, asfel nct X=Q*R;[Q,R,E]=g/(X) - retumeaz matricea permutat E a matricei superior triunghiulare R, cu elementele diagonalei descresctoare i matricea Q, asfel nct X*E=Q*R. triu(qr(X)) = R;
Cu secvena MATLAB:A=[l 2 3;4 5 6;7 8 0]; [Q,R]=qr(A) se obin rezultatele:Q=R =-129/1048 379/419 881/2158-1048/129 -5079/529 -1685/507-129/262 379/1257 -881/10790379/419 1895/419-1040/1207 -379/1257 881/215800-3722/101311.3.6. Pseudoinversa unei matricePseudoinversa sau inversa generalizat Moore-Penrose a unei matrice se calculeaz cu funcia MATLAB pinv, se apeleaz cu sintaxa: X=pinv(A)Pseudoinversa se utilizeaz, de regul, pentru rezolvarea sistemelor de ecuaii liniare, n sensul celor mai mici ptrate. Matricea X este de aceleai dimensiuni ca A'(transpusa lui A) i verific relaiile: A*X*A = A, X*A*X = X iar AX i XA sunt matrice Hermitice.
i s se verifice c AX i XA sunt matrice Hermitice. Cu secvena MATLAB:A=[l 2 3;4 5 6;7 8 0] ; X=pinv(A); B=A*X; C=X*Ase obin rezultatele: X =-1.7778 0.8889 -0.11111.5556 -0.7778 0.2222-0.1111 0.2222 -0.1111B=C =1.00000.00000.00001.00000.00000.00000.00001.00000.00000.00001.00000.00000.00000.00001.00000.00000.00001.0000