Diagonalisation matrices symetriques nxn

Description

J'avais déjà fait une source sur la diagonalisation d'une matrice symétrique 3x3.
Ici je présente la généralisation au cas des matrices NxN (avec par exemple N=10).

L'algorithme ressemble a celui des puissances itérées :
Soit M une matrice symetrique réelle. Elle est donc diagonalisable dans une
base orthonormée. On note O la matrice de passage de la base canonique a
la base de diagonalisation. O est un matrice orthogonale est on a la relation :
M = O.D.tO où tO est la transposée de O et D une matrice diagonale.

Le but est de trouver O, ie les vecteurs propres. On obtient les valeurs propres
en calculant D = tO.M.O (tO = O^-1 !!!)

Le principe est de faire :
O := M.O (on applique M a chaque vecteur colonne)
O := GramSchmidt(O) (procédé d'orthonormalisation de Gram-Schmidt)
Puis de répéter autant de fois que nécéssaire.
Le premier vecteur colonne de O va converger vers un vecteur propre
de norme 1 et de valeur propre maximale. Ensuite le second vecteur
colonne vers le vecteur propre associé & la seconde plus grande valeur
propre (en module !), ect...

Vous pouvez verifier que les valeurs propres sont dans l'ordre
decroissant en module

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.