P. 1
Métodos Iterativos_Sistemas Lineares

Métodos Iterativos_Sistemas Lineares

|Views: 18|Likes:
Published by tsantos_ucs

More info:

Published by: tsantos_ucs on Jan 17, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/17/2012

pdf

text

original

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA MECÂNICA












MÉTODOS ITERATIVOS PARA SOLUÇÃO DE SISTEMAS LINEARES






Disciplina: Métodos Matriciais
Professora: Liliane Basso Barichello
Aluno: Tiago dos Santos






Porto Alegre
2010

2

SUMÁRIO

RESUMO.......................................................................................................................... 3
1 MÉTODOS ITERATIVOS PARA SOLUÇÃO DE SISTEMAS LINEARES ................. 4
1.1 Introdução .......................................................................................................... 4
1.2 Condição de Convergência ................................................................................ 5
1.3 Critério de Parada .............................................................................................. 6
1.4 Método Iterativo de Jacobi ................................................................................. 6
1.4.1 Algorítmo e Complexidade .......................................................................... 8
1.5 Método Iterativo de Gauss-Seidel ...................................................................... 9
1.5.1 Algorítmo e Complexidade ........................................................................ 10
1.6 Método Iterativo da Sobre-Relaxação Sucessiva ............................................ 12
1.6.1 Algorítmo e complexidade ........................................................................ 13
2 RESULTADOS NUMÉRICOS ................................................................................. 15
2.1 Primeiro Caso .................................................................................................. 15
2.2 Segundo Caso ................................................................................................. 17
3 DISCUSSÃO DOS RESULTADOS ......................................................................... 22
4 CONCLUSÃO ......................................................................................................... 23
REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 24















3

RESUMO


Neste trabalho serão apresentados e implementados computacionalmente,
utilizando o programa Matlab, três métodos iterativos para solução de sistemas lineares:
método de Jacobi, método de Gauss-Seidel e método da sobre-relaxação prograssiva.
Onde, por meio da solução de dois problemas numéricos, os métodos acima citados
serão comparados utilizando-se uma análise de convergência para os problemas.
Também serão analisados os raios espectrais das matrizes de iteração de cada método
nos distintos problemas solucionados.
Particularmente para o método da sobre-relaxaçã sucessiva, será analisada a
influência do parâmetro ω na convergência da solução.
Com base nos resultados obtidos, método da sobre-relaxação mostrou melhor
convergência nos dois problemas, em segundo lugar está o método de Gauss-Seidel.
Essa ordem também foi verificada nos raios espectrais das matrizes de iteração, onde a
matriz de iteração da sobre-relaxação apresentou menor raio espectral e o método de
Jacobi aprsentou o maior valor, em ambos sistemas lineares solucionados.















4

1 MÉTODOS ITERATIVOS PARA SOLUÇÃO DE SISTEMAS LINEARES


1.1 Introdução

