Você está na página 1de 35

Determinacao numerica de autovalores e autovetores:

Metodo de Jacobi
Marina Andretta/Franklina Toledo
ICMC-USP
3 de setembro de 2012
Baseado no livro Calculo Numerico, de Neide B. Franco.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 1 / 35
Metodo de Jacobi
Vamos agora nos concentrar em determinar autovalores e autovetores de
matrizes simetricas.
Matrizes simetricas de ordem n tem a propriedade de possuir n autovalores
reais e n autovetores linearmente independentes.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 2 / 35
Metodo de Jacobi
O Metodo de Jacobi consiste em, dada uma matriz simetrica A, aplicar
uma serie de transformacoes similares
A
k+1
= U
1
k
A
k
U
k
,
k = 1, 2, ..., com A
1
= A.
As matrizes A
1
, A
2
, ... convergem a uma matriz diagonal.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 3 / 35
Metodo de Jacobi
Apos m passos do Metodo de Jacobi, temos
A
m+1
= U
1
m
...U
1
2
U
1
1
AU
1
U
2
...U
m
.
Se A
m+1
D, D matriz diagonal, os elementos da diagonal de A
m+1
sao
aproximacoes para os autovalores de A, e as colunas de V = U
1
U
2
...U
m
sao aproxima coes para os autovetores de A.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 4 / 35
Rotacao de Jacobi
Uma matriz U IR
nn
, com elementos denidos por
_

_
u
pp
= u
qq
= cos(),
u
pq
= u
qp
= sen(),
u
ii
= 1, i = p, i = q,
u
ij
= 0, caso contrario,
para p e q entre 1 e n, e chamada de matriz de rota cao.
Esta nomenclatura vem do fato de que, ao calcular o produto y = Ux,
para um vetor x IR
n
, o vetor resultante y e o vetor x rotacionado de um
angulo no plano dos eixos p e q.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 5 / 35
Rotacao de Jacobi
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 ... 0 0 ... 0 0 ... 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 ... cos() 0 ... 0 sen() ... 0
0 ... 0 1 ... 0 0 ... 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 ... 0 0 ... 1 0 ... 0
0 ... sen() 0 ... 0 cos() ... 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 ... 0 0 ... 0 0 ... 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 6 / 35
Rotacao de Jacobi
Uma rotacao (p, q) de Jacobi e a operacao U
T
AU, com U matriz de
rotacao.
Vamos ver como ca uma matriz A depois de aplicada uma rota cao (p, q)
de Jacobi.
Para isso, vejamos como exemplo o que acontece quando aplicamos uma
rotacao (2, 4) de Jacobi em uma matriz A IR
44
. O que acontece para
(p, q) gerais e matrizes A IR
nn
e analogo.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 7 / 35
Rotacao de Jacobi
U
T
A =
_
_
_
_
1 0 0 0
0 cos() 0 sen()
0 0 1 0
0 sen() 0 cos()
_
_
_
_
_
_
_
_
a
11
a
12
a
13
a
14
a
21
a
22
a
23
a
23
a
31
a
32
a
33
a
33
a
41
a
42
a
43
a
43
_
_
_
_
=
_
_
_
_
a
11
a
12
a
13
a
14
a
21
c a
41
s a
22
c a
42
s a
23
c a
43
s a
24
c a
44
s
a
31
a
32
a
33
a
34
a
21
s + a
41
c a
22
s + a
42
c a
23
s + a
43
c a
24
s + a
44
c
_
_
_
_
= A

,
com c = cos() e s = sen().
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 8 / 35
Rotacao de Jacobi
A

U =
_
_
_
_
a

11
a

12
a

13
a

14
a

21
a

22
a

23
a

23
a

31
a

32
a

33
a

33
a

41
a

42
a

43
a

43
_
_
_
_
_
_
_
_
1 0 0 0
0 cos() 0 sen()
0 0 1 0
0 sen() 0 cos()
_
_
_
_
=
_
_
_
_
a

11
a

12
c a

14
s a

13
a

12
s + a

14
c
a

21
a

22
c a

24
s a

23
a

22
s + a

24
c
a

31
a

32
c a

34
s a

33
a

32
s + a

34
c
a

