Valeurs propres et vecteurs propres MATLAB

Ammar Ali 29 novembre 2021
Valeurs propres et vecteurs propres MATLAB

Ce tutoriel abordera la recherche des valeurs propres et des vecteurs propres d’une matrice donnée à l’aide de la fonction eig() dans MATLAB.

Trouver des valeurs propres et des vecteurs propres à l’aide de la fonction eig() dans MATLAB

Matlab fournit une fonction intégrée eig() pour trouver les valeurs propres et les vecteurs propres d’une matrice donnée. La matrice doit être une matrice carrée. Sinon, Matlab affichera une erreur ; la syntaxe : E = eig(mat) renvoie un vecteur colonne qui contient les valeurs propres de la matrice mat. Par exemple, créons une matrice aléatoire et trouvons ses valeurs propres à l’aide de la fonction eig(). Voir le code ci-dessous.

mat = [1 3; 4 2]
E = eig(mat)

Production:

mat =

     1     3
     4     2


E =

    -2
     5

La syntaxe : [EV, DV] = eig(mat) renvoie une matrice EV dont les colonnes sont les vecteurs propres droits et la matrice diagonale DV des valeurs propres de la matrice mat donnée. Par exemple, trouvons les valeurs propres et les vecteurs propres de la matrice ci-dessus. Voir le code ci-dessous.

mat = [1 3; 4 2]
[EV,DV] = eig(mat)

Production:

mat =

     1     3
     4     2


EV =

   -0.7071   -0.6000
    0.7071   -0.8000


DV =

    -2     0
     0     5

Vous pouvez également vérifier le résultat en utilisant la relation : mat x EV - EV x DV = 0. Le résultat du membre de gauche de l’équation doit être proche de zéro mais pas exactement zéro car eig() effectue la décomposition en utilisant calcul en virgule flottante. Comme vous pouvez le voir, la variable DV contient les valeurs propres triées au niveau des entrées diagonales. Cependant, dans de nombreux cas, ils ne sont pas triés. Pour trier ces valeurs, nous pouvons utiliser la fonction diag() pour extraire les entrées diagonales, et en utilisant la fonction sort(), nous pouvons trier les valeurs. Par exemple, créons une autre matrice à l’aide de la fonction magic() et trouvons ses valeurs triées. Voir le code ci-dessous.

mat = magic(3)
[EV,DV] = eig(mat)
[SV, indi] = sort(diag(DV))

Production:

mat =

     8     1     6
     3     5     7
     4     9     2


EV =

   -0.5774   -0.8131   -0.3416
   -0.5774    0.4714   -0.4714
   -0.5774    0.3416    0.8131


DV =

   15.0000         0         0
         0    4.8990         0
         0         0   -4.8990


SV =

   -4.8990
    4.8990
   15.0000


indi =

     3
     2
     1

Les valeurs propres à l’intérieur de la matrice DV ne sont pas triées, mais les fonctions diag() et sort() ont trié les valeurs sont maintenant enregistrées dans la variable SV. La fonction sort() a également renvoyé les indices des valeurs propres. On peut utiliser les indices pour remettre les valeurs propres triées dans la matrice DV. Nous pouvons maintenant trouver la matrice DV et EV triée en utilisant les indices et le vecteur SV. Voir le code ci-dessous.

mat = magic(3);
[EV,DV] = eig(mat);
[SV, indi] = sort(diag(DV));
DVs = DV(indi,indi)
SVs = EV(:,indi)

Production:

DVs =

   -4.8990         0         0
         0    4.8990         0
         0         0   15.0000


SVs =

   -0.3416   -0.8131   -0.5774
   -0.4714    0.4714   -0.5774
    0.8131    0.3416   -0.5774

Comme vous pouvez, la matrice diagonale DVs contient maintenant des valeurs propres triées. En utilisant la relation ci-dessus, vous pouvez également confirmer le résultat : mat x SVs - SVs x DVs = 0. La syntaxe : [EV, DV, WV] = eig(mat) renvoie les vecteurs propres de droite, EV, les valeurs propres, DV, et les vecteurs propres de gauche, WV. Par exemple, trouvons les vecteurs propres droits, les valeurs propres et les vecteurs propres gauches du tapis matriciel ci-dessus. Voir le code ci-dessous.

mat = magic(3)
[EV,DV,WV] = eig(mat)

Production:

EV =

   -0.5774   -0.8131   -0.3416
   -0.5774    0.4714   -0.4714
   -0.5774    0.3416    0.8131


DV =

   15.0000         0         0
         0    4.8990         0
         0         0   -4.8990


WV =

   -0.5774   -0.7416   -0.0749
   -0.5774    0.6667   -0.6667
   -0.5774    0.0749    0.7416

On peut aussi utiliser la fonction eig() pour trouver les valeurs propres généralisées et les vecteurs propres droits de deux matrices. La syntaxe : [EV,DV] = eig(mat1, mat2), renvoie les valeurs propres généralisées et les vecteurs propres droits du couple (mat1, mat2). Par exemple, créons deux matrices et trouvons leurs valeurs propres généralisées et leurs vecteurs propres droits à l’aide de la fonction eig(). Voir le code ci-dessous.

mat1 = magic(2)
mat2 = [1 2; 2 1]
[EV,DV] = eig(mat1,mat2)

Production:

mat1 =

     1     3
     4     2


mat2 =

     1     2
     2     1


EV =

    1.0000   -0.5000
   -1.0000    1.0000


DV =

    2.0000         0
         0    1.6667

Nous pouvons vérifier le résultat en utilisant la relation : mat1 x EV - mat2 x EV x DV = 0. Le membre de gauche de l’équation sera proche de zéro.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Vector