Calcul des valeurs propres - Plateforme e
Transcription
Calcul des valeurs propres - Plateforme e
Calcul des valeurs propres S. Canu, G. Gasso [email protected] ASI 3 - Calcul numérique pour l’ingénieur November 30, 2015 Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 2 / 66 the www : les pages qui parlent de ASI page2 page6 page3 page1 L= 0 1 1 0 0 0 0 0 0 0 0 0 page4 page5 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 La matrice des connexions... Le vecteur propre à 500.000.000.000 $ Google, Exalead, Yahoo, et les autres... Chaque page est associée à un ensemble de termes (index) et une mesure d’importance : mi Il suffit de présenter les pages associées à des termes classés en fonction de leur mi . Problème : m = [m1 · · · mn ]> est inconnu PageRank Chaque page a ni liens sortants Soit Li l’ensemble des pages pointant vers la page i P m Définissons le score : mi = j∈Li njj ( 1 si j ∈ Li (Pagej → Pagei ) nj m = Am avec Aij = 0 sinon En pratique on résoud : Pm = m avec P = (1 − δ)Ac + δ n1 11> et Ac = A + n1 1d > . L’élément di du vecteur d vaut 1 si la colonne i de A est nulle et 0 sinon. Exemple page2 page6 page3 page4 page1 L= 0 1 1 0 0 0 page5 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 , A = 0 1/2 1/2 0 0 0 0 1/3 0 0 0 1/3 0 0 0 0 0 0 0 0 0 1/2 0 1/3 1/2 0 0 0 1/2 1/2 0 0 0 1 0 0 Exemple (suite) 1 0 1 1/2 1/2 1 1 c A = A + 0 1 0 0 0 0 = 0 6 1 1 0 1 0 | {z } 1/6 1/3 0 0 1/6 1/3 0 0 1/6 0 0 0 1/6 0 0 1/2 1/6 1/3 1/2 0 1/6 0 1/2 1/2 0 0 0 1 0 0 1 δ = 1/10 δ P = (1 − δ)Ac + 11> n Matrice P que l’on ne calcule pas ... Mais on cherche m tel que Pm = m Remarque : δ > Pm = (1 − δ)Ac m + 1 m 1 n 1−δ > δ > = (1 − δ)Am + d 1+ 1 m 1 n n Résonances et valeurs propres (in T. Von Karman, the wind and beyond, 1963) 1831, près de Manchester, des militaires passent un pont au pas les avions qui vibrent et s’écrasent immeubles et tremblements de terre Ariane : moteur et structure pont de Tacoma I I 1,6 km, pointe de la technologie 7 novembre 1940 : vents de 67 km/h, il se désagrège Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 8 / 66 Valeurs propres et vecteurs propres Definition (valeur et vecteur propres) soit A une matrice carrée n × n, v est un vecteur propre de la matrice A s’il existe un scalaire λ (appelé valeur propre) tel que v A λv Av = λv Theorem Une matrice carrée de dimension n × n admet n vecteurs propres démonstration : Avi = λi vi Av = λv ⇒ v̄ > Av = λv̄ > v = λ cas général (λi , vi ) ∈ C × Cn A symétrique (λi , vi ) ∈ IR × IR n et v̄ > Av est un nombre complexe qui se trouve être égal à son conjugué Valeurs propres et vecteurs propres Ecriture matricielle Avi = λi vi ∀ i = 1, · · · , n Supposons les valeurs propres distinctes. On a : A v1 V2 · · · vn = λ1 λ2 v1 V2 · · · vn × .. . λn AV = VD D = diag(λ1 , . . . , λn ), V = v1 v2 . . . vn , vi vecteur de dimension n Exemple 9/5 2/5 AV = VD avec A = , V = 2/5 6/5 √2 5 √1 5 − √15 √2 5 ! et D = diag(2, 1) Propriétés des valeurs et vecteurs propres par convention v est choisi unitaire : kvk = 1 Av = λv v> Av v> v si λ est connu, il suffit de résoudre le système linéaire si v est connu, λ = Av = λv ⇔ (A − λI )v = 0 (attention : la matrice A − λI est singulière !) les valeurs propres sont solution (en maths, pas en informatique !) de l’équation : det(A − λI ) = 0 Cette équation admet toujours n racines complexes. A quelles conditions sur A sont elles réelles ? difficile ! mais si A est symétrique elles sont réelles. Théorème de factorisation Theorem (Décomposition de Schur symétrique (diagonalisation)) le cas des matrices A symétriques : ∀A une matrice symétrique à coefficients réels, ∃V une matrice orthogonale à coefficients réels telle que V > AV = D = diag (λ1 , . . . , λn ) où D est la matrice diagonale des valeurs propres réelles. dans le cas d’une matrice non symétrique, elle peut être diagonalisable si toutes ses valeurs propres sont réelles et distinctes. Si ce n’est pas le cas, deux types de factorisations existent dans le cas général C V complexes et D une matrice triangulaire supérieure complexe avec les valeurs propres sur la diagonale. IR V réelle et D une matrice triangulaire supérieure par blocs de deux pour chaque paire de valeurs propres complexes conjuguées 1 −1 A1 = 0 1 3 0 −3 1 0 1 −1 0 3 A2 = −1 0 A> 1 A1 −1 0 −2 1 2 −1 3 = A4 = 4 −1 4 19 3 2 A3 = 0 1 1 1 1 −1 2 0 −1 3 2 [u,l]=eig(A1) erreur ! [u,l]=eig(A2) [U,T]=schur(A2) λ1 = 2.5 + i; λ2 = 2.5 − i; λ3 = −2 µ1 = 3.4; µ2 = 2.5; µ3 = 1.7 [u,l]=eig(A3) λ1 = 2.8; λ2 = 2.3; λ3 = 0.16 [u,l]=eig(A4) S. Canu, G. Gasso (INSA Rouen - ASI) λ1 = 20.3; λ2 = 3.5; λ3 = 0.17 Valeurs propres November 30, 2015 13 / 66 Propriétés des vecteurs propres réels si A ∈ IRn×n est symétrique, ils sont orthogonaux entre eux Av1 = λ1 v1 Av2 = λ2 v2 ... Avn = λn vn vi> Avj vj> Avi A symétrique : vi> Avj (λi − λj )vi> vj λi 6= λj ⇔ vi> vj = λj vi> vj = λi vi> vj = vj> Avi =0 =0 ils sont souvent choisis unitaires kvi k22 = vi> vi = 1 ils forment une base orthonormée de IRn dans ce cas, la matrice des vecteurs propres V est orthogonale V >V = I ⇔ V −1 = V > si A est symétrique définie positive, ses valeurs propres sont positives > v | {zAv} = λ >0 Les cercles de Gershgorin Theorem (des cercles de Gershgorin) Soit A une matrice carrée et Ri le cercle du plan complexe Ri = {z ∈ C | |z − aii | ≤ n X |aij |} j6=i Alors toutes les valeurs propres de A appartiennent à un des cercles Ri exemple : 4 A= 0 −2 démonstration : et donc Pn j=1 aij vj |λ − aii ||vi | ≤ = λvi n X j6=i 1 1 9 1 2 0 ⇔ |aij | |vj | {|z − 4| ≤ 2} {|z − 2| ≤ 1} {|z − 9| ≤ 2} Pn j6=i ⇔ aij vj = (λ − aii )vi |λ − aii | ≤ n X j6=i |aij | i = 1, n |vj | |vi | Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 16 / 66 Illustration de la puissance itérée x, Ax, A2 x, A3 x, . . . , Ak x, . . . A= 3/2 1 1/2 1 La base des vecteurs propres Supposons que la matrice A admette n vecteurs propres indépendants : les vi forment une base des vecteurs propres. ∀x ∈ IRn , ∃αi , i = 1, n x = α1 v1 + α2 v2 + · · · + αn vn Ax = α1 Av1 + α2 Av2 + · · · + αn Avn = α1 λ1 v1 + α2 λ2 v2 + · · · + αn λn vn Ak x = α1 λk1 v1 + α2 λk2 v2 + · · · + αn λkn vn λk2 λkn k = λ1 α1 v1 + α2 k v2 + · · · + αn k vn λ1 λ1 k ! k λ λn 2 v2 + · · · + αn vn = λk1 α1 v1 + α2 λ1 λ1 si ∀i = 2, n ; |λ1 | > |λi | ⇒ Ak x → α1 v1 λk1 pour k → ∞ La méthode de la puissance itérée on considère la suite z(k+1) = Az(k) ||Az(k) || avec z(0) quelconque... Fonction x, λ ← Puissance_Iteree(A, x) Tant que (on a pas convergé) faire z = Ax x = z/kzk Fait λ = x> Ax illustration numérique 1 1 ça marche A = 1 −2 z = A ∗ z/norm(A ∗ z); ` = z 0 ∗ A ∗ z; [z 0 `] k 0 1 2 3 4 5 6 z1 1 0.8944 0.2425 0.5812 -0.1047 0.3911 -0.2307 z2 1 -0.4472 0.9701 -0.8137 0.9945 -0.9203 0.9730 ` 1 -0.4000 -1.3529 -1.9324 -2.1753 -2.2610 -2.2893 ça ne marche pas I I (0) à cause de l’initialisation : exemple z = 0 2 −1 les valeurs propres sont complexes ! à cause de A = 1 1 Théorème de convergence de la puissance itérée on considère la suite z(k+1) = Az(k) ||Az(k) || avec z(0) quelconque... Theorem (puissance itérée) Si z(0) n’appartient pas au sous espace vectoriel engendré par les vecteurs propres v2 , v3 , . . . , vn de A Alors la suite z(k) vérifie : lim kAz(k) k = |λ1 | k lim signe(λ1 ) z(k) ∝ v1 k→∞ k→∞ démonstration : GVL p 406 th 8.2.1 Variations : la puissance inverse comment calculer la plus petite valeur propre ? Variations : la puissance inverse comment calculer la plus petite valeur propre ? La plus petite valeur propre de A (en valeur absolue) est aussi la plus grande de A−1 (en valeur absolue) Av = λv ⇔ 1 v = A−1 v λ (k) on considère la suite (k+1) zI = A−1 zI (k) ||A−1 zI || (0) avec zI quelconque... Variations : la puissance inverse comment calculer la plus petite valeur propre ? La plus petite valeur propre de A (en valeur absolue) est aussi la plus grande de A−1 (en valeur absolue) Av = λv 1 v = A−1 v λ ⇔ (k) on considère la suite (k+1) zI = A−1 zI (k) ||A−1 zI || (0) avec zI quelconque... La valeur propre la plus proche d’une valeur α ∈ IR qu’on s’est donnée (A − αI )v = (λ − α)v (k) on considère la suite z(k+1) = α (A − αI )−1 zα ||(A − (k) αI )−1 zα || (0) avec zα quelconque... Calculs de toutes les valeurs propres : la déflation Dans le cas des matrices symétriques : A(2) = A − λ1 v1 v1> Av2 = λ2 v2 ⇔ A(2) v2 = (A−λ1 v1 v1> )v2 = Av2 −λ1 v1 v1> v2 = λ2 v2 | {z } =0 si A n’est pas symétrique, on peut utiliser d’autres méthodes Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 24 / 66 La méthode de la puissance itérée sur deux vecteurs (k) (k) (k+1) on considère les suites z1 = quelconques mais orthogonaux Az1 (k) ||Az1 || (k+1) et z2 = Az2 (k) ||Az2 || (0) (0) avec z1 et z2 La méthode de la puissance itérée sur deux vecteurs (k) (k) (k+1) on considère les suites z1 = Az1 (k) ||Az1 || (k+1) et z2 = Az2 (k) ||Az2 || (0) quelconques mais orthogonaux (k+1) (k+1) Pour obtenir 2 vecteurs propres il faut orthogonaliser z1 et z2 Gram-Schmidt : z2 = z2 − z> 2 z1 z1 QR (0) avec z1 et z2 La méthode de la puissance itérée sur deux vecteurs (k) (k) (k+1) on considère les suites z1 = Az1 (k) ||Az1 || (k+1) et z2 = Az2 (k) ||Az2 || (0) quelconques mais orthogonaux (k+1) (k+1) Pour obtenir 2 vecteurs propres il faut orthogonaliser z1 et z2 Gram-Schmidt : z2 = z2 − z> 2 z1 z1 QR Fonction Z , D ← Puissance_Itérée_multiple(A, Z ) Tant que (on a pas convergé) faire Z = AZ Z = orthogonalise(Z ) Fait D = Z > AZ (0) avec z1 et z2 Méthode de la puissance itérée : généralisation à n vecteurs On suppose A ∈ Rn×n est une matrice symétrique Principe Construire une suite {Zk ∈ Rn×n } de matrices orthogonales Factorisation QR > En déduire une suite {Dk = Zk AZk ∈ Rn×n } telle que diag(Dk ) −→ diag(λ1 · · · λn ) Notion de matrices semblables Fonction Z , D ← Puissance_Itérée_multiple(A, Z ) Tant que (on a pas convergé) faire Z = AZ Z = orthogonalise(Z ) Fait D = Z > AZ La factorisation QR (rappel) Soit B une matrice de n lignes et p colonne. Il existe : I I une matrice orthogonale Q de n lignes et n colonnes une matrice triangulaire supérieure R de n lignes et p colonnes telles que : si n > p, B = QR : bR b avec Q b ∈ IRn×p B = QR = Q b R Q= b Q R= 0 Matrices semblables Av = λi vi , i = 1, n Autre écriture matricielle AV = VD avec V orthogonale AV = VD V est orthogonale càd V > V = VV > = I → V > AV = D → ou encore A = VDV > Matrice semblables Soit A ∈ Rn×n une matrice qui admet la décomposition A = VDV > avec V une matrice orthogonale . Soit Q ∈ Rn×n une matrice inversible (resp. orthogonale) ; alors A et QAQ −1 (resp. A et QAQ > ) ont les mêmes valeurs propres. Forme matricielle Avi AQ −1 Qvi QAQ −1 Qvi (QAQ −1 )wi = λi vi ∀ i = λi Q −1 Qvi = λi QVi = λi wi wi = Qvi est le vecteur propre de QAQ −1 AV AQ −1 QV QAQ −1 QV (QAQ −1 )W = VD = Q −1 QVD = QVD = WD W = QV est la matrice des vecteurs propres de QAQ −1 La méthode des itérations orthogonales A est une matrice symétrique → Les valeurs propres de A sont réelles. On considère les suites Zk et Qk : Zk = AQk (Qk+1 , Rk+1 ) = qr(Zk ) Qk Qk> AQk −−−→ v1 , v2 , . . . , vm : k→∞ les vecteurs propres −−−→ diag λ1 , λ2 , . . . , λm : k→∞ Fonction Q, D ← ite_orth(A, Q) Tant que (on a pas convergé) faire Z = AQ [Q, R] = qr(Z ) Fait D = Q > AQ les valeurs propres Que fait la méthode des itérations orthogonales ? (1) On construit les suites de matrices Zk et Qk : Zk = (Qk+1 , Rk+1 ) = AQk qr(Zk ) A la convergence, on souhaite Tk = Qk> AQk −−−−→ diag λ1 , λ2 , . . . , λm k→∞ Explicitons la relation entre les matrices Tk et Tk+1 Tk = = = = = Qk> AQk Qk> (AQk ) Qk> (Zk ) Qk> (Qk+1 Rk+1 ) Q > Qk+1 Rk+1 | k {z } Tk+1 Q I = = = = = > Qk+1 AQk+1 > Qk+1 AQk Qk> Qk+1 > Qk+1 Zk Qk> Qk+1 > Qk+1 (Qk+1 Rk+1 )Qk> Qk+1 Rk+1 Qk> Qk+1 | {z } Q Remarque : Q = Qk> Qk+1 est une matrice orthogonale car étant le produit de deux matrices orthogonales. Par convention posons : Tk+1 = Rk+1 Qk+1 avec Qk+1 Rk+1 = qr(Tk ) Réécriture On a donc établi Tk+1 = Rk+1 Qk+1 avec Qk+1 Rk+1 = qr(Tk ) Autre expression de Tk+1 Tk+1 = I Rk+1 Qk+1 > = Qk+1 Qk+1 Rk+1 Qk+1 > = Qk+1 Tk Qk+1 Conclusions Tk+1 et Tk sont semblables ⇒ Tk+1 et Tk ont les mêmes valeurs propres Tk = Qk> AQk avec Qk matrice orthogonale ⇒ Tk et A sont semblables et donc admettent les mêmes valeurs propres A chaque itération k, diag(Tk ) donne une approximation des valeurs propres de A L’algorithme QR pour les valeurs propres Fonction T ← QR_VP(A) T =A Tant que (on a pas convergé) faire [Q, R] = qr(T ) T = RQ Fait Conclusions L’algo génère une suite de matrices {Tk = Rk Qk } semblables à A Si Tk → T∞ triangulaire sup (ou inf), les valeurs propres de A sont sur la diagonale de T∞ A la convergence, les éléments diagonaux de la matrice carrée T correspondent aux valeurs propres de A Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 33 / 66 Remarques Tk+1 = Rk+1 Qk+1 Tk = = = avec Qk+1 Rk+1 = qr(Tk ) Qk> Tk−1 Qk > Tk−2 Qk−1 Qk Qk> Qk−1 > > Qk Qk−1 . . . Q1> Q0> A Q0 Q1 . . . Qk−1 Qk | {z } | {z } Q> Q Initialisons les itérations avec T = Q0 AQ0> au lieu de A Fonction T ← QR_VP(A) T = Q0> AQ0 Tant que (on a pas convergé) faire [Q, R] = qr(T ) T = RQ Fait Intérêt : casser la complexité des opérations [Q, R] = qr(T ) et T = RQ Casser la complexité O(n3 ) [Q, R] = qr(T ) O(n3 ) T = RQ Casser la complexité O(n3 ) [Q, R] = qr(T ) O(n3 ) T = RQ La forme tridiagonale : si T est tridiagonale... × × 0 0 × × × 0 0 × × × T = . . . . . . . . . . . . 0 0 ... × 0 0 ... 0 0 0 0 ... O(n) [Q, R] = qr(T ) O(n) T = RQ ... 0 0 ... 0 0 ... 0 0 .. . . . . . . . × × 0 × × × 0 × × Le principe de l’algorithme QR sur une forme tridiagonale La forme générale de l’algorithme dépend de trois étapes : 1 réduction tridiagonale T = Q > AQ 2 [Q, R] = qr_tri(T ) 3 T = RQ Fonction T ← QR_VP(A) [H, T ] = tri_diag(A) Tant que (on a pas convergé) faire [Q, R] = qr_tri(T ) T = RQ Fait Etape 1 : la réduction à une forme tridiagonale soit A une matrice symétrique trouver une transformation Φ telle que T = Φ(A). I T soit semblable à A I T soit tri diagonale I T soit symétrique Etape 1 : la réduction à une forme tridiagonale soit A une matrice symétrique trouver une transformation Φ telle que T = Φ(A). Trouver une matrice H telle que T = H > AH : I H orthogonale T soit semblable à A F T v = H > AHv = λv I T soit tri diagonale I T soit symétrique ⇔ AHv = λHv H doit mettre des zéros là où il faut par construction Utiliser les transformations de Householder Trouver une matrice orthogonale H telle que T = H > AH soit tridiagonale L’algorithme de réduction à une forme tridiagonale a11 × 0 . . . 0 × × × × . . . 0 × × × . . . .. .. .. e > AH e1 = →H . . . . . . . . . 1 0 × ... × × 0 × ... × × 0 × × ... × a11 × × . . . × × × × ... × × × × ... × A = . . . . . . . . . . . . . . . × × ... × × × × ... × × × × × ... × 1 0 0 e 1 = 0 H 0 0 0 0 × × × × × × 0 × × × × × × 0 × × × × × × 0 × × × × × × 0 × × × × × × 0 × × × × × × H1 = I − βvv> Exemple de réduction à une forme tridiagonale 1 3 4 A = 3 2 8 4 8 3 −2 v= 4 e> H 1 1 0 0 1 0 .6 .8 3 0 .8 −.6 4 √ 3 1 v= −α avec α = 9 + 16 = 5 4 0 1 0 0 e 1 = I − 2 vv0 = 0 .6 .8 H 20 0 .8 −.6 e1 e > AH e1 A H H 1 = 3 4 1 0 0 1 5 0 2 8 0 .6 .8 = 5 10, 32 1, 76 8 3 0 .8 −.6 0 1, 76 −5, 323 L’algorithme de réduction à une forme tridiagonale Soit la matrice de Householder Hk = I − βvv> , v = A(k + 1 : n, k) I 0 ek = 0 Hk H k n−k k n−k On veut préserver la symétrie Ak = Hk> Ak−1 Hk Ak−1 A11 A1k Ak1 akk = 0 Ank k −1 1 0 Akn Ann n−k k −1 1 n−k A11 A1k A akk k1 Ak = Hk> Ak−1 Hk = 0 Hk> Ank k −1 1 0 Akn Hk Hk> Ann Hk n−k k −1 1 n−k L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) = Ann − βvv> Ann − βAnn vv> + β 2 vv> Ann vv> p = βAnn v L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) = Ann − βvv> Ann − βAnn vv> + β 2 vv> Ann vv> p = βAnn v = Ann − vp> − pv> + β2 vv> pv> + β2 vp> vv> L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) = Ann − βvv> Ann − βAnn vv> + β 2 vv> Ann vv> p = βAnn v = Ann − vp> − pv> + β2 vv> pv> + β2 vp> vv> > = Ann − v(p> − β2 p> vv> ) − (p − β2 vv> p)v> w = p − βv2 p v L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) = Ann − βvv> Ann − βAnn vv> + β 2 vv> Ann vv> p = βAnn v = Ann − vp> − pv> + β2 vv> pv> + β2 vp> vv> > = Ann − v(p> − β2 p> vv> ) − (p − β2 vv> p)v> w = p − βv2 p v = Ann − vw> − wv> L’algorithme de réduction à une forme tridiagonale Hk> Ann Hk = (I − βvv> )Ann (I − βvv> ) = Ann − βvv> Ann − βAnn vv> + β 2 vv> Ann vv> p = βAnn v = Ann − vp> − pv> + β2 vv> pv> + β2 vp> vv> > = Ann − v(p> − β2 p> vv> ) − (p − β2 vv> p)v> w = p − βv2 p v = Ann − vw> − wv> Fonction A ← house_Tri(A) Pour k = 1, n − 2 faire [v, β] = house(A(k + 1 : n, k)) p = β A(k + 1 : n, k + 1 : n) v > w = p − βv2 p v A(k + 1, k) = kA(k + 1 : n, k)k; A(k + 1, k) = A(k, k + 1) A(k + 1 : n, k + 1 : n) = A(k + 1 : n, k + 1 : n) − vw> − wv> Fin Pour Trois faits à propos de l’algorithme qr_tri [Q, R] = qr_tri(T ) 1 il peut être calculé en appliquant n − 1 rotations de Givens 2 Q est une matrice de Hessenberg (quasi triangulaire supérieure) 3 R est une matrice triangulaire supérieure tridiagonale Conservation de la forme tridiagonale T = RQ les matrices Tk sont Hessenberg r11 r12 0 r22 0 Tk+1 = RQ = 0 0 0 0 0 car : r13 r23 r33 0 0 0 r r r 0 q11 q12 q13 0 q q22 q23 0 q q33 r 0 0 q r 0 0 0 0 r les matrices Tk sont aussi symétriques car : Tk+1 = RQ = Q > QRQ = Q > Tk Q Comme elles sont aussi de forme de Hessenberg, elles sont dont tridiagonales. q q q q q q q q q q Exemple 1 2 T = 0 0 2 3 4 0 0 4 5 6 −0.44 0 0 Q = −0.89 0 6 7 0 −2.23 0 R= 0 0 4.2 −3.6 T = 0 0 1 2 3 4 5 6 7 8 7.902 11.444 12.604 12.807 12.838 12.842 12.843 12.843 8.028 5.976 5.088 4.950 4.936 4.935 4.936 4.936 −3.57 4.02 0 0 −3.57 4.77 −6.43 0 −3.6 4.54 −6.39 0 0 −6.39 6.56 −1.78 −0.611 −2.122 −2.397 −2.462 −2.479 −2.483 −2.484 −2.484 0.68 0.70 0.70 0.70 0.70 0.70 0.70 0.70 0.09 −0.04 0.99 0 0.32 −0.16 −0.04 −0.93 T = [1 2 0 0 2 3 4 0 0 4 5 6 0 0 6 7] [Q,R] = qr(T) T = R*Q 0 5.96 −6.76 1.91 0 0 −1.78 0.69 −4.22 −3.05 −1.35 −0.53 −0.20 −0.07 −0.03 −0.01 0.82 −0.41 −0.10 0.36 4.02 −1.67 0.80 −0.40 0.20 −0.10 0.05 −0.02 for i = 1:8 [Q,R] = qr(T); −0.33 T = R*Q; −0.08 disp([i diag(T)’ −0.02 −0.01end −0.00 −0.00 −0.00 −0.00 Détails pratiques décalage [Q, R] = qr_tri(T − sI ) accélération méthode de Ritz astuces ... T = RQ + sI Conclusion pour les matrices symétriques UNE valeur propre : puissance itérée : z = Az : par itérations m valeurs propres I puissance itérée multiple : orthogonalisation par QR [Q, R] = qr(Z ) Z = AQ [Q, R] = qr(Z ) I transformation de AZ en RQ T = RQ [Q, R] = qr(T ) I casser la complexité : utilisation de la forme tridiagonale F F F dans la boucle : O(n) prix à payer : une initialisation O(n3 ) : T = H > AH ... et des astuces Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 47 / 66 Valeur propres et valeurs singulières valeur propres λi de matrices carrées n × n Avi = λi vi , i = 1, n avec (λi , vi ) ∈ C × Cn v valeurs singulières µi de matrice quelconque B ∈ Rn×p Bvi = µi ui B > ui = µi vi µi ≥ 0, ui ∈ IRn et vi ∈ IRp B u Valeur propres et valeurs singulières valeur propres λi de matrices carrées n × n Avi = λi vi , i = 1, n avec (λi , vi ) ∈ C × Cn v valeurs singulières µi de matrice quelconque B ∈ Rn×p Bvi = µi ui B > ui = µi vi µi ≥ 0, ui ∈ IRn et vi ∈ IRp B u A v Liens entre valeur propre et valeur singulière > > 2 |B{zB}vi = µi B ui = µi vi ⇔ A vi vecteur propre de A = B > B et ui vecteur propre de BB > λi = µ2i B> 1 −1 A1 = 0 1 3 0 −3 1 0 1 −1 0 3 A2 = −1 0 A> 1 A1 −1 0 −2 1 2 −1 3 = A4 = 4 −1 4 19 3 2 A3 = 0 1 1 1 1 −1 2 0 −1 3 2 [u,l]=eig(A1) [U,D,V]=svd(A1) erreur ! µ1 = 4.5; µ2 = 1.86; µ3 = 0.41 [u,l]=eig(A2) [U,D,V]=svd(A2) λ1 = 2.5 + i; λ2 = 2.5 − i; λ3 = −2 µ1 = 3.4; µ2 = 2.5; µ3 = 1.7 [u,l]=eig(A3) [U,D,V]=svd(A3) λ1 = 2.8; λ2 = 2.3; λ3 = 0.16 µ1 = 2.4; µ2 = 1.0; µ3 = −0.41 [u,l]=eig(A4) [U,D,V]=svd(A4) S. Canu, G. Gasso (INSA Rouen - ASI) λ1 = 20.3; λ2 = 3.5; λ3 = 0.17 µ1 = 20.3; µ2 = 3.5; µ3 = 0.17 Valeurs propres November 30, 2015 49 / 66 Décomposition en valeurs singulières (1) ∀i 6= j, Bvi u> j Bvi = µi ui = µi u> j ui B > uj vi> B > uj = µj vj = µj vi> vj > > > > u> j Bvi − vi B uj = µi uj ui − µj vi vj {z } | =0 On considère les systèmes orthonormaux : ∀i 6= j, u> j ui = 0 u> i ui = 1 et et vi> vj = 0 vi> vi = 1 Theorem (Décomposition en valeurs singulières) ∀ B ∈ IRn×p , ∃U∈ IRn×n et V ∈ IRp×p deux matrices orthogonales à coefficients réels telles que U > BV = D où D est la matrice diagonale des valeurs singulières réelles. Remarque : ré-écriture de la décomposition en valeurs singulières U > BV BV B = D = UD = UDV > Décomposition en valeurs singulières (2) Soit B une matrice de Rn×p avec n ≥ p Bvi B > ui U = u1 u2 ··· V = v1 v2 ··· = µi ui = µi vi avec ui ∈ Rn , vj ∈ Rp un ∈ Rn×n : matrice orthogonale vp ∈ Rp×p : matrice orthogonale Décomposition complète B = UDV e = diag µ1 D singulières > e D ∈ Rn×p avec D = 0 ··· e D e > DV e U B µp contient les valeurs De façon équivalente e DV e > B=U V> e = U(:, 1 : p) avec U Exemple 1 −1.72 −0.61 −0.35 B= 0 0 0.61 0.35 Décomposition en valeurs singulières de B : B = UDV > avec −1 0√ 0 − 2 √2 U= 0 2 2 0 0 0 √ 2 √2 2 2 0 0 0 0 1 2 0 D= 0 0 0 1 0 0 V = √ 3 2 1 2 1 − √2 3 2 ! e DV e > avec Remarque : la décomposition de B peut encore s’écrire B = U −1 0 e = U 0 0 0√ −√ 22 2 S. Canu, G. Gasso (INSA Rouen - ASI) 2 e= D 2 0 0 1 0 Valeurs propres V = 1 − √2 3 2 √ 3 2 1 2 ! November 30, 2015 52 / 66 Propriétés Décomposition en valeurs singulières (SVD): I SVD complète min(n,p) B = UDV > X = µi ui vi> i=1 I Valeurs propres et valeurs singulières d’une matrice symétrique A(= B > B) = UDU > = p X λi ui u> i λi = µ2i i=1 B symétrique → I λ2i = µ2i (val. propre = val. singulière en val. absolue) Décomposition tronquée : k < min(p, n) B= k X µi ui vi> i=1 Approximation de la matrice B : min kB − u,v uv> k2F = min u,v p n X X i=1 j=1 Bij − ui vj 2 Applications de la SVD Déterminer les propriétés d’une matrice B ∈ Rn×p (avec n ≥ p) I Rang d’une matrice (nombre de valeurs singulières µi > 0) I Norme de Schatten : kBkqq = Pmin(n,p) i=1 µqi Approximation de rang k d’une matrice I B̂ ≈ Pk i=1 µi ui vi> Calcul de la solution d’un problème de moindres carrés I Résoudre Bx = d avec x ∈ Rp > e DV e > x = c −→ x = V D e −1 U e > c = Pp vi ui d U i=1 µi Applications en traitement d’images I Débruitage d’images I Compression d’images SVD et estimation des valeurs manquantes d’une matrice Theorem (approximation d’une matrice par une matrice de rang k) La meilleure approximation d’une matrice B par une matrice R de rang k min kB − rang(R)=k Rk2F = min u,v p n X X Bij − Rij 2 = µ2k+1 i=1 j=1 est donnée par la SVD associée aux k plus grandes valeurs singulières (en valeur absolue) R = Uk Dk Vk> Application : pour estimer Bij on choisit k on calcul la SVD à l’ordre k : Uk , Dk , Vk k X on estime B̂ ij = Uiκ Dκκ Vjκ κ=1 Nettoyage d’une image (image denoising) Xb = [u,d,v]=svd(Xb); for k=1:4 subplot(2,2,k); I=u(:,1:k)*d(1:k,1:k)*v(:,1:k)’); imagesc(I); end L’approximation « en moyenne » gomme les contours. Sur des images de visages « normalisées » on retrouve des « visages singuliers » S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 56 / 66 Compression d’une image Image originale : X ∈ Rn×p Original (Rang = 200) 20 40 60 80 100 120 140 160 180 200 X = 50 100 150 200 250 300 Rang = 2 Rang = 5 20 20 40 40 60 [u,d,v]=svd(X); vecteurk = [2 5 15 50] for i=1:lenght(vecteurk) k = vecteurk(i); I=u(:,1:k)*d(1:k,1:k)*v(:,1:k)’); subplot(2,2,i); imagesc(I); end 60 80 80 100 100 120 120 140 140 160 160 180 200 180 50 100 150 200 250 300 50 100 20 20 40 40 60 80 100 100 120 120 140 140 250 300 250 300 160 180 Valeurs propres 200 60 80 200 150 Rang = 50 160 S. Canu, G. Gasso (INSA Rouen - ASI) 200 Rang = 5 180 50 100 150 200 250 300 200 50 100 150 November 30, 2015 200 57 / 66 Plan 1 Valeurs propres et vecteurs propres Le vecteur propre à 500.000.000.000 $ La notion de valeur propre et vecteur propre 2 Calcul des valeurs propres d’une matrice réelle symétrique La méthode de la puissance itérée Algorithmes pour calculer m ≤ n valeurs propres d’une matrice symétrique La méthode des itérations orthogonales L’algorithme QR pour valeurs propres L’algorithme QR sur une forme tridiagonale 3 Algorithmes pour calculer la décomposition en valeurs singulières Notion de décomposition en valeurs singulières Calcul de la décomposition en valeurs singulières S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 58 / 66 ...en passant pas les valeurs propres Bvi B > ui = µi ui = µi vi B = UDV > > eU e> B = VD B(B > ui ) = µi Bvi = µ2i ui B > (Bvi ) = µi B > vi = µ2i vi BV = UD e = VD e B >U première tentative eig(B > B) ou eig(BB > ) bon quand p << n problème pour les petites valeurs singulières quand B est mal conditionné S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres B > BV e BB > U = B > UD = VD 2 e = UD e2 = BV D e = 10^-12; B = [1 0 0 0 1 0 0 0 1 e e e] A = B’*B svd(B)-1 1.0e-015 * 0.2220 eig(A)-1 0 November 30, 2015 59 / 66 ...en passant pas les valeurs propres deuxième tentative Bv = µu B > u = µv 0u + Bv = µu B > u + 0v = µv [n,p] = size(B); l = eig([zeros(n) B B’ zeros(p)]) eig (C = [0 B; B > 0]) l = QCQ > = -1.0000 diag (µ1 , . . . , µp , −µ1 , . . . , −µp , 0, . . . , 0) | {z } -1.0000 n−p -1.0000 1 V V 0 0.0000 √ Q= √ avec U = (U1 ; U2 ) 2U2 2 U1 −U1 1.0000 1.0000 n + p valeurs et vecteurs propres 1.0000 deux fois trop de mémoire, et deux fois trop de travail S. Canu, G. Gasso (INSA Rouen - ASI) Valeurs propres November 30, 2015 60 / 66 Calcul direct les deux étapes I bidiagonalisation (par exemple en utilisant Householder) B = Ub FVb> I diagonalisation de la matrice bidiagonale F = Ud DVd> le résultat final : B = Ub Ud D Vd> Vb> | {z } | {z } U V> bidiagonalisation B = Ub FVb> Matrices de Householder (Golub et Kahan, 1965) × × × × × × × × × × × × × × × × × × 0 × U1 0 0 × 0 × × × × × × × × × × × × × × 0 × V1 0 0 × × 0 × × × × × 0 × × × × 0 × × × × × 0 U2 0 0 0 × × 0 0 0 0 × × × × 0 × × 0 × V2 0 0 × × 0 × × 0 0 0 0 × × × × 0 × 0 0 × U3 0 0 × × 0 × × 0 0 0 0 × × 0 0 0 0 × U4 × × bidiagonalisation B = Ub FVb> Matrices de Householder (Golub et Kahan, 1965) × × × × × × × × × × × × × × × × × × 0 × U1 0 0 × 0 × × × × × × × × × × × × × × 0 × V1 0 0 × × 0 × × × × × 0 × × × × 0 × × × × × 0 U2 0 0 0 × × 0 0 0 0 × × × × 0 × × 0 × V2 0 0 × × 0 × × 0 0 0 0 × × × × 0 × 0 0 × U3 0 0 × × 0 × × 0 0 0 0 × × 0 0 0 0 × U4 × × α1 β1 0 0 0 α2 β 2 0 > > 0 0 α3 β3 U4 U3 U2 U1 B V1 V2 = F = | {z } | {z } 0 0 0 α4 > Ub Vb 0 0 0 0 Bidiagonalisation par itérations BVb = Ub Fe Ub> B = Fe Vb> B > Ub = Vb Fe > B = Ub Fe Vb> α1 0 e= F . .. 0 β1 α2 .. . 0 ... ... .. . .. . .. . vk uk−1 .. . αp−1 0 0 .. . β p−1 αp Bvk B > uk BVb = Ub F e> B > Ub = Vb F ⇔ ⇔ = βk−1 uk−1 + αk uk = βk vk+1 + αk vk Bv1 = α1 u1 Bv2 = β1 u1 + α2 u2 ... ... Bvk = βk−1 uk−1 + αk uk ... ... Bvp = βp−1 up−1 + αp up B > u1 = β1 v2 + α1 v1 B > u2 = β2 v3 + α2 v2 ... ... B > uk = βk vk+1 + αk vk ... ... B > up = αp vp vk+1 uk L’algorithme de bidiagonalisation Bvk B > uk = βk−1 uk−1 + αk uk = βk vk+1 + αk vk p = v; β0 = 1; u = 0 V = [ ] ; U = [ ] ; k = 1 Pour k = 1, p faire v = p/βk−1 V = [V v ] r = Bv − βk−1 u αk = krk u = r/αk U = [U u] p = B > u − αk v βk = kpk k =k +1 Fin Pour Problèmes d’instabilité : il faut réorthogonaliser les u et les v... diagonalisation de la matrice bidiagonale F = Ud DVd> C’est facile sur une matrice bidiagonale... eig (F > F ) rotations de Givens sur B directement attention au rôle des 0 sur la super diagonale Conclusion SVD = valeurs propres algorithmes O(n3 ) : c’est le plus difficile (c’est encore un problème ouvert : parallélisation, grandes matrices...) si p << n valeurs propres si B creuse SVD