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.