41
a

42
c a

44
s a

43
a

42
s + a

44
c
_
_
_
_
= A

,
com c = cos() e s = sen().
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 9 / 35
Rotacao de Jacobi
De um modo geral, para uma matriz A IR
nn
e U matriz de rota cao
com angulo no plano dos eixos p e q, o produto U
T
A gera uma matriz
A

denida por
_
_
_
a

pj
= a
pj
cos() a
qj
sen(), 1 j n,
a

qj
= a
pj
sen() + a
qj
cos(), 1 j n,
a

ij
= a
ij
, i = p, i = q, 1 j n.
(1)
O produto A

U gera uma matriz A

denida por
_
_
_
a

ip
= a

ip
cos() a

iq
sen(), 1 i n,
a

iq
= a

ip
sen() + a

iq
cos(), 1 i n,
a

ij
= a

ij
, j = p, j = q, 1 i n.
(2)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 10 / 35
Rotacao de Jacobi
Assim, comparando as matrizes A e A

, apenas os elementos das linhas e


colunas p e q sao modicados. E A

continua sendo simetrica.


Vejamos agora como escrever a mudanca dos elementos a

pp
, a

qq
e a

pq
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 11 / 35
Rotacao de Jacobi
a

pp
= a

pp
cos() a

pq
sen() =
(a
pp
cos() a
pq
sen()) cos() (a
pq
cos() a
qq
sen())sen().
Ou seja,
a

pp
= a
pp
cos
2
() 2a
pq
sen() cos() + a
qq
sen
2
(). (3)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 12 / 35
Rotacao de Jacobi
a

qq
= a

qp
sen() + a

qq
cos() =
(a
pp
sen() + a
qp
cos())sen() + (a
pq
sen() a
qq
cos()) cos().
Ou seja,
a

qq
= a
pp
sen
2
() + 2a
pq
sen() cos() + a
qq
cos
2
(). (4)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 13 / 35
Rotacao de Jacobi
a

pq
= a

pp
sen() + a

pq
cos() =
(a
pp
cos() a
pq
sen())sen() + (a
pq
cos() a
qq
sen()) cos().
Ou seja,
a

pq
= a

qp
= (a
pp
a
qq
)sen() cos() + a
pq
(cos
2
() sen
2
()). (5)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 14 / 35
Rotacao de Jacobi
Portanto, para aplicar rotacoes (p, q) de Jacobi, em vez de calcular o
produto U
T
AU, usamos as formulas (1), (2), (3), (4) e (5).
Vejamos agora um exemplo numerico de como calcular uma rota cao de
Jacobi.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 15 / 35
Rotacao de Jacobi - exemplo
Considere a matriz
A =
_
_
_
_
2 1 3 1
1 0 1 0
3 1 3 0
1 0 0 1
_
_
_
_
.
Vamos fazer uma rotacao de = /2 em torno do elemento
(p, q) = (1, 3).
Temos que cos(/2) = 0 e sen(/2) = 1.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 16 / 35
Rotacao de Jacobi - exemplo
Usando a formula (3), temos que
a

11
= a
11
cos
2
(/2) 2a
13
sen(/2) cos(/2) + a
33
sen
2
(/2) =
2 0 2 3 1 0 + 3 1 = 3.
Usando a formula (4), temos que
a

33
= a
11
sen
2
(/2) + 2a
13
sen(/2) cos(/2) + a
33
cos
2
(/2).
2 1 + 2 3 1 0 + 3 0 = 2.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 17 / 35
Rotacao de Jacobi - exemplo
Usando a formula (5), temos que
a

13
= a

31
= (a
11
a
33
)sen(/2) cos(/2) + a
13
(cos
2
(/2) sen
2
(/2)).
(2 3) 1 0 + 3 (0 1) = 3.
Usando as formulas (1) e (2), temos
a

12
= a

12
= a

12
= a
12
cos() a
32
sen() = 1 0 (1) 1 = 1,
a

14
= a

14
= a

14
= a
14
cos() a
34
sen() = 1 0 0 1 = 0,
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 18 / 35
Rotacao de Jacobi - exemplo
a

32
= a

32
= a

32
= a
12
sen() + a
32
cos() = 1 1 + (1) 0 = 1,
a

