Você está na página 1de 28

Método iterativo para solução de sistemas lineares

Gradientes e Gradientes Conjugados

Silvia Maria Pereira Grandi dos Santos


USP - São Carlos/SP
Outubro 2008
Roteiro

I Motivação;

I Processos de Relaxação;

I Estudo do caso f (x) = 12 xT Ax − bT x + x;

I Método dos Gradientes;

I Direção Conjugada;

I Método dos Gradientes Conjugados;

I Exemplo resolvido.
Motivação

Considere o sistema linear Ax = b. Deseja-se encontrar a solução x desse


sistema.

Muitas vezes, usar Métodos Exatos para encontrar a solução desse sistema é
tão eficiente quanto usar Métodos Iterativos, mas a situação pode se
complicar quando usamos Métodos Exatos em sistemas cuja matriz dos
coeficientes, A, é uma matriz esparsa (cheia de zeros).

O Método dos Gradientes é utilizado quando a matriz A é simétrica definida


positiva.
Processos de Relaxação
I Dado um sistema Ax = b e um ponto para a aproximação inicial x(0) da
solução do sistema, queremos reduzir o resíduo dado por
r(0) = b − Ax(0)
até que este resíduo seja nulo.

I Para que o resíduo diminua, tomamos uma direção v e corrigimos x(0)


nesta direção, ou seja,
x(1) = x(0) + λ~v de forma que r(1) = b − Ax(1) < r(0) .

I Dessa forma, construimos uma sequência {x(k) } que converge para a


solução do sistema Ax = b, pois estamos considerando que o resíduo
diminua em cada passo do processo iterativo, ou seja,
r(k+1) < r(k) .

I Quando k → ∞ temos r(k) → 0 e, dessa forma, Ax(k) → b e k(k) é uma


aproximação para a solução do sitema dado Ax = b.
Estudo de um caso específico
1
Para o estudo da função f (x) = xT Ax − bT x + c consideremos as seguintes
2
notações:

I xT y representa o produto escalar n


  de x com y no espaço R , assim
y1
T
£ ¤ y2 

 X
n
x y = x1 x2 · · · xn  .  = xi yi
 .. 
i=1
yn

I Se x e y são vetores ortogonais, então xT y = 0

I A é uma matriz definida positiva se, para todo vetor x não nulo, tem-se
xT Ax > 0

I Lembre-se que (AB)T = BT AT .


Estudo de um caso específico
1
Considere f : Rn → R em que f (x) = xT Ax − bT x + c, A é uma matrix
2
n × n, b e x são vetores n × 1 e c uma constante.
·
¸ · ¸
3 2 2
Sejam A = ,b= e c = 0. Nestas condições, o gráfico da
2 6 −8
função f pode ser visto na Figura 6.

450
400
350
300
250
200
150
100
50
0
8
6
4 8
2 6
0 4
2
-2 0
-4 -2
-6 -4
-6
-8 -8
O ponto de mínimo de f (x) neste caso é o ponto (2, −2).
Estudo de um caso específico

É possível mostrar que o ponto de mínimo de f (x) é a solução do sistema


Ax = b. De fato,
sabemos que o ponto de mínimo de f (x) é um ponto crítico, ou seja,
0
f (x) = ∇f (x) = 0.
n n
1X X
Mas f : Rn → R; f (x) = aij xi xj − bi xi + c. Assim
2
i,j=1 i=1
 

 ∂x1 f (x)   
 ∂  a11 x1 + a12 x2 + · · · a1n xn − b1
 
 f (x)   a21 x1 + a22 x2 + · · · a2n xn − b2 
∇f (x) =  ∂x2 =  ..

 = Ax − b
 .   
 ..  .
 
 ∂  an1 x1 + an2 x2 + · · · ann xn − bn
f (x)
∂xn
Fazendo ∇f (x) = 0 temos Ax − b = 0 ⇒ Ax = b, ou seja,
o ponto crítico de f (x) é o ponto x tal que Ax = b. Nos resta saber se
x; Ax = b é de mínimo ou de máximo.
Estudo de um caso específico
Sabemos que um ponto x é ponto de mínimo de f : Rn → R se J(f ) é
positiva definida.
 2 
∂ f (x) ∂ 2 f (x) ∂ 2 f (x)
 ∂x2 ···
 2 1 ∂x1 ∂x2 ∂x1 ∂xn  
 ∂ f (x) ∂ f (x)
2
∂ 2 f (x) 
 ··· 
 ∂x22 ∂x2 ∂xn 
Como J =  ∂x2 ∂x1 
 .. 
 . 
 
 ∂ 2 f (x) ∂ 2 f (x) ∂ f (x) 
