9 PROBLEME DE VALORI ŞI VECTORI PROPRII 81 Introducere Problema de valori proprii a unui operator liniar A: Ax = λx x vector propriu, λ valoare proprie În reprezentarea unei baze din < n problemă matricială cua =[a ij ] nn, x =[x i ] n : A x = λx, sau (A λe) x =0 a 11 a 12 a 1n a 21 a 22 a 2n a n1 a n2 a nn x 1 x 2 x n = λ det(a λe) determinant caracteristic (secular) Sistem liniar omogen soluţii netriviale dacă şi numai dacă: det(a λe) =0 x 1 x 2 x n Ecuaţia caracteristică (seculară): a 11 λ a 12 a 1n a 21 a 22 λ a 2n a n1 a n2 a nn λ =0 n rădăcini reale sau complexe λ 1,λ 2,, λ n spectrul matricii A λ = λ j în ecuaţia de valori proprii soluţia x (j) vectorul propriu corespunzător
82 Diagonalizarea matricilor prin transformări similare Fie X matricea având pe coloane vectorii proprii x (j) matrice modală Cele n ecuaţii de valori proprii sub formă matricială ecuaţie modală: A X = X Λ unde X = x (1) 1 x (2) 1 x (n) 1 x (1) 2 x (2) 2 x (n) 2 x (1) n x (2) n x (n) n, Λ = λ 1 0 0 0 λ 2 0 0 0 λ n Teorema 91 Dacă matricea modală X corespunzătoare unei matrici A este formată din n coloane liniar independente (vectorii proprii ai matricii A sunt liniar independenţi), atunci există X 1 şi ecuaţia modală sescriesubforma X 1 A X = Λ Matricile asociate aceluiaşi operator relativ la două baze diferite matrici similare Teorema 92 Două matrici cu elemente reale, A, B M n n <, sunt similare dacă şi numai dacă există o matrice nesingulară S M n n <,astfelca B = S 1 A S, operaţie care se numeşte transformare similară a matricii A Teorema 93 Două matrici similare au aceleaşi valori proprii Vectorii proprii corespunzatori rezultă unii din alţii cu ajutorul matricii transformării Ecuaţia modală X 1 A X = Λ A şi Λ sunt similare Matricile similare cu o matrice diagonală se numesc matrici diagonalizabile Importanţa procesului de diagonalizare Dacă se poate găsi o transformare care diagonalizează matricea: valorile proprii se află pe diagonala principală a matricii transformate vectorii proprii corespunzători sunt coloanele matricii transformării 2
83 Metoda lui Jacobi Probleme de valori şi vectori proprii pentru matrici reale simetrice Vectorii proprii reali şi ortogonali diagonalizare cu ajutorul unei matrici ortogonale: R R T = R T R = E sau R 1 = R T Diagonalizarea prin transformarea de similitudine: R T A R = Λ Ideea: Transformări similare ortogonale succesive anulează câte două elemente simetrice Transformările distrug zerourile anterioare, dar diagonalizează treptat matricea Produsul transformărilor matricea modală pe coloane vectorii proprii Cazul 2 2 transformare ortogonală matricederotaţie plană: cos ϕ sin ϕ R = sin ϕ cos ϕ Rotire de unghi ϕ a sistemului vectorilor de bază ϕ rezultă din condiţia ca R să diagonalizeze matricea A Transformarea ortogonală: Elementele: A 0 = R T A R a 0 11 = a 11 cos 2 ϕ +2a 21 sin ϕ cos ϕ + a 22 sin 2 ϕ a 0 22 = a 11 sin 2 ϕ 2a 21 sin ϕ cos ϕ + a 22 cos 2 ϕ a 0 21 = a 21 (cos 2 ϕ sin 2 ϕ)+(a 22 a 11 )sinϕ cos ϕ = a 0 12, Transformarea conservă caracterul simetric al matricii Condiţia de anulare a elementelor nediagonale ale matricii A 0 : cot 2 ϕ + a 22 a 11 cot ϕ 1=0 a 21 Rezolvare în raport cu cot ϕ: s tan ϕ = a µa11 2 11 a 22 a 22 ± +1 2a 21 2a 21 Se determină cos ϕ =(1+tanϕ) 1/2 şi sin ϕ =tanϕ cos ϕ Valorile şi vectorii proprii: cos ϕ λ 1 = a 0 11, x (1) = sin ϕ sin ϕ λ 2 = a 0 22, x (2) = cos ϕ Diagonalizare exactă printr-o singură transformare ortogonală 3 1
Cazul n n R(i, j) = 1 0 cos ϕ sin ϕ sin ϕ cos ϕ 0 1 coloana i coloana j linia i linia j Transformarea ortogonală anulează elementele extradiagonale a 0 ij şi a0 ji: A 0 = R T (i, j) A R(i, j) Singurele elemente diferite de ale matricii A pe liniile şi coloanele i şi j Rescriem: Detaliat: Ã = A R(i, j), A 0 = R T (i, j) Ã ã 1i ã ni ã 1j ã nj ã ki ã kj = a 1i a 1j a ki a kj a ni a nj Elementele relevante de pe coloanele i şi j: ½ ãki = a ki cos ϕ + a kj sin ϕ, k =1, 2,, n ã kj = a ki sin ϕ + a kj cos ϕ 1 0 a 0 i1 a 0 ik a 0 in cos ϕ sin ϕ = a 0 j1 a 0 jk a 0 jn sin ϕ cos ϕ 0 1 Elementele relevante de pe liniile i şi j: ½ a 0 ik = ã ik cos ϕ +ã jk sin ϕ, k =1, 2,, n a 0 jk = ã ik sin ϕ +ã jk cos ϕ Elementele modificate ale matricii A 0 a 0 ik = a0 ki = a ik cos ϕ + a jk sin ϕ, k =1, 2,, n a 0 jk = a0 kj = a ik sin ϕ + a jk cos ϕ, k 6= i, j a 0 ii = a ii cos 2 ϕ +2a ji sin ϕ cos ϕ + a jj sin 2 ϕ a 0 jj = a ii sin 2 ϕ 2a ji sin ϕ cos ϕ + a jj cos 2 ϕ a 0 ij = a 0 ji = a ji (cos 2 ϕ sin 2 ϕ)+(a jj a ii )sinϕcos ϕ 1 0 cos ϕ sin ϕ sin ϕ cos ϕ 0 1 ã i1 ã ik ã in ã j1 ã jk ã jn 4
Condiţia de anulare a elementelor nediagonale ale matricii A 0 : Rezolvare în raport cu cot ϕ: tan ϕ = cot 2 ϕ + a jj a ii a ji cot ϕ 1=0 a ii a jj 2a ji ± s µaii a jj 2a j i 2 +1 1 Se determină: cos ϕ = 1 p 1+tan 2 ϕ, sin ϕ =cosϕtan ϕ Şir de matrici similare având acelaşi sistem de valori proprii: A 0 = A, A l = R T l A l 1 R l, l =0, 1, 2, Şir de matrici ortogonale X 0 R 0 E, X l = R 0 R 1 R l, l =0, 1, 2, Şirul de matrici similare: La limită: A 0 = A, A l = X T l A X l, l =0, 1, 2, lim l A l = Λ, lim X l = X l Relaţiederecurenţă: X l = X l 1 R l (i, j) Elementele modificate ale matricii X l : ½ x 0 ki = x ki cos ϕ + x kj sin ϕ, k =1, 2,, n, x 0 kj = x ki sin ϕ + x kj cos ϕ Criteriu de convergenţă: max i6=j a0 ij ε Diagonala lui A l valorile proprii, coloanele lui X l vectorii proprii Stabilitatea metodei rotaţieavectorilordebază de unghi ϕ minim (ϕ π/4) Maximizarea valorii absolute a numitorului expresiei tan ϕ: µ s 1 µaii aii a jj tan ϕ = sign a ii a jj 2 2a ji 2a ji + a jj +1 2a ji 5
/*=========================================================================*/ int Jacobi(float **a, float **x, float d[], int n) /*--------------------------------------------------------------------------- Rezolva problema de valori si vectori proprii pt o matrice reala simetrica a - matricea reala simetrica (jumatatea inferioara este distrusa) x - matricea modala: coloanele sunt vectorii proprii (iesire) d - tabloul valorilor proprii n - ordinul matricii a Returneaza indicele de eroare: 0 - executie normala 1 - nr maxim de iteratii depasit ---------------------------------------------------------------------------*/ { const float eps = 1e-30; /* criteriu de precizie */ const int itmax = 50; /* nr maxim de iteratii */ float aii, aji, ajj, amax, c, s, t; int i, it, j, k; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) x[i][j] = 00; /* initializeaza matricea */ /* modala x cu matricea E */ x[i][i] = 10; /* si valorile proprii d */ d[i] = a[i][i]; /* cu elementele diag */ for (it=1; it<=itmax; it++) { amax = 00; for (j=2; j<=n; j++) for (i=1; i<=(j-1); i++) { /* salveaza elementele diag */ aii = d[i]; ajj = d[j]; aji = fabs(a[j][i]); if (amax < aji) amax = aji; /* elem extradiag maxim */ if (aji > eps) { /* efectueaza rotatia */ c = 05*(aii-ajj)/a[j][i]; t = 10/(fabs(c) + sqrt(10+c*c)); /* tangenta */ if (c < 00) t = -t; c = 10/sqrt(10+t*t); s = c*t; /* semnul corect */ /* cos, sin */ for (k=1; k<=(i-1); k++) { t = a[i][k]*c + a[j][k]*s; /* 1 <= k < i */ a[j][k] = a[j][k]*c - a[i][k]*s; a[i][k] = t; for (k=(i+1); k<=(j-1); k++) { /* i < k < j */ t = a[k][i]*c + a[j][k]*s; a[j][k] = a[j][k]*c - a[k][i]*s; a[k][i] = t; for (k=(j+1); k<=n; k++) { /* j < k <= n */ t = a[k][i]*c + a[k][j]*s; a[k][j] = a[k][j]*c - a[k][i]*s; a[k][i] = t; for (k=1; k<=n; k++) { t = x[k][i]*c + x[k][j]*s; /* matricea modala */ x[k][j] = x[k][j]*c - x[k][i]*s; x[k][i] = t; t = 2 * s * c * a[j][i]; /* actualizeaza */ d[i] = aii*c*c + ajj*s*s + t; /* elementele */ d[j] = aii*s*s + ajj*c*c - t; /* diagonale si */ a[j][i] = 00; /* extradiagonale */ if (amax<=eps) return 0; /* testeaza convergenta */ printf("jacobi: nr maxim de iteratii depasit!\n"); return 1; 6