Autovalores y autovectores de MATLAB

Ammar Ali 29 noviembre 2021
Autovalores y autovectores de MATLAB

Este tutorial discutirá cómo encontrar los autovalores y autovectores de un array dada usando la función eig() en MATLAB.

Encuentre autovalores y autovectores usando la función eig() en MATLAB

Matlab proporciona una función incorporada eig() para encontrar los autovalores y autovectores de un array dada. el array debe ser un array cuadrada. De lo contrario, Matlab mostrará un error; la sintaxis: E = eig(mat) devuelve un vector de columna que contiene los valores propios del array mat. Por ejemplo, creemos un array aleatoria y encontremos sus valores propios usando la función eig(). Vea el código a continuación.

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

Producción :

mat =

     1     3
     4     2


E =

    -2
     5

La sintaxis: [EV, DV] = eig(mat) devuelve un array EV cuyas columnas son los autovectores rectos y el array diagonal DV de los autovalores del array dada mat. Por ejemplo, busquemos los autovalores y autovectores del array anterior. Vea el código a continuación.

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

Producción :

mat =

     1     3
     4     2


EV =

   -0.7071   -0.6000
    0.7071   -0.8000


DV =

    -2     0
     0     5

También puede verificar el resultado usando la relación: mat x EV - EV x DV = 0. El resultado del lado izquierdo de la ecuación debe ser cercano a cero pero no exactamente cero porque eig() realiza la descomposición usando cálculo de punto flotante. Como puede ver, la variable DV contiene los valores propios ordenados en las entradas diagonales. Sin embargo, en muchos casos, no están clasificados. Para ordenar estos valores, podemos usar la función diag() para extraer las entradas diagonales, y usando la función sort(), podemos ordenar los valores. Por ejemplo, creemos otra matriz usando la función magic() y busquemos sus valores ordenados. Vea el código a continuación.

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

Producción :

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

Los valores propios dentro del array DV no están ordenados, pero las funciones diag() y sort() ordenaron los valores ahora se guardan en la variable SV. La función sort() también devolvió los índices de los valores propios. Podemos usar los índices para volver a poner los valores propios ordenados en el array DV. Ahora podemos encontrar el array DV y EV ordenada usando los índices y el vector SV. Vea el código a continuación.

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

Producción :

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

Como puede, el array diagonal DV ahora contiene valores propios ordenados. Usando la relación anterior, también puede confirmar el resultado: mat x SVs - SVs x DVs = 0. La sintaxis: [EV, DV, WV] = eig(mat) devuelve los autovectores derechos, EV, autovalores, DV y los autovectores izquierdos, WV. Por ejemplo, busquemos los autovectores derechos, autovalores y autovectores izquierdos del array de arriba. Vea el código a continuación.

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

Producción :

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

También podemos usar la función eig() para encontrar los autovalores generalizados y los autovectores rectos de dos matrices. La sintaxis: [EV,DV] = eig(mat1, mat2), devuelve los autovalores generalizados y los autovectores derechos del par (mat1, mat2). Por ejemplo, creemos dos matrices y encontremos sus autovalores generalizados y autovectores rectos usando la función eig(). Vea el código a continuación.

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

Producción :

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

Podemos verificar el resultado usando la relación: mat1 x EV - mat2 x EV x DV = 0. El lado izquierdo de la ecuación estará cerca de cero.

Autor: 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

Artículo relacionado - MATLAB Vector