Você está na página 1de 4

NOTAS DE AULA de Algoritmos Numericos

Resolucao de Sistemas Lineares via Metodos Iterativos.

1 Introducao
Para se resolver sistemas lineares ha duas grandes categorias de metodos: os metodos
diretos e os metodos iterativos. Os metodos diretos sao aqueles que envolvem uma
sequencia pre-definida de operacoes e levam a solucao exata do problema (a menos
de erros de arredondamento da maquina). O metodo de Eliminacao de Gauss e um
exemplo deste tipo metodo direto.
Os metodos iterativos (repetitivos) sao aqueles que calculam a solucao via su-
cessivas aproximacoes. Nao se pode prever quantas operacoes serao realizadas para
se chegar a solucao (e, eventualmente,dependendo do problema, pode nem haver
convergencia).

2 Metodos iterativos
A ideia envolvida nos metodos iterativos e partir de uma solucao inicial (um vetor
solucao chute inicial) e ir obtendo melhores soulucoes caminhando segundo alguma
estrategia.
De uma forma bem geral, pode-se dizer que o processo iterativo consiste em gerar
uma nova solucao fornecendo um incremento a uma solucao ja existente, ou seja
o processo consiste em repetir a seguinte atualizacao,

xN ova = xAntiga + .

A forma de calcular este incremento varia em cada processo iterativo mas


todos buscam obter um valor que seja uma aproximacao para o erro contido no
vetor existente .
Se temos uma solucao aproximada xk , em um passo k, deve-se obter xk+1 so-
mando algo que esteja relacionado com o erro contido naquela aproximacao xk . Se
somassemos, ao vetor xk , o erro contido em xk chegaramos na solucao exata em um
unico passo ja que xexato = xk + errok . No entanto, para calcular este erro errok
seria necessario calcular A1 . Como o calculo de A1 e caro (computacionalmente)
entao calcula-se uma aproximacao para errok , e, em vez de somar o errok , soma-se
apenas k . Assim o processo iterativo fica

xk+1 = xk + k
onde
k = (A1 )aprox [b Axk ].

Portanto, a atualizacao de xk+1 e dada por,

xk+1 = xk + (A1 )aprox [b Axk ]


Observe que o erro exato em xk e:

errok = xexato xk = A1 b xk = A1 [b Axk ]


Os diversos metodos iterativos diferem entre si no calculo de (A1 )aprox , resu-
tando em diferentes formas de obter o k .
Uma matriz A pode ser desmembrada em tres partes:

0 0 ... 0 a11 0 . . . 0 0 a12 . . . a1n
a21 0 . . . 0 0 a22 . . . 0 0 0 . . . a2n
A = .. .. . . .. + .. .. . . .. + .. .. . . ..

. . . . . . . . . . . .
an1 an2 . . . 0 0 0 . . . ann 0 0 ... 0

Denominando de L, D e F as partes triangular inferior (Left), diagonal e trian-


gular superior (Right) respectivamente, entao A = L + D + R.

O metodo de Gauss Jacobi calcula (A1 )aprox via D1 . O processo Iterativo de


Gauss Seidel toma (A1 )aprox = (L + D)1 .

2.1 Resolucao via metodo de Gauss- Jacobi


O processo iterativo de Gauss- Jacobi e dado por:

xk+1 = xk + D1 [b Axk ]

xk+1 = xk + D1 [b (L + D + R)xk ]
xk+1 = xk + D1 b D1 Dxk D1 (L + R)xk
xk+1 = xk + D1 b Ixk D1 (L + R)xk
Ou seja, a atualizacao do vetor e

xk+1 = D1 b D1 (L + R)xk .

Escrevendo cada membro da equacao matricial acima temos:



1/a11 0 ... 0
0 1/a22 . . . 0
D = ..
1
.. ..

. . . .
. .
0 0 . . . 1/ann


0 a12 . . . a1n
a21 0 . . . a2n
(L + R) = .. .. . . . ..

. . .
an1 an2 ... 0


1/a11 0 ... 0 b1 b1 /a11
0 1/a22 ... 0 b2 b2 /a22
D1 b = .. .. .. .. = ..

...
. . . . .
0 0 . . . 1/ann bn bn /ann
D1 (L + R) e dada por

1/a11 0 ... 0 0 a12 . . . a1n 0/a11 a12 /a11 . . . a1n /a11
0 1/a22 ... 0 a21 0 . . . a2n a21 /a22 0/a22
. . . a2n /a22
.. .. .. .. .. . . . .. = .. .. ..

... ...
. . . . . . . . .
0 0 . . . 1/ann an1 an2 ... 0 an1 /ann an2 /ann . . . 0/ann

Portanto

b1 /a11 0/a11 a12 /a11 . . . a1n /a11 xk1
b2 /a22 a21 /a22 0/a22 . . . a2n /a22 xk2
D1 b D1 (L + R)xk = .. .. .. .. ..

...
. . . . .
bn /ann an1 /ann an2 /ann . . . 0/ann xkn


b1 /a11 (0 + a12 xk2 + a13 xk3 + ... + a1n xkn )/a11
b2 /a22 (a21 xk1 + 0 + a23 xk3 + ... + a2 xkn )/a22
= .. ..


. .
bn /ann (an1 xk1 + an2 xk2 + ... + ann1 xkn1 + 0)/ann

Assim para componente i atualizacao e

xk+1
i = [bi (ai1 xk1 + ai2 xk2 + ... + ai,i1 xki1 + ai,i+1 xki+1 + ... + ai,n xkn ]/aii

De forma compacta
j=(i1) j=n
X X
xk+1
i = [bi ( aij xkj + aij xkj )]/aii
j=1 j=(i+1)

2.2 Resolucao via metodo de Gauss- Seidel


No metodo de Gauss- Seidel, como (A1 )aprox = (L + D)1 , atualizacao do vetor
solucao e dado por:

xk+1 = xk + (L + D)1 [b Axk ]


xk+1 = xk + (L + D)1 [b (L + D + R)xk ]
xk+1 = xk + (L + D)1 b Ixk (L + D)1 Rxk
xk+1 = (L + D)1 b (L + D)1 Rxk
Multiplicando a expressao acima por (L+D) a atualizacao pode escrita como

(L + D)xk+1 = b Rxk
Ou seja, temos que

a11 0 . . . 0 xk+1
1 b1 0 a12 . . . a1n xk1
a21 a22 . . . 0 xk+1
2
b2 0 0 . . . a2n xk2
.. .. . . . = .. .. .. . . . .. ..

..
. ..

. . . . . . . .
an1 an2 . . . ann xk+1
n bn 0 0 ... 0 xkn
Componente a componente
j=i1 j=n
X X
aij xk+1
j + aii xk+1
i = bi aij xkj
j=1 j=i+1

ou
j=i1 j=n
X X
xk+1
i = (bi aij xk+1
j aij xkj )/aii
j=1 j=i+1