34
= a

34
= a

34
= a
14
sen() + a
34
cos() = 1 1 + 0 0 = 1.
Assim, a matriz resultante A

e dada por
A =
_
_
_
_
3 1 3 0
1 0 1 0
3 1 2 1
0 0 1 1
_
_
_
_
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 19 / 35
Metodo de Jacobi
Como mencionamos no incio, o Metodo de Jacobi determina autovalores
e autovetores de uma matriz simetrica atraves de sucessivas rotacoes
A
1
= A A
2
= U
T
1
A
1
U
1
A
3
= U
T
2
A
2
U
2
... A
k+1
= U
T
k
A
k
U
k
D,
com U
i
, i = 1, 2, ..., k matrizes de rota cao e D matriz diagonal.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 20 / 35
Metodo de Jacobi
Para calcular a matriz A
k+1
, escolhemos o maior elemento em modulo
dentre os elementos fora da diagonal de A
k
, que chamamos de a
pq
.
Fazemos, entao, uma rotacao para zerar o elemento a
pq
.
Este processo e repetido ate que uma matriz A
k+1
seja (quase) diagonal.
Quando isto acontece, os elementos da diagonal de A
k+1
sao
aproximacoes dos autovalores de A e as colunas de V = U
1
U
2
...U
k
sao
aproximacoes dos autovetores de A.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 21 / 35
Metodo de Jacobi
Vejamos agora como denir a matriz U
k
de modo que o elemento a

pq
seja
zerado. Supomos que a
pq
= 0, ja que, se isso nao acontecesse, nada
precisaria ser feito.
Usando a expressao (5), queremos que
a

pq
= (a
pp
a
qq
)sen() cos() + a
pq
(cos
2
() sen
2
()) = 0.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 22 / 35
Metodo de Jacobi
Como
sen() cos() =
1
2
sen(2),
cos
2
() sen
2
() = cos(2),
temos que
a
pp
a
qq
=
a
pq
cos(2)
1
2
sen(2)
= 2a
pq
cotg(2)
cotg(2) =
a
qq
a
pp
2a
pq
= .
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 23 / 35
Metodo de Jacobi
Temos ainda que
cotg(2) =
cos(2)
sen(2)
=
cos
2
() sen
2
()
2sen() cos()
=
cos
2
()sen
2
()
cos
2
()
2sen() cos()
cos
2
()
=
1 tg
2
()
2tg()
.
Denote t = tg(). Como cotg(2) = , temos que
=
1 t
2
2t
1 t
2
= 2t
t
2
+ 2t 1 = 0 t =
2
_
4
2
+ 4
2
=
_

2
+ 1.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 24 / 35
Metodo de Jacobi
Multiplicando o numerador e denominador de t por
_

2
+ 1, temos
t =
1

_

2
+ 1
.
Computacionalmente, adotamos
t =
_
1
+sinal ()

2
+1
, = 0,
1, = 0.
Note que escolhemos o sinal positivo ou negativo de modo a obter o
denominador de maior modulo. Assim, sempre teremos |t| 1.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 25 / 35
Metodo de Jacobi
Vamos agora escrever sen() e cos() em fun cao de t.
Observe que
sec
2
() = 1 + tg
2
()
1
cos
2
()
= 1 + tg
2
() cos
2
() =
1
1 + tg
2
()
.
Entao
cos() =
1

1 + t
2
e sen() =
t

1 + t
2
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 26 / 35
Algoritmo
Metodo de Jacobi: dados uma matriz simetrica A IR
nn
, uma
tolerancia e um n umero maximo de itera coes MAXIT, devolve D uma
matriz quase diagonal com aproxima coes dos autovalores da matriz A na
diagonal, ou emite uma mensagem de erro.
Passo 1: Faca k 1.
Passo 2: Enquanto (k MAXIT), execute os passos 3 a 10:
Passo 3: Calcule p, q, 1 p, q n, ndices tais que
|a
pq
| = max
i =j
{|a
ij
|}.
Passo 4: Se |a
pq
| , entao devolva A e pare.
Passo 5: Faca
a
qq
a
pp
2a
pq
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 27 / 35
Algoritmo
Passo 6: Faca t
_
1
+sinal ()