2
···
∂xn ∂x1 ∂xn ∂x2 ∂xn2
 
a11 a12 · · · a1n
 a21 a22 · · · a2n 
 
= . =A
 .. 
an1 an2 ··· ann

e A é uma matriz positiva definida por hipótese, segue o ponto x tal que
Ax = b é ponto de mínimo de f (x). Dessa forma, se encontrarmos o ponto
de mínimo de f (x) encontramos a solução do sistema Ax = b.
Estudo de um caso específico

Sabemos que ∇f (x), num dado ponto x, aponta a direção de maior


crescimento da função f .
Método dos Gradientes

Dada uma aproximação inicial x(0) para a solução do sistema Ax = b, é seria


natural pensarmos em tomar a direção oposta a ∇f (x) para a correção de
x(0) , pois −∇f (x) aponta na direção que f decresce mais rapidamente (o
ponto de mínimo de f é a solução do sistema Ax = b).

Pelos cálculos feitos anteriormente, sabemos que


−∇f (x(i) ) = b − Ax(i) = r(i) .

Dessa forma, tomando x(0) = (−2, −2), sabemos em qual direção caminhar,
mas não sabemos o quanto caminhar.
Método dos Gradientes
Método dos Gradientes

Como x(1) = x(0) + λr(0) e λ minimiza f (x(1) ) quando a derivada direcional


∂f (x(1) )
= 0.
∂λ

∂f (x(1) ) ³ 0 (1) ´T ∂x(1) ³ 0 ´T


