matcap11

32
11. CALCULE CU MATRICE în multe domenii formularea matriceală a problemelor a condus la simplificarea metodelor de rezolvare şi a făcut posibilă extinderea unor soluţii deja cunoscute la domenii noi. 11.1. Manipularea matricelor MATLAB-ul oferă următoarele funcţii pentru manipularea matricelor: diag Creează sau extrage diagonalele matricei; fliplr Roteşte matricea în jurul axei verticale (inversează ordinea coloanelor); flipud Roteşte matricea în jurul axei orizontale (inversează ordinea liniilor); reshape Schimbă dimensiunile matricei (redimensionează matricea); rot90 Roteşte matricea cu un multiplu de 90 de grade; tril Extrage matricea inferior triunghiulară dintr-o matrice; triu Extrage matricea superior triunghiulară dintr-o matrice; : Specifică indicii, rearanjează sau decupează o submatrice. 11.1.1. Extragerea submatricelor prin indici Elementele individuale ale unei matrice se apelează cu numele acesteia, urmat de doi indici, cuprinşi între paranteze rotunde şi separaţi de virgulă. Primul indice semnifică linia, iar al doilea coloana în care se găseşte elementul apelat. De exemplu instrucţiunea: 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

Upload: linndowws

Post on 15-Sep-2015

224 views

Category:

Documents


1 download

DESCRIPTION

cursuri de facultate in romana MatLab

TRANSCRIPT

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