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.