Valores próprios e vetores próprios do MATLAB
Este tutorial irá discutir como encontrar os autovalores e autovetores de uma dada matriz usando a função eig() no MATLAB.
Encontre valores e vetores próprios usando a função eig() no MATLAB
    
Matlab fornece uma função integrada eig() para encontrar os autovalores e autovetores de uma dada matriz. A matriz deve ser quadrada. Caso contrário, o Matlab mostrará um erro; a sintaxe: E = eig(mat) retorna um vetor coluna que contém os autovalores do array mat. Por exemplo, vamos criar um array aleatória e encontrar seus autovalores usando a função eig(). Veja o código abaixo.
mat = [1 3; 4 2]
E = eig(mat)
Resultado:
mat =
     1     3
     4     2
E =
    -2
     5
A sintaxe: [EV, DV] = eig(mat) retorna um array EV cujas colunas são os autovetores direitos e a matriz diagonal DV dos autovalores do array dada mat. Por exemplo, vamos encontrar os autovalores e autovetores do array acima. Veja o código abaixo.
mat = [1 3; 4 2]
[EV,DV] = eig(mat)
Resultado:
mat =
     1     3
     4     2
EV =
   -0.7071   -0.6000
    0.7071   -0.8000
DV =
    -2     0
     0     5
Você também pode verificar o resultado usando a relação: mat x EV - EV x DV = 0. O resultado do lado esquerdo da equação deve ser próximo de zero, mas não exatamente zero porque eig() realiza a decomposição usando computação de ponto flutuante. Como você pode ver, a variável DV contém os autovalores classificados nas entradas diagonais. No entanto, em muitos casos, eles não são classificados. Para classificar esses valores, podemos usar a função diag() para extrair as entradas diagonais e, usando a função sort(), podemos classificar os valores. Por exemplo, vamos criar outra matriz usando a função magic() e encontrar seus valores classificados. Veja o código abaixo.
mat = magic(3)
[EV,DV] = eig(mat)
[SV, indi] = sort(diag(DV))
Resultado:
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
Os valores próprios dentro do array DV não são classificados, mas as funções diag() e sort() classificadas nos valores são agora salvos na variável SV. A função sort() também retornou os índices dos autovalores. Podemos usar os índices para colocar os autovalores classificados de volta na matriz DV. Agora podemos encontrar a matriz DV e EV classificada usando os índices e o vetor SV. Veja o código abaixo.
mat = magic(3);
[EV,DV] = eig(mat);
[SV, indi] = sort(diag(DV));
DVs = DV(indi,indi)
SVs = EV(:,indi)
Resultado:
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 você pode, os DVs de array diagonal agora contêm autovalores classificados. Usando a relação acima, você também pode confirmar o resultado: mat x SVs - SVs x DVs = 0. A sintaxe: [EV, DV, WV] = eig(mat) retorna os autovetores direitos, EV, autovalores, DV, e os autovetores esquerdos, WV. Por exemplo, vamos encontrar os autovetores direitos, autovalores e autovetores esquerdos do tapete do array acima. Veja o código abaixo.
mat = magic(3)
[EV,DV,WV] = eig(mat)
Resultado:
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
Também podemos usar a função eig() para encontrar os autovalores generalizados e autovetores direitos de duas matrizes. A sintaxe: [EV,DV] = eig(mat1, mat2), retorna os autovalores generalizados e autovetores direitos do par (mat1, mat2). Por exemplo, vamos criar duas matrizes e encontrar seus autovalores generalizados e autovetores direitos usando a função eig(). Veja o código abaixo.
mat1 = magic(2)
mat2 = [1 2; 2 1]
[EV,DV] = eig(mat1,mat2)
Resultado:
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 o resultado usando a relação: mat1 x EV - mat2 x EV x DV = 0. O lado esquerdo da equação estará próximo de zero.