Um sistema de equações lineares b Ax = pode ser resolvido por um processo
onde, a partir de um vetor inicial
0
x , uma seqüência de vetores
} {
3 2 1
K K , , , , ,
k
x x x x

é gerada de modo a convergir para a solução x do sistema. Nesse processo é
realizada uma série de operações repetidas, e por isso tal processo é denominado
iterativo.
Dado o sistema linear:

; 3 , 2 , 1 ;
;
1
m i x A b
n
j
j ij i
K = =
=

=
b Ax

(1.1.1)

Onde, b é um vetor de constantes de ordm m, A é a matriz de coeficientes de
tamanho n m× e x é o vetor solução de ordem n .
Sendo A uma matriz quadrada n n× , isolando-se o ésimo i − valor de x para
cada linha i do sistema, obtém-se:

; 3 , 2 , 1 ;
1
; 3 , 2 , 1 ;
1
1
n i x A
A A
b
x
n i x A b x A
n
i j
j
j ij
ii ii
i
i
n
i j
j
j ij i i ii
K
K
= − =
= − =



=

=

(1.1.2)



(1.1.3)


No processo iterativo a eq. (1.1.3) pode ser representada conforme eq. (1.1.4).


5

;
1
c Mx x + =
+ k k

(1.1.4)

Onde, M é a matriz de iteração e c é um vetor constante. O processo iterativo
é dito estacionário se M não for alterada durante o processo. A seguir serão
apresentados três métodos iterativos estacionários: método de Jacobi, método de
Gauss-Seidel e método da sobre-relaxação sucessiva.

1.2 Condição de Convergência

A sequência de vetores solução
} {
3 2 1
K K , , , , ,
k
x x x x
converge para a solução
do sistema linear b Ax = , quando satisfeito o seguinte teorema:
Teorema 1.1: O método iterativo da eq. (1.1.4) converge com qualquer valor
inicial
0
x se e somente se,
1 ) ( < M ρ
, sendo
) (M ρ
o raio espectral (módulo do
maior autovalor) da matriz de iteração M.
No entanto, a determinação de
) (M ρ
pode requerer maior esforço numérico
que a própria solução do sistema b Ax = . Por isso, usualmente se utiliza o chamado
critério das linhas para convergência, segundo o teorema:
Teorema 1.2: É condição suficiente para a convergência dos métodos iterativos
de Jacobi e de Gauss-Seidel que a matriz dos coeficientes A seja diagonalmente
predominante, ou seja:

n i a a
n
i j
j
ij ii
K 3 , 2 , 1 ;
1
= >


=

(1.2.1)

Pelos Teoremas 1.1 e 1.2, nota-se que a convergência não depende da escolha
do vetor inicial
0
x . Outro critério de convergência é que o sistema iterativo (1.1.4)
converge se e somente se 0 →
k
M com ∞ → k .

6

1.3 Critério de Parada

A cada iteração do processo descrito na eq. (1.1.4) o vetor solução obtido é mais
próximo da solução do sistema linear b Ax = , isto é:

; lim x x =
→∞
k
k
(1.3.1)

Como critério de parada do processo pode-se definir um erro relativo máximo
aceitável ε :

;
1
k
k k
x
x x


≥ ε

(1.3.2)

Ou limitar o número de operações, conforme a seguinte relação:

;
máx
k k ≥
(1.3.3)

Onde,
máx
k
é o número máximo de iterações.
Para a determinação da tolerência ε , deve-se considerar a perda de precisão
devido à aritmética de ponto flutuante, para que não se defina uma exatidão impossível
de ser alcançada.

1.4 Método Iterativo de Jacobi

Considerando um sistema linear:

; b Ax = (1.4.1)



7

A matriz A pode ser decomposta em:

; U D L A + + = (1.4.2)

Onde, D é uma matriz diaginal, L e U são duas matrizes triangulares inferior
e superior, respectivamente, com a diagonal nula. Substituindo a eq. (1.4.2) na eq.
(1.4.1), obtém-se:

;
; ) (
; ) (
; ) (
; ) (
1
1 1 1
c Jx x
b D x U L D x
b x U L Dx
b x U L Dx
b x U D L
+ =
+ + − =
+ + − =
= + +
= + +
+
− − +
k k
k k

(1.4.3)




(1.4.4)

(1.4.5)

A eq. (1.4.5) é semelhante à eq. (1.1.4), onde ) (
1
U L D J + =

é a matriz de
iteração do método de Jacobi.
Usualmente, utiliza-se como valor inicial 0 x =
0
; no entanto, substituindo esse
valor na eq. (1.4.5), obtem-se:

;
1
ii
i
i
A
b
x = → = c x



Assim, será tomado como valor inicial

.
0
ii
i
i
A
b
x =

(1.4.6)



8

1.4.1 Algorítmo e Complexidade



Figura 1.4.1 – Rotina do método iterativo de Jacobi em Matlab.

function [x,Niter,erros,Conv]=ijacobi(A,b,Tol,IterMax)
% Esta rotina soluciona um sistema linear do tipo Ax=b, pelo método
% iterativo de Jacobi.
% Parâmetros de entrada:
% A: Matriz de coeficientes nxn;
% b: Vetor de constantes;
% Tol: Tolerância desejada;
% IterMax: Número máximo de iterações desejado.
% Parâmetros de saída:
% x: vetor solução;
% Niter: Número de iterações realizadas;
% erro: Erro relativo em norma infinita;
% Conv: Informação de convergência (Conv=1 houve convergência; Conv=1 não
% houve convergência).
[m,n]=size(A); % Verifica tamanho da matriz A
if m == n % Verifica se A é uma matriz quadrada
xi = zeros(m,1); % Cria vetor solução inicial
x = zeros(m,1); % Cria vetor solução final
for i = 1 : m
if A(i,i) == 0
error('A possui zero na diagonal')
end
xi(i) = b(i)/A(i,i); % Monta vetor solução inicial
end
erro = 1; % Atribui valor inicial ao erro
Niter = 0; % Número de iterações
while erro > Tol
Niter = Niter + 1;
if Niter == IterMax
Conv = 0;
error('Número máximo de iterações foi atingido')
end
for i = 1 : m
soma = 0;
for j = 1 : n
if i ~= j
soma = A(i,j)*xi(j) + soma;
end
end
x(i) = (-soma + b(i))/A(i,i);
end
erro = norm(x - xi, inf)/norm(x,inf); % Erro relatifo (N inf)
erros(Niter) = erro; % Vetor contendo o erro de cada iteração
xi = x;
end
Conv = 1;
else
disp('A não é uma matrix quadrada')
end

9

Na fig. (1.4.1) é apresentada a rotina, criada no ambiente Matlab, que resolve um
sistema linear do tipo b Ax = pelo método iterativo de Jacobi. Os parâmetros de
entrada são: a matriz A, o vetor b , a tolerância desejada ε e o número máximo de
iterações
máx
k
. Os dois últimos parâmetros são utilizados como critérios de parada,
conforme eqs. (1.3.2) e (1.3.3), respectivamente. E tem como parâmetros de saída o
vetor solução x , o número de iterações k , o erro relativo
k
ε em norma infinita de
cada iteração e informa se ocorreu convergência dentro do número de iterações
escolhido com base na tolerância informada ( 1 = Conv ) ou não ( 0 = Conv ).
A complexidade computacional do algorítmo é dada segundo a tab. (1.4.1).

Operações Complexidade
adições
k kn kn + +
2

multiplicações kn n k − +
2
) 1 (
divisões k n +

Tabela 1.4.1 – Complexidade de Jacobi usando k iterações em sistema de ordem n > 1.
(Campos, filho, 2001).

1.5 Método Iterativo de Gauss-Seidel

Seja o sistema linear mostrado na eq. (1.4.1), com a matriz A sendo
decomposta em U D L A + + = , sendo D uma matriz diaginal, L e U duas
matrizes triangulares inferior e superior, respectivamente, com a diagonal nula. O
sistema linear pode, então, ser reescrito na seguinte forma:

;
; ) ( ) (
; ) (
; ) (
1
1 1 1
d Sx x
b L D Ux L D x
b Ux x L D
b x U D L
+ =
+ + + − =
+ − = +
= + +
+
− − +
k k
k k

(1.5.1)


(1.5.2)

(1.5.3)

10


Onde, U L D S
1
) (

+ − = é a matriz de iteração do método de Gauss-Seidel.
Uma maneira mais simples de implementar, sem a necessidade de calcular a matriz
inversa é mostrado abaixo:

;
; ) (
; ) (
; ) (
1 1
1
b Ux Lx Dx
b Ux x L D
b Ux x L D
b x U D L
+ − − =
+ − = +
+ − = +
= + +
+ +
+
k k k
k k






(1.5.4)

Na eq. (1.5.4) fica clara a diferença entre os métodos de Jacobi e Gauss-Seidel.
No método de Jacobi o vetor
1 + k
x é calculado usando somente valores
k
i
x
, enquanto,
no método de Gauss-Seidel o vetor
1 + k
x é obtido a partir dos elementos mais recentes,
incluindo
1 + k
x e
k
x . O valor inicial utilizado será o mesmo da eq. (1.4.6).

1.5.1 Algorítmo e Complexidade

Na fig. (1.5.1) é apresentada a rotina, criada no ambiente Matlab, que resolve um
sistema linear do tipo b Ax = pelo método iterativo de Gauss-Seidel. Os parâmetros
de entrada são: a matriz A, o vetor b , a tolerância desejada ε e o número máximo de
iterações
máx
k
. Os dois últimos parâmetros são utilizados como critérios de parada,
conforme eqs. (1.3.2) e (1.3.3), respectivamente. E tem como parâmetros de saída o
vetor solução x , o número de iterações k , o erro relativo
k
ε em norma infinita de
cada iteração e informa se ocorreu convergência dentro do número de iterações
escolhido com base na tolerância informada ( 1 = Conv ) ou não ( 0 = Conv ).


11



Figura 1.5.1 – Rotina do método iterativo de Jacobi em Matlab.

function [x,Niter,erros,Conv]=igauss_seidel(A,b,Tol,IterMax)
% Esta rotina soluciona um sistema linear do tipo Ax=b, pelo método
% iterativo de Gauss-Seidel.
% Parâmetros de entrada:
% A: Matriz de coeficientes nxn;
% b: Vetor de constantes;
% Tol: Tolerância desejada;
% IterMax: Número máximo de iterações desejado.
% Parâmetros de saída:
% x: vetor solução;
% Niter: Número de iterações realizadas;
% erro: Erro relativo em norma infinita;
% Conv: Informação de convergência (Conv=1 houve convergência; Conv=1 não
% houve convergência).
[m,n]=size(A); % Verifica tamanho da matriz A
if m == n % Verifica se A é uma matriz quadrada
xi = zeros(m,1); % Cria vetor solução inicial
x = zeros(m,1); % Cria vetor solução final
for i = 1 : m
if A(i,i) == 0
error('A possui zero na diagonal')
end
xi(i) = b(i)/A(i,i); % Monta vetor solução inicial
xi1 = xi; % Vetor que armazena valores iniciais de xi
end
erro = 1; % Atribui valor inicial ao erro
Niter = 0; % Número de iterações
while erro > Tol
Niter = Niter + 1;
if Niter == IterMax
Conv = 0;
error('Número máximo de iterações foi atingido')
end
for i = 1 : m
soma = 0;
for j = 1 : n
if i ~= j
soma = A(i,j)*xi(j) + soma;
end
end
x(i) = (-soma + b(i))/A(i,i);
xi(i) = x(i); % Atualiza o vetor solução inicial
end
erro = norm(x - xi1, inf)/norm(x,inf); % Erro relatifo (N inf)
erros(Niter) = erro; % Vetor contendo o erro de cada iteração
xi = x;
xi1 = xi;
end
Conv = 1;
else
disp('A não é uma matrix quadrada')
end

12

A complexidade computacional do algorítmo é dada segundo a tab. (1.5.1).

Operações Complexidade
adições
k kn kn + +
2

multiplicações kn n k − +
2
) 1 (
divisões k n +

Tabela 1.5.1 – Complexidade de Gauss-Seidel usando k iterações em sistema de ordem n > 1.
(Campos, filho, 2001).

1.6 Método Iterativo da Sobre-Relaxação Sucessiva

Considerando o sistema linear da eq. (1.4.1), com a matriz A sendo
decomposta em U D L A + + = , sendo D uma matriz diaginal, L e U duas
matrizes triangulares inferior e superior, respectivamente, com a diagonal nula.
Multiplicando o sistema linear por um parâmetro ω , tem-se:

; ) ( b x U D L ω ω = + + (1.6.1)

Somando o vetor nulo x D D ) ( − ao primeiro termo:

;
; ) ( ] ) 1 [( ) (
; ] ) 1 [( ) (
; ] ) 1 [( ) (
; ) ( ) (
1
1 1 1
1
e Rx x
b L D x U D L D x
b x U D x L D
b x U D x L D
b x U D L x D D
+ =
+ + − − + =
+ − − = +
+ − − = +
= + + + −
+
− − +
+
k k
k k
k k
ω ω ω ω
ω ω ω
ω ω ω
ω
ω
ω
ω ω




(1.6.2)


(1.6.3)

Onde,
] ) 1 [( ) (
1
U D L D R ω ω ω − − + =

é a matriz de iteração do método da
sobre-relaxação sucessiva (SOR: sucessive over-relaxation).

13

Uma outra maneira de representar a forma de iteração do método da sobre-
relaxação é a seguinte, a partir da eq. (1.6.2):

; ) 1 ( ) (
; ) 1 ( ) (
; ] ) 1 [( ) (
1 1 1
1 1
1
k k k k
k k k k
k k
ω ω
ω ω
ω ω ω
x b Ux Lx D x
Dx b Ux Lx Dx
b x U D x L D
− + + − − =
− + + − − =
+ − − = +
+ − +
+ +
+
ω




(1.6.4)

O valor inicial utilizado para a iteração será o mesmo da eq. (1.4.6).
A convergência do método SOR depende da escolha do parâmetro ω , é
necessário que 2 0 < < ω para garantir a convergência. Usualmente, utiliza-se
2 1 < < ω . Um valor ótimo de ω pode ser calculado segundo a eq. (1.6.5).

;
) ( 1 1
2
2
J ρ − +
=
otim
ω
(1.6.5)

Onde, J é a matriz iterativa do método de Jacobi.
Na equação anterior
otim
ω
é determinado de forma a produzir o menor raio
espectral da matriz de iteração no método SOR.

1.6.1 Algorítmo e complexidade

Na fig. (1.6.1) é apresentada a rotina, criada no ambiente Matlab, que resolve um
sistema linear do tipo b Ax = pelo método iterativo da sobre-relaxação sucessiva. Os
parâmetros de entrada são: a matriz A, o vetor b , a tolerância desejada ε , o número
máximo de iterações
máx
k
e o parâmetro ω . Os valores de ε e
máx
k
são utilizados
como critérios de parada, conforme eqs. (1.3.2) e (1.3.3), respectivamente.
A complexidade do método SOR é a mesma mostrada na tab. (1.5.1).

14



Figura 1.6.1 – Rotina do método iterativo de Jacobi em Matlab.

function [x,Niter,erros,Conv]=SOR(A,b,Tol,IterMax,w)
% Esta rotina soluciona um sistema linear do tipo Ax=b, pelo método
% iterativo da sobre-relaxação sucessiva.
% Parâmetros de entrada:
% A: Matriz de coeficientes nxn; b: Vetor de constantes;
% Tol: Tolerância desejada;
% IterMax: Número máximo de iterações desejado;
% w: parâmetro 0 < w < 2
% Parâmetros de saída:
% x: vetor solução;
% Niter: Número de iterações realizadas;
% erro: Erro relativo em norma infinita;
% Conv: Informação de convergência (Conv=1 houve convergência; Conv=1 não
% houve convergência).
[m,n]=size(A); % Verifica tamanho da matriz A
if m == n % Verifica se A é uma matriz quadrada
xi = zeros(m,1); % Cria vetor solução inicial
x = zeros(m,1); % Cria vetor solução final
for i = 1 : m
if A(i,i) == 0
error('A possui zero na diagonal')
end
xi(i) = b(i)/A(i,i); % Monta vetor solução inicial
xi1 = xi; % Vetor que armazena valores iniciais de xi
end
erro = 1; % Atribui valor inicial ao erro
Niter = 0; % Número de iterações
while erro > Tol
Niter = Niter + 1;
if Niter == IterMax
Conv = 0;
error('Número máximo de iterações foi atingido')
end
for i = 1 : m
soma = 0;
for j = 1 : n
if i ~= j
soma = A(i,j)*xi(j) + soma;
end
end
x(i) = w*(-soma + b(i))/A(i,i) + (1 - w)*xi(i);
xi(i) = x(i); % Atualiza o vetor solução inicial
end
erro = norm(x - xi1, inf)/norm(x,inf); % Erro relatifo (N inf)
erros(Niter) = erro; % Vetor contendo o erro de cada iteração
xi = x;
xi1 = xi;
end
Conv = 1;
else
disp('A não é uma matrix quadrada')
end

15

E tem como parâmetros de saída o vetor solução x , o número de iterações k , o
erro relativo
k
ε em norma infinita de cada iteração e informa se ocorreu convergência
dentro do número de iterações escolhido com base na tolerância informada ( 1 = Conv )
ou não ( 0 = Conv ).

2 RESULTADOS NUMÉRICOS


Nessa seção serão analisados dois sistemas lineares distintos, utilizando-se os
três métodos iterativos apresentados no trabalho: método de Jacobi, método de Gauss-
Seidel e método da sobre-relaxação sucessiva. Sobre esses dois problemas serão
realizadas análises de convergência e do raio espectral de cada matriz de iteração.

2.1 Primeiro Caso

O primeiro problema numérico a ser análisado consiste em um exercício
proposto por Datta, 1995, exercício 49 página 307. Dado pelo seguinte sistema linear:

;
0
0
0
0
0
1
4 1 0 1 0 0
1 4 1 0 1 0
0 1 4 0 0 1
1 0 0 4 1 0
0 1 0 1 4 1
0 0 1 0 1 4
6
5
4
3
2
1
¦
¦
¦
¦
)
¦
¦
¦
¦
`
¹
¦
¦
¦
¦
¹
¦
¦
¦
¦
´
¦
=
¦
¦
¦
¦
)
¦
¦
¦
¦
`
¹
¦
¦
¦
¦
¹
¦
¦
¦
¦
´
¦
(
(
(
(
(
(
(
(
¸
(

¸

− −
− − −
− −
− −
− − −
− −
x
x
x
x
x
x

(2.1.1)

Como critérios de parada serão utilizados os seguintes valores:

; 30
; 001 . 0
=
=
máx
k
ε

(2.1.2)

16

Na resolução do sistema linear pelo método SOR será utilizado o valor ótimo do
parâmetro ω, o qual resulta em
128 . 1 =
otim
ω
.
Foram obtidos os seguintes valores valores para os raios espectrais das matrizes
de iteração para cada processo, conforme tab. (2.1.1).

( ) 6036 , 0 = J ρ
( ) 3643 , 0 = S ρ
( ) 1128 , 0 = R ρ

Tabela 2.1.1 – Raios espectrais das matrizes de iteração para o primeiro caso.

Na fig. (2.1.1) são mostrados os valores dos erros relativos, obtidos pela norma
infinita, para cada iteração nos três métodos utilizados.

0 1 2 3 4 5 6 7 8 9 10 11 12
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Número de iterações - κ
E
r
r
o

r
e
l
a
t
i
v
o

-

ε
Análise de Convergência


Método de Jacobi
Método de Gauss-Seidel
Método da Sobre-Relaxação

Figura 2.1.1 – Análise de convergência para o primeiro caso.

Particularmente para o método SOR, é analisada a influência do parâmetro ω
na convergência da solução. A análise é realizado comparando-se o número de
iterações necessárias para que se atinja a tolerância desejada, para valores de
5 , 1 1 < < ω , com incrementos de 05 , 0 = ∆ω . Conforme fig. (2.1.2).

17

1 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5
5
5.5
6
6.5
7
7.5
8
8.5
9
9.5
10
Parâmetro ω
N
ú
m
e
r
o

d
e

i
t
e
r
a
ç
õ
e
s

-

κ
Análise de convergência com relação a ω

Figura 2.1.2 – Análise de convergência com relação a ω para o primeiro caso.


2.2 Segundo Caso

No segundo problema será resolvido um sistema linear cuja matriz de
coeficientes A é uma matriz esparsa de ordem 36 36× , mostrada nas tabs. (2.2.1),
(2.2.2) e (2.2.3). E b é um vetor de ordem 36, dado por:

. 36 ,..., 2 , 1 :
]; 34 , 14 , 1 [ : ; 0
; 34 : ; 2
]; 14 , 1 [ : ; 1
=
¦
¹
¦
´
¦

=
=
= i com
i para
i para
i para
b
i

(2.2.1)

Como critérios de parada serão utilizados os seguintes valores:

; 100
; 005 . 0
=
=
máx
k
ε

(2.2.2)


18

Matriz A - coluna 01 a 12
0,0216 0 0 0 0 0 0 0 0 0 0 0
0 0,1963 0 0 0 0 0 0 0 0 0 0
0 0 5,7512 0 0 0 0 0 0 0 0 0
0 0 0 1,081 0 0 0 0 0 0 0 0
0 0 0 0 5,7512 0 0 0 0 0 0 -0,4601
0 0 0 0 0 0,0202 0 0 0 0 0 0
0 0 0 0 0 0 0,1618 0 0 0 0 0
0 0 0 0 0 0 0 0,1618 0 0 0 0
0 0 0 0 0 0 0 0 1,0135 0 0 0
0 0 0 0 0 0 0 0 0 5,3918 0 0
0 0 0 0 0 0 0 0 0 0 5,3918 0
0 0 0 0 -0,4601 0 0 0 0 0 0 0,1963
-0,0108 0 0 0 0 0 0 0 0 0 0 0
0 -0,0982 0,4601 0 0 0 0 0 0 0 0 0
0 -0,4601 1,4378 0 0 0 0 0 0 0 0 0
0 0 0 -0,5405 0 0 0 0 0 0 0 0
0 0 0 0 1,4378 0 0 0 0 0 0 0
0 0 0 0 0 -0,0101 0 0 0 0 0 0
0 0 0 0 0 0 -0,0809 0 0 0 -0,4044 0
0 0 0 0 0 0 0 -0,0809 0 0,4044 0 0
0 0 0 0 0 0 0 0 -0,5067 0 0 0
0 0 0 0 0 0 0 -0,4044 0 1,3479 0 0
0 0 0 0 0 0 0,4044 0 0 0 1,3479 0
0 0 0 0 0 0 0 0 0 0 0 -0,0982
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0,4601
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

Tabela 2.2.1 – Matriz de coeficientes A, coluna 01 a 12.



19

Matriz A - coluna 13 a 24
-0,0108 0 0 0 0 0 0 0 0 0 0 0
0 -0,0982 -0,4601 0 0 0 0 0 0 0 0 0
0 0,4601 1,4378 0 0 0 0 0 0 0 0 0
0 0 0 -0,5405 0 0 0 0 0 0 0 0
0 0 0 0 1,4378 0 0 0 0 0 0 0
0 0 0 0 0 -0,0101 0 0 0 0 0 0
0 0 0 0 0 0 -0,0809 0 0 0 0,4044 0
0 0 0 0 0 0 0 -0,0809 0 -0,4044 0 0
0 0 0 0 0 0 0 0 -0,5067 0 0 0
0 0 0 0 0 0 0 0,4044 0 1,3479 0 0
0 0 0 0 0 0 -0,4044 0 0 0 1,3479 0
0 0 0 0 0 0 0 0 0 0 0 -0,0982
0,0216 0 0 0 0 0 0 0 0 0 0 0
0 0,1963 0 0 0 0 0 0 0 0 0 0
0 0 5,7512 0 0 0 0 0 0 0 0 0
0 0 0 1,081 0 0 0 0 0 0 0 0
0 0 0 0 5,7512 0 0 0 0 0 0 -0,4601
0 0 0 0 0 0,0202 0 0 0 0 0 0
0 0 0 0 0 0 0,1618 0 0 0 0 0
0 0 0 0 0 0 0 0,1618 0 0 0 0
0 0 0 0 0 0 0 0 1,0135 0 0 0
0 0 0 0 0 0 0 0 0 5,3918 0 0
0 0 0 0 0 0 0 0 0 0 5,3918 0
0 0 0 0 -0,4601 0 0 0 0 0 0 0,1963
-0,0108 0 0 0 0 0 0 0 0 0 0 0
0 -0,0982 0,4601 0 0 0 0 0 0 0 0 0
0 -0,4601 1,4378 0 0 0 0 0 0 0 0 0
0 0 0 -0,5405 0 0 0 0 0 0 0 0
0 0 0 0 1,4378 0 0 0 0 0 0 0
0 0 0 0 0 -0,0101 0 0 0 0 0 0
0 0 0 0 0 0 -0,0809 0 0 0 -0,4044 0
0 0 0 0 0 0 0 -0,0809 0 0,4044 0 0
0 0 0 0 0 0 0 0 -0,5067 0 0 0
0 0 0 0 0 0 0 -0,4044 0 1,3479 0 0
0 0 0 0 0 0 0,4044 0 0 0 1,3479 0
0 0 0 0 0 0 0 0 0 0 0 -0,0982

Tabela 2.2.2 – Matriz de coeficientes A, coluna 13 a 24.



20

Matriz A - coluna 25 a 36
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0,4601 0 0 0 0 0 0 0
-0,0108 0 0 0 0 0 0 0 0 0 0 0
0 -0,0982 -0,4601 0 0 0 0 0 0 0 0 0
0 0,4601 1,4378 0 0 0 0 0 0 0 0 0
0 0 0 -0,5405 0 0 0 0 0 0 0 0
0 0 0 0 1,4378 0 0 0 0 0 0 0
0 0 0 0 0 -0,0101 0 0 0 0 0 0
0 0 0 0 0 0 -0,0809 0 0 0 0,4044 0
0 0 0 0 0 0 0 -0,0809 0 -0,4044 0 0
0 0 0 0 0 0 0 0 -0,5067 0 0 0
0 0 0 0 0 0 0 0,4044 0 1,3479 0 0
0 0 0 0 0 0 -0,4044 0 0 0 1,3479 0
0 0 0 0 0 0 0 0 0 0 0 -0,0982
0,0216 0 0 0 0 0 0 0 0 0 0 0
0 0,1963 0 0 0 0 0 0 0 0 0 0
0 0 5,7512 0 0 0 0 0 0 0 0 0
0 0 0 1,081 0 0 0 0 0 0 0 0
0 0 0 0 5,7512 0 0 0 0 0 0 -0,4601
0 0 0 0 0 0,0202 0 0 0 0 0 0
0 0 0 0 0 0 0,1618 0 0 0 0 0
0 0 0 0 0 0 0 0,1618 0 0 0 0
0 0 0 0 0 0 0 0 1,0135 0 0 0
0 0 0 0 0 0 0 0 0 5,3918 0 0
0 0 0 0 0 0 0 0 0 0 5,3918 0
0 0 0 0 -0,4601 0 0 0 0 0 0 0,1963

Tabela 2.2.3 – Matriz de coeficientes A, coluna 25 a 36.


21

Na resolução do sistema linear pelo método SOR será utilizado o valor ótimo do
parâmetro ω, o qual resulta em
4784 . 1 =
otim
ω
.
Foram obtidos os seguintes valores valores para os raios espectrais das matrizes
de iteração para cada processo, conforme tab. (2.2.4).

( ) 9357 , 0 = J ρ
( ) 8755 , 0 = S ρ
( ) 4784 , 0 = R ρ

Tabela 2.2.4 – Raios espectrais das matrizes de iteração para o primeiro caso.

Na fig. (2.2.1) são mostrados os valores dos erros relativos, obtidos pela norma
infinita, para cada iteração nos três métodos utilizados.

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 3435
0
0.2
0.4
0.6
0.8
Número de iterações - κ
E
r
r
o

r
e
l
a
t
i
v
o

-

ε
Análise de Convergência


Método de Jacobi
Método de Gauss-Seidel
Método da Sobre-Relaxação

Figura 2.2.1 – Análise de convergência para o segundo caso.

A análise de convergência em função do parâmetro ω para o segundo problema
é mostrada na fig. (2.2.2), para valores de 75 , 1 25 , 1 < < ω , com incrementos de
05 , 0 = ∆ω .


22

1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75
9
10
11
12
13
14
15
16
17
Parâmetro ω
N
ú
m
e
r
o

d
e

i
t
e
r
a
ç
õ
e
s

-

κ
Análise de convergência com relação a ω

Figura 2.2.2 – Análise de convergência com relação a ω para o segundo caso.

3 DISCUSSÃO DOS RESULTADOS


Nas tabs. (3.1.1) e (3.1.2) são mostrados os números de iterações necessárias
para a convergência do primeiro e segundo problema apresentados, sob a condição da
tolerância desejada, e os valores finais dos erros relativos obtidos para cada método.

Jacobi Gauss-Seidel SOR
Número de iter. 12 7 5
Erro relativo 0,0007 0,0005 0,0006

Tabela 3.1.1 – Resultados de convergência para o primeiro caso.

Jacobi Gauss-Seidel SOR
Número de iter. 31 21 9
Erro relativo 0,005 0,0048 0,005

Tabela 3.1.2 – Resultados de convergência para o segundo caso.


23

Em observação às figs. (2.1.1), (2.2.1) e às tabs. (3.1.1), (3.1.2) nota-se, que
apesar de obter um erro inicial mais alto, o método iterativo SOR convergiu mais
rapidamente para ambos os sistemas lineares solucionados, atingindo a tolerância
desejada para cada um deles. O segundo mais rápido foi o método de Gauss-Seidel.
Esses resultados de convergência eram esperados, pois os raios espectrais das
matrizes de iteração dos diferentes métodos seguem a mesma ordem apresentada na
análise de convergência, para ambos os problemas.
Nas análises realizadas em função do parâmetro ω , mostradas nas figs. (2.1.2)
e (2.2.2), observa-se que realmente o método SOR converge para a solução, mais
rapidamente, quando utilizado o valor de
otim
ω
, que para o primeiro caso foi
128 . 1 =
otim
ω
e para o segundo
4784 . 1 =
otim
ω
.


4 CONCLUSÃO

Com a realização desse trabalho é possível notar que cada um dos métodos
numéricos utilizados possui suas características próprias, estritamente ligadas às
propriedades das matrizes de iteração. Para os problemas analisados o método
iterativo da sobre-relaxação sucessiva se mostrou ser mais eficiente. Porém, os três
métodos são limitados quanto à generalidade da matriz de coeficientes A, essa não
pode possuir valores nulos na diagonal principal, o que vai de encontro à condição de
ser uma matriz diagonalmente dominante, Teorema 1.2. E essa mesma matriz deve
possuir um baixo valor do raio espectral, Teorema 1.1.
Também é possível perceber que a implementação computacional desses
métodos numéricos possui diferenças e particularidades quando comparada ao
problema analítico. Algumas pré-analises são necessárias para a definição e
implementação do métódo numérico a ser utilizado.




24

REFERÊNCIAS BIBLIOGRÁFICAS

Bronson, R. "Matrix Operations", Mac Graw Hill, 1989.
Campos, filho, F. F. “Algorítmos Numéricos”, LTC, 2001.
Datta, B. N. “Numerical Linear Algebra and Applications”. Brooks/Cole Publishing,
1995.
Golub, G., Van Loan, C."Matrix Computations", John Hopkins, 1984.

SUMÁRIO RESUMO.......................................................................................................................... 3 1 MÉTODOS ITERATIVOS PARA SOLUÇÃO DE SISTEMAS LINEARES ................. 4 1.1 Introdução .......................................................................................................... 4 1.2 Condição de Convergência ................................................................................ 5 1.3 Critério de Parada .............................................................................................. 6 1.4 Método Iterativo de Jacobi ................................................................................. 6 1.4.1 Algorítmo e Complexidade .......................................................................... 8 1.5 Método Iterativo de Gauss-Seidel ...................................................................... 9 1.5.1 Algorítmo e Complexidade ........................................................................ 10 1.6 Método Iterativo da Sobre-Relaxação Sucessiva ............................................ 12 1.6.1 Algorítmo e complexidade ........................................................................ 13 2 RESULTADOS NUMÉRICOS ................................................................................. 15 2.1 2.2 3 4 Primeiro Caso .................................................................................................. 15 Segundo Caso ................................................................................................. 17

DISCUSSÃO DOS RESULTADOS ......................................................................... 22 CONCLUSÃO ......................................................................................................... 23

REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 24

2

RESUMO Neste trabalho serão apresentados e implementados computacionalmente. em ambos sistemas lineares solucionados. método da sobre-relaxação mostrou melhor convergência nos dois problemas. 3 . será analisada a influência do parâmetro ω na convergência da solução. utilizando o programa Matlab. os métodos acima citados serão comparados utilizando-se uma análise de convergência para os problemas. onde a matriz de iteração da sobre-relaxação apresentou menor raio espectral e o método de Jacobi aprsentou o maior valor. Com base nos resultados obtidos. Também serão analisados os raios espectrais das matrizes de iteração de cada método nos distintos problemas solucionados. três métodos iterativos para solução de sistemas lineares: método de Jacobi. método de Gauss-Seidel e método da sobre-relaxação prograssiva. por meio da solução de dois problemas numéricos. Onde. Particularmente para o método da sobre-relaxaçã sucessiva. Essa ordem também foi verificada nos raios espectrais das matrizes de iteração. em segundo lugar está o método de Gauss-Seidel.

1.2) b 1 xi = i − Aii Aii ∑A x .3) pode ser representada conforme eq. (1.3K n.K . Nesse processo é realizada uma série de operações repetidas.3) No processo iterativo a eq.2.2. j =1 n i = 1.1) b é um vetor de constantes de ordm m .x . (1. uma seqüência de vetores { x .3K m.4).x . Sendo cada linha Onde.K} é gerada de modo a convergir para a solução iterativo.2. (1. e por isso tal processo é denominado Ax = b.1. a partir de um vetor inicial 1 2 3 k x 0 .1.1. (1.1 MÉTODOS ITERATIVOS PARA SOLUÇÃO DE SISTEMAS LINEARES 1. bi = ∑ Aij x j . Dado o sistema linear: x do sistema.3K n.x . (1. A é a matriz de coeficientes de tamanho m × n e x é o vetor solução de ordem n .1 Introdução Um sistema de equações lineares Ax = b pode ser resolvido por um processo onde. j =1 j ≠i i = 1. obtém-se: n Aii xi = bi − ∑ Aij x j . ij j j =1 j ≠i n i = 1. A uma matriz quadrada n × n .1. isolando-se o i − ésimo valor de x para i do sistema. 4 .

j =1 j ≠i n i = 1. Onde. 5 .3K n (1. 1. (1.2.4) M é a matriz de iteração e c é um vetor constante. quando satisfeito o seguinte teorema: Teorema 1.2 Condição de Convergência A sequência de vetores solução do sistema linear { x1. nota-se que a convergência não depende da escolha do vetor inicial x0 . ou seja: A seja diagonalmente aii > ∑ aij . método de Gauss-Seidel e método da sobre-relaxação sucessiva.4) converge se e somente se Mk →0 com k →∞.2.1 e 1. segundo o teorema: Teorema 1.1: O método iterativo da eq. ρ ( M ) < 1. M.2. (1. a determinação de que a própria solução do sistema ρ (M ) pode requerer maior esforço numérico Ax = b .1) Pelos Teoremas 1.x k .1. O processo iterativo M não for alterada durante o processo.x 2 .4) converge com qualquer valor inicial x0 se e somente se.K} converge para a solução Ax = b . A seguir serão é dito estacionário se apresentados três métodos iterativos estacionários: método de Jacobi. Outro critério de convergência é que o sistema iterativo (1.1. Por isso. usualmente se utiliza o chamado critério das linhas para convergência.2: É condição suficiente para a convergência dos métodos iterativos de Jacobi e de Gauss-Seidel que a matriz dos coeficientes predominante.x 3 .x k +1 = Mx k + c.1. sendo ρ (M ) o raio espectral (módulo do maior autovalor) da matriz de iteração No entanto.K .

1.1) lim x k = x.3. isto é: (1.3.4 Método Iterativo de Jacobi Considerando um sistema linear: Ax = b. conforme a seguinte relação: k ≥ k máx . deve-se considerar a perda de precisão devido à aritmética de ponto flutuante.3 Critério de Parada A cada iteração do processo descrito na eq.1) 6 . para que não se defina uma exatidão impossível 1.3) k máx é o número máximo de iterações.4. ε. Para a determinação da tolerência de ser alcançada.3. (1. (1.4) o vetor solução obtido é mais próximo da solução do sistema linear Ax = b .1.2) Ou limitar o número de operações. k →∞ Como critério de parada do processo pode-se definir um erro relativo máximo aceitável ε: ε≥ x k − x k −1 xk . (1. (1. Onde.

D é uma matriz diaginal. x k +1 = − D −1 ( L + U ) x k + D −1b. obtém-se: (1.4.5) J = D −1 ( L + U ) é a matriz de x 0 = 0 . Aii Assim.1. x k +1 = Jx k + c. Dx = −( L + U ) x + b. obtem-se: (1. com a diagonal nula.4. Usualmente. Onde.A matriz A pode ser decomposta em: (1.2) na eq. respectivamente.2) A = L + D + U. (1.6) 7 . A eq.3) ( L + D + U ) x = b.4. Aii (1.4.4. L e U são duas matrizes triangulares inferior e superior.4.4. no entanto. Substituindo a eq.5) é semelhante à eq. (1. (1. (1. utiliza-se como valor inicial valor na eq.4).4) (1. substituindo esse x1 = c → xi = bi .4. (1.4. onde iteração do método de Jacobi.1).5). Dx + ( L + U ) x = b. será tomado como valor inicial xi0 = bi .

end erro = norm(x .1. % b: Vetor de constantes. 8 . % Tol: Tolerância desejada.xi.i). % Monta vetor solução inicial end erro = 1. % Número de iterações while erro > Tol Niter = Niter + 1. inf)/norm(x.1 – Rotina do método iterativo de Jacobi em Matlab.IterMax) % Esta rotina soluciona um sistema linear do tipo Ax=b. end end x(i) = (-soma + b(i))/A(i.i). Conv=1 não % houve convergência). error('Número máximo de iterações foi atingido') end for i = 1 : m soma = 0. % Parâmetros de saída: % x: vetor solução.n]=size(A). pelo método % iterativo de Jacobi.b.j)*xi(j) + soma. for j = 1 : n if i ~= j soma = A(i. % Erro relatifo (N inf) erros(Niter) = erro.Conv]=ijacobi(A. % Atribui valor inicial ao erro Niter = 0.1).1 Algorítmo e Complexidade function [x. % IterMax: Número máximo de iterações desejado.4. % Verifica tamanho da matriz A if m == n % Verifica se A é uma matriz quadrada xi = zeros(m.4. end Conv = 1. % Cria vetor solução final for i = 1 : m if A(i. % Parâmetros de entrada: % A: Matriz de coeficientes nxn. else disp('A não é uma matrix quadrada') end Figura 1.inf).Niter. % Niter: Número de iterações realizadas.1). % Cria vetor solução inicial x = zeros(m. [m.i) == 0 error('A possui zero na diagonal') end xi(i) = b(i)/A(i. % Conv: Informação de convergência (Conv=1 houve convergência. if Niter == IterMax Conv = 0. % Vetor contendo o erro de cada iteração xi = x.Tol. % erro: Erro relativo em norma infinita.erros.

4. (1. Os dois últimos parâmetros são utilizados como critérios de parada. (1.5.1) (1. o erro relativo ε k em norma infinita de = 1 ) ou não ( Conv = 0 ). o vetor b .1 – Complexidade de Jacobi usando k iterações em sistema de ordem n > 1.1) é apresentada a rotina. respectivamente. criada no ambiente Matlab. 2001). com a matriz A sendo decomposta em A = L + D + U . a tolerância desejada ε e o número máximo de k máx .1). x k +1 = −( D + L) −1Ux k + ( D + L) −1 b.4. Os parâmetros de A . o número de iterações k . Operações adições multiplicações divisões Complexidade kn 2 + kn + k ( k + 1) n 2 − kn n+k Tabela 1. O sistema linear pode. com a diagonal nula.5.3. (1.5.5 Método Iterativo de Gauss-Seidel Seja o sistema linear mostrado na eq.3) 9 ( L + D + U ) x = b. E tem como parâmetros de saída o vetor solução cada iteração e informa se ocorreu convergência dentro do número de iterações escolhido com base na tolerância informada ( Conv A complexidade computacional do algorítmo é dada segundo a tab.3).Na fig. x . respectivamente. (1.2) (1.2) e (1. conforme eqs. .4. ( D + L) x = −Ux + b. então.4. ser reescrito na seguinte forma: (1. x k +1 = Sx k + d . (Campos. L e U duas matrizes triangulares inferior e superior. sendo D uma matriz diaginal.3. que resolve um sistema linear do tipo entrada são: a matriz iterações Ax = b pelo método iterativo de Jacobi. filho. 1.1).

4) fica clara a diferença entre os métodos de Jacobi e Gauss-Seidel. a tolerância desejada ε e o número máximo de k máx . (1. o vetor b . criada no ambiente Matlab.5. o erro relativo ε k em norma infinita de = 1 ) ou não ( Conv = 0 ). conforme eqs. Uma maneira mais simples de implementar. Os parâmetros de entrada são: a matriz iterações A .5. Dx k +1 = − Lx k +1 − Ux k + b.2) e (1. respectivamente. (1. (1. S = −( D + L) −1U é a matriz de iteração do método de Gauss-Seidel.3. 1.6). ( D + L) x = −Ux + b. ( D + L) x k +1 = −Ux k + b. que resolve um sistema linear do tipo Ax = b pelo método iterativo de Gauss-Seidel. no método de Gauss-Seidel o vetor incluindo x k +1 e x k . E tem como parâmetros de saída o vetor solução cada iteração e informa se ocorreu convergência dentro do número de iterações escolhido com base na tolerância informada ( Conv 10 . x . Os dois últimos parâmetros são utilizados como critérios de parada.4) Na eq. (1.5. x k +1 é obtido a partir dos elementos mais recentes. enquanto.5.Onde. O valor inicial utilizado será o mesmo da eq. No método de Jacobi o vetor x k +1 é calculado usando somente valores xik . o número de iterações k .3.4. (1.3).1) é apresentada a rotina.1 Algorítmo e Complexidade Na fig. sem a necessidade de calcular a matriz inversa é mostrado abaixo: ( L + D + U ) x = b.

% Conv: Informação de convergência (Conv=1 houve convergência. % IterMax: Número máximo de iterações desejado.Niter. % Parâmetros de saída: % x: vetor solução. % erro: Erro relativo em norma infinita.5. xi1 = xi. % Tol: Tolerância desejada. if Niter == IterMax Conv = 0.IterMax) % Esta rotina soluciona um sistema linear do tipo Ax=b. % Monta vetor solução inicial xi1 = xi. xi(i) = x(i). end end x(i) = (-soma + b(i))/A(i. % Niter: Número de iterações realizadas.i) == 0 error('A possui zero na diagonal') end xi(i) = b(i)/A(i.j)*xi(j) + soma. 11 . for j = 1 : n if i ~= j soma = A(i. pelo método % iterativo de Gauss-Seidel.i). end Conv = 1. [m. else disp('A não é uma matrix quadrada') end Figura 1.n]=size(A).inf). % Número de iterações while erro > Tol Niter = Niter + 1. inf)/norm(x.Conv]=igauss_seidel(A. % Cria vetor solução inicial x = zeros(m. Conv=1 não % houve convergência). % Vetor que armazena valores iniciais de xi end erro = 1. % Erro relatifo (N inf) erros(Niter) = erro. % b: Vetor de constantes.1 – Rotina do método iterativo de Jacobi em Matlab. % Cria vetor solução final for i = 1 : m if A(i. % Vetor contendo o erro de cada iteração xi = x. % Verifica tamanho da matriz A if m == n % Verifica se A é uma matriz quadrada xi = zeros(m.function [x. % Parâmetros de entrada: % A: Matriz de coeficientes nxn.xi1. % Atribui valor inicial ao erro Niter = 0.1).Tol. error('Número máximo de iterações foi atingido') end for i = 1 : m soma = 0.b.1).erros.i). % Atualiza o vetor solução inicial end erro = norm(x .

Onde. respectivamente. com a matriz A sendo decomposta em A = L + D + U . Multiplicando o sistema linear por um parâmetro ω .4.A complexidade computacional do algorítmo é dada segundo a tab. Somando o vetor nulo ( D − D) x ao primeiro termo: ( D − D) x + ω ( L + D + U ) x = ωb.6. (Campos. sendo D uma matriz diaginal. 12 .2) R = ( D + ωL) −1[(1 − ω) D − ωU ] é a matriz de iteração do método da sobre-relaxação sucessiva (SOR: sucessive over-relaxation). x k +1 = Rx k + e. filho. (1.6. (1.5. Operações adições multiplicações divisões Complexidade kn 2 + kn + k ( k + 1) n 2 − kn n+k Tabela 1.1).5. (1. ( D + ωL) x k +1 = [(1 − ω) D − ωU ] x k + ωb.6.6 Método Iterativo da Sobre-Relaxação Sucessiva Considerando o sistema linear da eq. com a diagonal nula.1) ω ( L + D + U ) x = ωb. x k +1 = ( D + ωL) −1[(1 − ω) D − ωU ] x k + ω ( D + ωL) −1 b. 1. 2001).1). ( D + ωL) x = [(1 − ω) D − ωU ] x + ωb. L e U duas matrizes triangulares inferior e superior.1 – Complexidade de Gauss-Seidel usando k iterações em sistema de ordem n > 1.3) (1. tem-se: (1.

(1. a partir da eq. 13 .5. criada no ambiente Matlab.3.6. (1. A convergência do método SOR depende da escolha do parâmetro necessário que (1. Dx k +1 = ω(− Lx k +1 − Ux k + b) + (1 − ω) Dx k .6.6. Usualmente.6. A complexidade do método SOR é a mesma mostrada na tab. (1. o número parâmetros de entrada são: a matriz máximo de iterações k máx e o parâmetro ω . Um valor ótimo de ω pode ser calculado segundo a eq. 1.3. ωotim = 2 1 + 1 − ρ (J )2 . o vetor b . Os valores de ε e k máx são utilizados como critérios de parada.2): ( D + ωL) x k +1 = [(1 − ω) D − ωU ] x k + ωb. (1.4. respectivamente.1).6).1 Algorítmo e complexidade Na fig. (1.1) é apresentada a rotina. x k +1 = ωD −1 (− Lx k +1 − Ux k + b) + (1 − ω) x k . Os A .3).Uma outra maneira de representar a forma de iteração do método da sobrerelaxação é a seguinte. a tolerância desejada ε . ωotim é determinado de forma a produzir o menor raio Na equação anterior espectral da matriz de iteração no método SOR. (1.5).6.2) e (1. utiliza-se 1 < ω < 2 . conforme eqs. que resolve um sistema linear do tipo Ax = b pelo método iterativo da sobre-relaxação sucessiva.6. é 0 < ω < 2 para garantir a convergência. J é a matriz iterativa do método de Jacobi.4) ω. O valor inicial utilizado para a iteração será o mesmo da eq.5) Onde. (1.

Niter.xi1.b. % Atribui valor inicial ao erro Niter = 0. [m.i). end Conv = 1. xi(i) = x(i).w)*xi(i).i) == 0 error('A possui zero na diagonal') end xi(i) = b(i)/A(i. % Erro relatifo (N inf) erros(Niter) = erro.1). % Número de iterações while erro > Tol Niter = Niter + 1. for j = 1 : n if i ~= j soma = A(i. else disp('A não é uma matrix quadrada') end Figura 1. % Vetor contendo o erro de cada iteração xi = x. 14 .6. xi1 = xi. pelo método % iterativo da sobre-relaxação sucessiva.1 – Rotina do método iterativo de Jacobi em Matlab.inf). % Monta vetor solução inicial xi1 = xi.IterMax. % w: parâmetro 0 < w < 2 % Parâmetros de saída: % x: vetor solução. % Vetor que armazena valores iniciais de xi end erro = 1.n]=size(A). % IterMax: Número máximo de iterações desejado.function [x. error('Número máximo de iterações foi atingido') end for i = 1 : m soma = 0. b: Vetor de constantes. if Niter == IterMax Conv = 0.1). % Verifica tamanho da matriz A if m == n % Verifica se A é uma matriz quadrada xi = zeros(m. inf)/norm(x. % Tol: Tolerância desejada. % Conv: Informação de convergência (Conv=1 houve convergência.Conv]=SOR(A.i) + (1 . % Atualiza o vetor solução inicial end erro = norm(x .j)*xi(j) + soma. % Cria vetor solução final for i = 1 : m if A(i. Conv=1 não % houve convergência). end end x(i) = w*(-soma + b(i))/A(i.erros. % erro: Erro relativo em norma infinita.Tol. % Niter: Número de iterações realizadas.w) % Esta rotina soluciona um sistema linear do tipo Ax=b. % Parâmetros de entrada: % A: Matriz de coeficientes nxn. % Cria vetor solução inicial x = zeros(m.

método de GaussSeidel e método da sobre-relaxação sucessiva. Sobre esses dois problemas serão realizadas análises de convergência e do raio espectral de cada matriz de iteração. 2. utilizando-se os três métodos iterativos apresentados no trabalho: método de Jacobi. o εk em norma infinita de cada iteração e informa se ocorreu convergência dentro do número de iterações escolhido com base na tolerância informada ( Conv = 1 ) ou não ( Conv 2 = 0 ). exercício 49 página 307. Dado pelo seguinte sistema linear:  4 − 1 0 − 1 0 0   x1  1 − 1 4 − 1 0 − 1 0   x  0   2     0 − 1 4 0 0 − 1  x3  0         =  . − 1 0 0 4 − 1 0   x4  0  0 − 1 0 − 1 4 − 1  x5  0       0 0 − 1 0 − 1 4   x6  0      Como critérios de parada serão utilizados os seguintes valores: (2. RESULTADOS NUMÉRICOS Nessa seção serão analisados dois sistemas lineares distintos. o número de iterações k .2) 15 . 1995.1.1.001.E tem como parâmetros de saída o vetor solução erro relativo x . (2. k máx = 30.1) ε = 0.1 Primeiro Caso O primeiro problema numérico a ser análisado consiste em um exercício proposto por Datta.

Conforme fig.2). conforme tab.1.5 .1. 16 .1. para cada iteração nos três métodos utilizados. obtidos pela norma infinita.ε Método de Jacobi Método de Gauss-Seidel Método da Sobre-Relaxação 0.κ Figura 2.1128 Tabela 2.128 . Particularmente para o método SOR. (2. A análise é realizado comparando-se o número de iterações necessárias para que se atinja a tolerância desejada.1) são mostrados os valores dos erros relativos. 0.25 Análise de Convergência Erro relativo . para valores de 1 < ω < 1. Foram obtidos os seguintes valores valores para os raios espectrais das matrizes de iteração para cada processo.35 0.05 .1 – Análise de convergência para o primeiro caso.1.2 0.1). (2. com incrementos de ∆ω = 0.1 0.1 – Raios espectrais das matrizes de iteração para o primeiro caso.1.3 0. o qual resulta em ωotim = 1.15 0. ρ (J ) = 0.05 0 0 1 2 3 4 5 6 7 8 9 10 11 12 Número de iterações . é analisada a influência do parâmetro ω na convergência da solução. Na fig.6036 ρ ( S ) = 0.3643 ρ ( R ) = 0. (2.Na resolução do sistema linear pelo método SOR será utilizado o valor ótimo do parâmetro ω .

1) ε = 0.36.14].2) e (2.45 1..05 1.5 Análise de convergência com relação a ω Número de iterações .2.  Como critérios de parada serão utilizados os seguintes valores: (2. 2.2. k máx = 100..2. b é um vetor de ordem 36 .14.1.5 Parâmetro ω Figura 2. dado por: (2.2.25 1. mostrada nas tabs.2) 17 .5 5 1 1.5 6 5. 0. com : i = 1.2.10 9.  bi = 2. (2. para : i ≠ [1. E 1. para : i = 34..005.5 7 6.1 1.15 1.2 Segundo Caso No segundo problema será resolvido um sistema linear cuja matriz de coeficientes A é uma matriz esparsa de ordem 36 × 36 .3).2 – Análise de convergência com relação a ω para o primeiro caso. (2.1).35 1..5 8 7.3 1. para : i = [1.2.4 1.34].κ 9 8.2 1.

0101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Tabela 2.coluna 01 a 12 0.4044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4601 0 0 0 0 0 0 0 0 5.5405 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.5067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.4601 0 0 0 0 1. coluna 01 a 12.3918 0 0 0 0 0 0 0 -0.4044 0 0 0 1.1963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.081 0 0 0 0 0 0 0 0 0 0 0 -0.4044 0 1.4378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.3479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0202 0 0 0 0 0 0 0 0 0 0 0 -0.1618 0 0 0 0 0 0 0 0 0 0 0 -0.3918 0 0 0 0 0 0 0 0 0 0.3479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.7512 -0.4601 -0.0135 0 0 0 0 0 0 0 0 0 0 0 -0.0982 0 0 0 0 0.0809 0 -0.1963 0 0 0 0 0 0 0 0 0 0 0 -0.0809 0 0 0 0. 18 .0216 0 0 0 0 0 0 0 0 0 0 0 -0.1 – Matriz de coeficientes A.4601 1.Matriz A .0982 0.0108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4601 0 0 0 0 0 0 0.1618 0 0 0 0 0 0 0 0 0 0 0 -0.2.7512 0 0 0 0 0 0 -0.

4044 0 0 0 0 0 0 0 0 -0.0135 0 0 0 0 0 0 0 0 0 0 0 -0.3918 0 0 0 0 0 0 0 -0.3918 0 0 0 0 0 0 0 0 0 0.0809 0 0 0 -0.0216 0 0 0 0 0 0 0 0 0 0 0 -0.0108 0 0 0 0 0 0 0 0 0 0 0 0.4044 0 1.2.4601 0 0 0 0 0 0 0.coluna 13 a 24 -0.4601 1.0809 0 0.4601 1.5405 0 0 0 0 0 0 0 0 0 0 0 1.0809 0 0 0 0.0982 0 0 0 0 -0. coluna 13 a 24.4378 0 0 0 0 0 0 0 0 0 0 0 0 -0.1618 0 0 0 0 0 0 0 0 0 0 0 -0.4044 0 0 0 1.0101 0 0 0 0 0 0 0 0 0 0 0 0 -0.0982 -0.3479 0 0 0 0 0 0 0 0 0.5067 0 0 0 0 0 0 0 0 0 0 0 1.4044 0 0 0 1.5067 0 0 0 0 0 0 0 0 0 0 -0.081 0 0 0 0 0 0 0 0 0 0 0 -0.0809 0 -0.Matriz A .3479 0 0 0 0 0 0 0 0 0 0 0 5.1963 0 0 0 0 0 0 0 0 0 0 0 -0. 19 .7512 0 0 0 0 0 0 -0.1963 0 0 0 0 0 0 0 0 0 0 0 -0.4378 0 0 0 0 0 0 0 0 0 0 0 5.4601 0 0 0 0 0 0 0 0 0 0 0.2 – Matriz de coeficientes A.0202 0 0 0 0 0 0 0 0 0 0 0 -0.4044 0 0 0 0 0 0 0 0 0 0 -0.0982 Tabela 2.4044 0 0 0 0 0 0 0 0.0101 0 0 0 0 0 0 0 0 0 0 0 0.0108 0 0 0 0 0 0 0 0 0 0 0 0 -0.4044 0 1.4601 0 0 0 0 1.3479 0 0 0 0 0 0 0 0 0 0 0 5.7512 0 0 0 0 0 0 0 0 0 0 0.0982 0.4378 0 0 0 0 0 0 0 0 0 0 0 5.5405 0 0 0 0 0 0 0 0 0 0 0 0 1.4044 0 0 0 0 0 0 0 0 0 0.4601 0 0 0 0 0 0 0 0 0 0 -0.4378 0 0 0 0 0 0 0 0 0 0 0 0 -0.1618 0 0 0 0 0 0 0 0 0 0 0 -0.3479 0 0 0 0 0 0 0 0 0 0 0 0 -0.

2.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3479 0 5.4044 0 1.5405 0 0 0 0 0 0 0 0 0 0 0 1.1618 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0. coluna 25 a 36.4378 0 0 0 0 0 0 0 0 0 0 0 5.0216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4378 0 0 0 0 0 0 0 0 0 0 0 5.3479 0 0 0 0 0 0 0 0 0 0 5.4601 0 0 0 0 1.0982 0 0 0 0 -0.4044 0 1.7512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.coluna 25 a 36 0 0 0 0 0 0 0 0 0 0 0 0 -0.Matriz A .7512 0 0 0 0 0 0 -0.1618 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3 – Matriz de coeficientes A.3918 Tabela 2.0809 0 0.5067 0 0 0 0 0 0 0 0 0 0 0 1. 20 .0809 0 0 0 -0.4601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4044 0 0 0 0 0 0 0 0 0 0.4601 0 0 0 0 0 0 0.1963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0108 0 0 0 0 0 0 0 0 0 0 0 0.4601 0 0 0 0 0 0 0 0 0 0 0.0101 0 0 0 0 0 0 0 0 0 0 0 0.1963 0 0.0982 0.4044 0 0 0 0 0 0 0 0.4601 1.3918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.

Foram obtidos os seguintes valores valores para os raios espectrais das matrizes de iteração para cada processo. ρ (J ) = 0.25 < ω < 1.4784 .6 Erro relativo . com incrementos de ∆ω = 0.8 Análise de Convergência 0.1) são mostrados os valores dos erros relativos.4).2.Na resolução do sistema linear pelo método SOR será utilizado o valor ótimo do parâmetro ω . obtidos pela norma infinita.2). o qual resulta em ωotim = 1.4 0.ε Método de Jacobi Método de Gauss-Seidel Método da Sobre-Relaxação 0.4 – Raios espectrais das matrizes de iteração para o primeiro caso. (2.05 .1 – Análise de convergência para o segundo caso. 21 . para valores de ω para o segundo problema 1.8755 ρ (R ) = 0. (2. conforme tab. para cada iteração nos três métodos utilizados.2.2.2.2. (2.4784 Tabela 2.75 .2 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 3435 Número de iterações .κ Figura 2. 0. Na fig.9357 ρ ( S ) = 0. A análise de convergência em função do parâmetro é mostrada na fig.

4 1.2.2) são mostrados os números de iterações necessárias para a convergência do primeiro e segundo problema apresentados.1. (3.1.25 1. Jacobi Número de iter.1) e (3. Jacobi Número de iter. Erro relativo 31 0.005 Tabela 3.17 16 Análise de convergência com relação a ω Número de iterações .2 – Análise de convergência com relação a ω para o segundo caso. 3 DISCUSSÃO DOS RESULTADOS Nas tabs.1 – Resultados de convergência para o primeiro caso. e os valores finais dos erros relativos obtidos para cada método.0006 Tabela 3.1.0048 SOR 9 0.3 1.45 1.κ 15 14 13 12 11 10 9 1.0005 SOR 5 0.7 1.35 1.5 1.65 1. sob a condição da tolerância desejada. 22 .0007 Gauss-Seidel 7 0.1.75 Parâmetro ω Figura 2.2 – Resultados de convergência para o segundo caso.005 Gauss-Seidel 21 0.6 1. Erro relativo 12 0.55 1.

1.2) e (2. atingindo a tolerância desejada para cada um deles. que apesar de obter um erro inicial mais alto. 23 .2). estritamente ligadas às propriedades das matrizes de iteração. 4 CONCLUSÃO Com a realização desse trabalho é possível notar que cada um dos métodos numéricos utilizados possui suas características próprias. que para o primeiro caso foi ωotim = 1.4784 . Nas análises realizadas em função do parâmetro ω . (3.2. (2. Para os problemas analisados o método iterativo da sobre-relaxação sucessiva se mostrou ser mais eficiente.2. o que vai de encontro à condição de ser uma matriz diagonalmente dominante. O segundo mais rápido foi o método de Gauss-Seidel.128 e para o segundo ωotim = 1. Esses resultados de convergência eram esperados.2. pois os raios espectrais das matrizes de iteração dos diferentes métodos seguem a mesma ordem apresentada na análise de convergência.1). o método iterativo SOR convergiu mais rapidamente para ambos os sistemas lineares solucionados. mostradas nas figs. Teorema 1. (3. (2.1.2) nota-se. Algumas pré-analises são necessárias para a definição e implementação do métódo numérico a ser utilizado. E essa mesma matriz deve possuir um baixo valor do raio espectral. Teorema 1.1).Em observação às figs.1. Porém. para ambos os problemas.1) e às tabs. os três métodos são limitados quanto à generalidade da matriz de coeficientes A .1. (2. essa não pode possuir valores nulos na diagonal principal. mais rapidamente. Também é possível perceber que a implementação computacional desses métodos numéricos possui diferenças e particularidades quando comparada ao problema analítico. quando utilizado o valor de ωotim . observa-se que realmente o método SOR converge para a solução.1.

“Numerical Linear Algebra and Applications”. filho.REFERÊNCIAS BIBLIOGRÁFICAS Bronson. "Matrix Operations". 1989. LTC. F. Golub. John Hopkins. 1984. N. 2001. 1995. B. Datta. 24 . C. Brooks/Cole Publishing. F. “Algorítmos Numéricos”.."Matrix Computations". Mac Graw Hill. R. G. Van Loan. Campos.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->