Mas = f (x ) = f (x(1) ) r(0) .
∂λ ∂λ
³ 0 ´T
Igualando essa expressão a zero temos f (x(1) ) r(0) = 0 que nos sugere
0
que λ será escolhido de forma que r(0) e f (x(1) ) sejam ortogonais.
0
Para determinar λ usamos o fato de f (x(1) = −r(1) . Dessa forma, teremos
Método dos Gradientes
¡ (1) ¢T (0)
r r =0 Substituindo r(1) nessa expressão

¡ ¢T
b − Ax(1) r(0) = 0 Como x(1) = x(0) + λr(0) temos

¡ ¡ ¢¢T (0)
b − A x(0) + λr(0) r =0

¡ ¢T ¡ ¢T
b − Ax(0) r(0) − λ Ar(0) r(0) = 0

¡ ¢T ¡ ¢T
b − Ax(0) r(0) = λ Ar(0) r(0)

¡ (0) ¢T (0) ¡ ¢T
r r = λ r(0) Ar(0)

Logo

¡ (0) ¢T (0)
r r
λ = ¡ ¢T
r (0) Ar(0)
Método dos Gradientes

Colocando todas essas informações juntas, temos

dada uma aproximação inicial x(0) para a solução do sistema Ax = b, o


processo iterativo, conhecido como Método dos Gradientes, é dado
por

I r(i) = b − Ax(i)

¡ (0) ¢T (0)
(i)
r r
I λ = ¡ ¢T
r (0) Ar(0)

I x(i+1) = x(i) + λ(i) r(i)


Método dos Gradientes
Intuitivamente, temos
Método dos Gradientes

Exemplo: Usando
· o Método
¸ ·dos
¸ Gradientes,·obtenha
¸ uma solução
4 1 5 0
aproximada para x= com x(0) = e ² = 10−1 .
1 3 4 0

Abrir arquivo Exemplo1.xls e arquivo Exemplo1.mws


Método dos Gradientes Conjugados

Método dos Gradientes Conjugados


Método dos Gradientes Conjugados

É possível, no Método dos Gradientes, uma direção que está sendo adotada
na iteração i ter sido usada em iterações anteriores, como pode ser visto na
Figura 15.

Para evitar que se tome várias vezes uma mesma direção r(i) para a correção
de x(i) , o Método dos Gradientes Conjugados propõe uma modificação no
Método dos Gradientes.

O Método dos Gradientes Conjugados sugere que, dada uma aproximação


inicial x(0) para o sistema n × n, Ax = b, tomemos um conjunto de direções
conjugadas {d0 , d1 , · · · , dn−1 } e em até n iterações, teremos encontrado uma
aproximação satisfatória para a solução do sistema.

Dois vetores x e y são conjugados se xT Ay = yT Ax = 0.


Método dos Gradientes Conjugados
Método dos Gradientes Conjugados
Dado x(0) , faça d0 = r0 = b − Ax e x(1) será obtido fazendo
x(1) = x(0) + λ(0) d(0) .

Para obter o tamanho do passo λ(0) , procedemos como no caso do Método


dos
¡ Gradientes:
¢
d f (x(1) ) 0 ¡ ¢T dx(1)
= f x(1) = −r(1)T d(0) .
dλ dλ

¡ ¢
Como queremos que λ minimize f x(1) , fazemos
¡ ¢
r(1)T d(0) = 0 → d(0)T r(1) = 0 → d(0)T b − Ax(1) = 0

Substituindo x(1) nessa expressão concluimos que


r(0)T r(0)
λ(0) = (0)T (0)
d Ad
Método dos Gradientes Conjugados
Para que r(1) = r(0) − λ(0) Ad(0) seja ortogonal à nova direção
d(1) = r(1) + β (1) d(0) é preciso escolher um valor para β (1) conveniente.
Assim

µ ¶T
(1)T (1) (0) r(0)T r(0) ¡ ¢
r d =0 → r − (0)T (0) Ad(0) r(1) + β (1) d(0) = 0
d Ad

r(0)T r(0) r(0)T r(0)


r(0)T r(1) +β (1) r(0)T d(0) −d(0)T A (0)T (0) r(1) −β (1) d(0)T A (0)T (0) d(0) =
d Ad d Ad
0

d(0)T Ar1 r(1)T Ad0


Simplificando temos β (1) = − = −
d(0)T Ad(0) d(0)T Ad(0)

Assim a nova direção é dada por d(1) = r(1) + β (1) d(0)


Método dos Gradientes Conjugados
Podemos resumir o Método dos Gradientes Conjugados por, dado x(0) inicial

I d(0) = r(0) = b − Ax(0)

I Para i = 0, 1, ...
r(i)T r(i)
I λ(i) =
d(i)T Ad(i)

I x(i+1) = x(i) + λ(i) d(i)

I r(i+1) = r(i) − λ(i) Ad(i)

r(i+1)T Ad(i)
I β (i+1) = −
d(i)T Ad(i)

I d(i+1) = r(i+1) + β (i+1) d(i)


Método dos Gradientes Conjugados

Podemos simplificar um pouco mais a expressão de β (i+1) considerando


r(i+1) = r(i) − λ(i) Ad(i) , pois dessa forma temos

1 ¡ (i+1) ¢
Ad(i) = − r − r (i)
λ(i)

Fazendo r(i+1) Ad(i) e d(i)T Ad(i) temos


1 ¡ ¢ 1 ¡ ¢
r(i+1)T Ad(i) = − (i) r(i+1)T r(i+1) − r(i+1)T r(i) = − (i) r(i+1)T r(i+1)
λ λ
e
1 ¡ ¢ 1 ¡ ¢
d(i)T Ad(i) = − (i) d(i)T r(i+1) − d(i)T r(i) = − (i) −d(i)T r(i) =
λ λ
1 (i)T (i)
d r
λ(i)
Método dos Gradientes Conjugados

1 ¡ (i+1)T (i+1) ¢
Substituindo r(i+1)T Ad(i) = − r r e
λ(i)
1
d(i)T Ad(i) = (i) d(i)T r(i) em β (i+1) temos
λ

1 ¡ (i+1)T (i+1) ¢
− r r r(i+1)T r(i+1) r(i+1)T r(i+1)
β (i+1) = − λ(i) = =
1 (i)T (i) (i)T
d r (i) r(i)T r(i)
(i)
d r
λ
Método dos Gradientes Conjugados
Dessa forma, dado x(0) uma aproximação inicial do sistema Ax = b, o
Método dos Gradientes Conjugados é dado por

I d(0) = r(0) = b − Ax(0)

I Para i = 0, 1, ...
r(i)T r(i)
I λ(i) =
d(i)T Ad(i)

I x(i+1) = x(i) + λ(i) d(i)

I r(i+1) = r(i) − λ(i) Ad(i)

r(i+1)T r(i+1)
I β (i+1) =
r(i)T r(i)

I d(i+1) = r(i+1) + β (i+1) d(i)


Método dos Gradientes Conjugados
Método dos Gradientes Conjugados

Exemplo:
· ¸ Obtenha
· ¸ uma solução
· ¸ aproximada para o sistema
4 1 5 0
x= com x(0) = e ² = 10−1 .
1 3 4 0

Abrir arquivo Exemplo2.xls e arquivo Exemplo2.mws


Referências

I Shewchuk, J R. An Introduction to the Conjugate Gradient Method


Without the Agonizing Pain Edition 1 14 . School of Computer Science
Carnegie Mellon University Pittsburgh. PA, 1994.

I Franco, N B. Cálculo Numérico. Editora: Pearson / Prentice Hal. 2006.

I Todas as figuras (exceto a primeira) foram extraídas de Shewchuk,


1994.

Você também pode gostar