Valores próprios e vetores próprios do MATLAB

Ammar Ali 29 novembro 2021
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.

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

Artigo relacionado - MATLAB Vector