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