2
+1
, = 0,
1, = 0.
Passo 7: Faca cos()
1

1+t
2
.
Passo 8: Faca sen()
t

1+t
2
.
Passo 9: Dena A

usando as expressoes (1), (2), (3), (4) e (5).


Passo 10: Faca A A

e k k + 1.
Passo 11: Escreva n umero maximo de iteracoes atingido e pare.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 28 / 35
Algoritmo
Note que o algoritmo, como esta denido, nao calcula os autovetores de
A. Para que os autovetores sejam calculados, basta que sejam feitas as
seguintes modicacoes:
No Passo 1 deve ser criada uma matriz V I .
No Passo 9 deve ser formada a matriz U e, depois, deve-se calcular
V VU.
Para tornar esta modicacao do Passo 9 computacionalmente mais
eciente, pode-se deduzir expressoes que correspondem `a transforma cao
VU e, entao, usar estas expressoes para modicar V. Isso faz com que
sejam feitos menos calculos e, ainda, torna dispensavel a aloca cao e
denicao da matriz U.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 29 / 35
Exemplo
Vamos usar o Metodo de Jacobi para determinar os autovalores da matriz
A =
_
_
4 2 0
2 5 3
0 3 6
_
_
.
O maior elemento em modulo, fora da diagonal de A
1
= A, e
a
23
= a
32
= 3.
Assim,
=
a
33
a
22
2a
23
=
6 5
6
= 0.1667.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 30 / 35
Exemplo
Usando o valor de , calculamos t = tg() = 0.8471,
c = cos() = 0.7630 e s = sen() = 0.6464.
Com isso, denimos
U
1
=
_
_
1.0000 0.0000 0.0000
0.0000 0.7630 0.6464
0.0000 0.6464 0.7630
_
_

A
2
= U
T
1
A
1
U
1
=
_
_
4.0000 1.5260 1.2928
1.5260 2.4586 0.0000
1.2928 0.0000 8.5414
_
_
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 31 / 35
Exemplo
O maior elemento em modulo, fora da diagonal de A
2
, e
a
12
= a
21
= 1.5260.
Assim, = 0.5050, t = 0.6153, c = 0.8517 e s = 0.5240.
U
2
=
_
_
0.8517 0.5240 0.0000
0.5240 0.8517 0.0000
0.0000 0.0000 1.0000
_
_

A
3
= U
T
2
A
2
U
2
=
_
_
4.9387 0.0000 1.1011
0.0000 1.5197 0.6774
1.1011 0.6774 8.5414
_
_
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 32 / 35
Exemplo
O maior elemento em modulo, fora da diagonal de A
3
, e
a
13
= a
31
= 1.1011.
Assim, = 1.6360, t = 0.2814, c = 0.9626 e s = 0.2709.
U
3
=
_
_
0.9626 0.0000 0.2709
0.0000 1.0000 0.0000
0.2709 0.0000 0.9626
_
_

A
4
= U
T
3
A
3
U
3
=
_
_
4.6611 0.1239 0.0000
0.1239 1.5197 0.6520
0.0000 0.6520 8.8536
_
_
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 33 / 35
Exemplo
O maior elemento em modulo, fora da diagonal de A
4
, e
a
23
= a
32
= 0.6520.
Assim, = 5.6266, t = 0.0882, c = 0.9961 e s = 0.0879.
U
4
=
_
_
1.0000 0.0000 0.0000
0.0000 0.9961 0.0879
0.0000 0.0879 0.9961
_
_

A
5
= U
T
4
A
4
U
4
=
_
_
4.6228 0.1827 0.0161
0.1827 1.4621 0.0000
0.0161 0.0000 8.9081
_
_
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 34 / 35
Exemplo
Observe que, `a medida que k aumenta, os elementos fora da diagonal de
A
k
tendem a zero.
Assim, os elementos da diagonal de A
k
convergem para os autovalores de
A, que sao 1.45163, 4.63951 e 8.90885.
Se estivermos interessados nos autovetores de A, basta calcular o produto
U
1
U
2
...U
k
.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0300 - Calculo Numerico 3 de setembro de 2012 35 / 35