O documento descreve métodos iterativos para resolver sistemas de equações lineares, incluindo o método de Jacobi. Vários tipos de matrizes são discutidos, como matrizes densas, diagonais, triangulares e esparsas. O método de Jacobi é explicado como um processo iterativo para atualizar as variáveis até convergência para a solução.
Métodos iterativos para sistemas de equações lineares
1. Métodos iterativos para o cálculo de sistema de equações lineares 1
Métodos para Sistemas de Equações Lineares
Sistema de equações lineares
a11 x1 + a12 x2 + a13 x3 + … + a1n xn = b1
a21 x1 + a22 x2 + a23 x3 + … + a2n xn = b2
a31 x1 + a32 x2 + a33 x3 + … + a3n xn = b3
M M M M M
an1 x1 + an2 x2 + an3 x3 + … + ann xn = bn
Na forma matricial: A x = b, na qual:
A =
nnnnn
n
n
n
aaaa
aaaa
aaaa
aaaa
L
MOMMM
L
L
L
321
3333231
2232221
1131211
, x =
nx
x
x
x
M
3
2
1
b =
nb
b
b
b
M
3
2
1
Exemplo
Solução de um sistema de equações no Matlab:
x1 + 3 x2 - 7 x3 = 1
2 x1 + 9 x2 - 2 x3 = 1
-3 x1 + 6 x2 - 8 x3 = 4
>> A = [ 1 3 -7; 2 9 2; -3 6 8 ];
>> b = [ 1; 1; 4 ];
>> x = Ab
x =
-0.9677
0.3548
-0.1290
Exemplo
Sistema de equações com matriz de coeficientes A singular (não possui solução):
x1 + 3 x2 - 7 x3 = 1
2 x1 + 6 x2 - 14 x3 = 1
-3 x1 + 6 x2 - 8 x3 = 4
2. Métodos iterativos para o cálculo de sistema de equações lineares 2
>> A = [ 1 3 -7; 2 6 14; -3 6 8 ];
>> b = [ 1; 1; 4 ];
>> x = Ab
Exemplo
Sistema mal-condicionado: matriz de Hilbert, aij = 1/(i + j - 1)
>> A = hilb(3);
>> det(A)
ans =
4.6296e-004
O resultado para o cálculo do determinante da matriz de Hilbert não mostra que o
sistema é mal-condicionado. Para isso, utilizamos o número de condição, cond.
>> cond(A)
ans =
524.0568
O número de condição de uma matriz A é calculado como o produto da norma
de A pela norma de sua inversa, 1−
AA . Quanto maior o número de condição da
matriz, mais mal-condicionada ela será. Assim, para o exemplo apresentado, o número
de condição igual a 524.0568 expressa uma matriz mal-condicionada. O erro no cálculo
das variáveis x num problema do tipo Ax = b relaciona-se com o número de condição
através da expressão:
A
E
AA
x
xx 1
~
~
−
≤
−
= número de condição
A
E
na qual | xx ~− é a norma do desvio da variável x, E o erro devido ao desvio e x~ a
variável com incerteza.
A norma de uma matriz é medida do tamanho da matriz. Observe que o
tamanho não é a dimensão da matriz, isto é, o número de linhas e colunas que esta
possui.
Existem diversos tipos de normas, que estão apresentadas a seguir.
Normas de vetor:
Norma p:
pn
i
p
ip
xx
/1
1
||
= ∑=
3. Métodos iterativos para o cálculo de sistema de equações lineares 3
Norma 1: ∑=
=
n
i
ixx
1
1
|| (soma dos módulos)
Norma 2 ou euclideana:
2/1
1
222
2
2
1
=+++= ∑=
n
i
ine
xxxxx L
Norma máxima (ou infinita): ||
1
i
ni
xmáxx
≤≤∞
=
Normas de matrizes:
Norma 1: ∑=
≤≤
=
m
i
ij
nj
amáxA
1
11
|| = máxima soma absoluta de colunas
Norma máxima: ∑=
≤≤∞
=
n
j
ij
mi
amáxA
1
1
|| = máxima soma absoluta de linhas
Norma euclideana:
= ∑∑= =
m
i
n
j
ije
aA
1 1
2
No Matlab, as normas são avaliadas pela função norm:
>> help norm
NORM Matrix or vector norm.
For matrices...
NORM(X) is the largest singular value of X, max(svd(X)).
NORM(X,2) is the same as NORM(X).
NORM(X,1) is the 1-norm of X, the largest column sum,
= max(sum(abs((X)))).
NORM(X,inf) is the infinity norm of X, the largest row sum,
= max(sum(abs((X')))).
NORM(X,'fro') is the Frobenius norm, sqrt(sum(diag(X'*X))).
NORM(X,P) is available for matrix X only if P is 1, 2, inf or
'fro'.
For vectors...
NORM(V,P) = sum(abs(V).^P)^(1/P).
NORM(V) = norm(V,2).
NORM(V,inf) = max(abs(V)).
NORM(V,-inf) = min(abs(V)).
Tipos de matrizes de sistemas de equações lineares
1. Matriz densa
4. Métodos iterativos para o cálculo de sistema de equações lineares 4
Uma matriz densa é aquela em que a maioria ou até, a totalidade dos seus
elementos são não-nulos.
A =
nnnn
n
n
aaa
aaa
aaa
L
MOMM
L
L
21
22221
11211
, em geral, aij ≠ 0
2. Matriz diagonal
A matriz diagonal é aquela que apresenta elementos não-nulos somente na
diagonal principal.
A =
nna
a
a
L
MOMM
L
L
00
00
00
22
11
, aii ≠ 0 e aij = 0 (i ≠ j)
3. Matriz triangular superior
A matriz triangular superior é aquela que apresenta elementos não-nulos acima
da diagonal principal (incluindo esta).
A =
nn
n
n
a
aa
aaa
L
MOMM
L
L
00
0 222
11211
, aij
>=
≤≠
ji
ji
,0
,0
4. Matriz triangular inferior
Inversamente a anterior, a matriz triangular inferior somente contém elementos
não-nulos abaixo da diagonal principal.
A =
nnnn aaa
aa
a
L
MOMM
L
L
21
2221
11
0
00
, aij
<=
≥≠
ji
ji
,0
,0
6. Matriz tridiagonal
5. Métodos iterativos para o cálculo de sistema de equações lineares 5
A matriz tridiagonal é aquela que contém elementos não-nulos nos dois
elementos em torno do elemento da diagonal principal.
A =
−
−−−
nnnn
nnnn
aa
aa
aa
aaa
aaa
aaa
aa
,1,
,11,1
5554
454443
343332
232221
1211
00000
00000
00000
0000
0000
0000
00000
L
L
MMOMMMMM
L
L
L
L
L
, aij ≠ 0 (i = j ± 1)
A matriz tridiagonal é um caso particular da matriz banda, isto é, a matriz cujos
elementos não-nulos se encontram em uma faixa (ou banda) em torno da diagonal
principal. Exemplos de matrizes bandas, além da tridiagonal, são as matrizes quadri e
pentadiagonais.
5. Matriz esparsa
As matrizes esparsas são aquelas que apresentam os elementos não-nulos
dispersos aleatoriamente numa matriz constituída predominantemente por elementos
nulos. Um tipo de matriz esparsa é a matriz banda cujas linhas e colunas tenham sido
permutados aleatoriamente.
A =
−−−
000000
00000
00000
000000
00000
0000
00000
2,
1,11,1
5452
45
3533
22321
1411
L
L
MMOMMMMM
L
L
L
L
L
n
nnn
n
a
aa
aa
a
aa
aaa
aa
Métodos numéricos para o cálculo de sistemas de equações lineares
1. Métodos diretos
1.1 Método de eliminação gaussiana
1.2 Método de Gauss-Jordan
1.3 Método LU
6. Métodos iterativos para o cálculo de sistema de equações lineares 6
1.4 Método QR
1.5 Método de Choleski
2. Métodos iterativos
Métodos iterativos baseados no cálculo de resíduos: )()( kk
Axbr −=
)()()1( kkk
xxx δ+=+
da qual o vetor )(k
xδ satisfaz a equação
)()(
)'( kk
rxUL =⋅⋅ δ
2.1 Método de Jacobi
O métodos iterativos baseiam-se na repetição do cálculo das equações atribuídas
ad-hoc a partir das próprias equações do sistema de equações lineares:
x1 = 1 / a11 (b1 - a12 x2 - a13 x3 - … - a1n xn)
x2 = 1 / a22 (b2 - a21 x1 - a23 x3 - … - a2n xn)
x3 = 1 / a33 (b3 - a31 x1 - a32 x2 - … - a3n xn)
M M M M M
xn = 1 / ann (bn - an1 x1 - an2 x2 - … - ann xn)
Re-escrevendo as equações acima na forma algébrica compacta e considerando
que os valores das variáveis xi do lado esquerdo de cada equação são os valores da
iteração k+1 calculados a partir dos valores da iteração k de cada variável xi do lado
direito de cada equação, tem-se que:
−= ∑
≠
=
+
n
ij
j
k
j
ii
ij
i
ii
k
i x
a
a
b
a
x
1
)()1( 1
, k = 1, 2, ...
Este é o método iterativo de Jacobi, que começa com um valor inicial x(0)
que é
atualizado por um processo iterativo até que a convergência para a solução seja
alcançada. O critério de convergência é determinado pela expressão:
ε<−+
|| )()1( k
i
k
i xx
na qual ε é a tolerância especificada.
O método de Jacobi pode ser formulado na forma matricial, tomando-se a matriz
de coeficientes A dividida em três partes:
7. Métodos iterativos para o cálculo de sistema de equações lineares 7
UDLA ++=
na qual L é a parte de A abaixo da diagonal, U é a parte de A acima da diagonal e D é
matriz diagonal de A.
Para encontrar a equação para o cálculo iterativo de Jacobi, re-escrevemos a
equação original Ax = b na forma:
bxUDL =⋅++ )(
Re-arranjando a equação, obtém-se:
bxULxD +⋅+−=⋅ )(
O vetor solução atualizado x(k+1)
substitui x no lado esquerdo da equação,
enquanto x(k)
substitui x no lado direito da equação. O resultado é o processo iterativo:
bDxJx kk
⋅+⋅= −+ 1)()1(
no qual J é a matriz de iteração de Jacobi dada por:
)(1
ULDJ +⋅−= −
Exemplo
No Matlab, vamos resolver o sistema de equações lineares:
15 x1 - 5 x2 - 5 x4 = -3,45
-5 x1 + 12 x2 - 2 x3 = 9,96
- 2 x2 + 6 x3 - 2 x4 = 0
-5 x1 - 2 x3 + 9 x4 = 0
>> A = [ 15 -5 0 -5 ; -5 12 -2 0 ; 0 -2 6 -2 ; -5 0 -2 9 ]
A =
15 -5 0 -5
-5 12 -2 0
0 -2 6 -2
-5 0 -2 9
>> b = [ -3.45; 9.96; 0; 0 ]
b =
-3.4500
9.9600
0
0
>> D = diag(diag(A))
D =
15 0 0 0
0 12 0 0
0 0 6 0
8. Métodos iterativos para o cálculo de sistema de equações lineares 8
0 0 0 9
>> L = tril(A) - D
V =
0 0 0 0
-5 0 0 0
0 -2 0 0
-5 0 -2 0
>> U = triu(A) - D
W =
0 -5 0 -5
0 0 -2 0
0 0 0 -2
0 0 0 0
>> J = -inv(D)*(L + U)
J =
0 0.3333 0 0.3333
0.4167 0 0.1667 0
0 0.3333 0 0.3333
0.5556 0 0.2222 0
>> x = [0 0 0 0]'
x =
0
0
0
0
>> for k = 1:50
x = J*x + Db;
end
>> x
x =
0.1400
0.9500
0.3700
0.1600
A solução do sistema pelo método iterativo de Jacobi, obtida após 50 iterações,
foi x1 = 0,14; x2 = 0,95; x3 = 0,37 e x4 = 0,16.
2.2 Método de Gauss-Seidel
O método de Gauss-Seidel difere do método de Jacobi ao incorporar os valores
atualizados de x imediatamente após o seu cálculo. A forma de Gauss-Seidel para a
equação é dada por:
bxUxDL +⋅−=⋅+ )(
O processo iterativo de Gauss-Seidel é expresso então por:
bDLxGx kk
⋅++⋅= −+ 1)()1(
)(
9. Métodos iterativos para o cálculo de sistema de equações lineares 9
no qual G é a matriz de iteração de Gauss-Seidel, dada por:
UDLG ⋅+−= −1
)(
Na forma algébrica, o método de Gauss-Seidel é descrito pela equação:
−−= ∑∑ +=
−
=
++
n
ij
k
jij
i
j
k
jiji
ii
k
i xaxab
a
x
1
)(
1
1
)1()1( 1
, k = 1, 2, ...
Os métodos de Jacobi e de Gauss-Seidel requerem que as matrizes J e G,
respectivamente, sejam convergentes. O parâmetro que determina a convergência desses
métodos é o raio espectral ρρρρ, que é calculado como o maior autovalor das matrizes J e
G.
2.3 Método de sobrerrelaxação sucessiva (SOR)
A forma matricial do método de sobrerrelaxação sucessiva SOR em termos das
matrizes D, V, e W é dado por:
bLDxSx kk
⋅++⋅= −+ 1)()1(
)()( ωωω
no qual S(ω) é a matriz de iteração SOR, que depende de ω e é expressa como:
[ ]UDLDS ωωωω −−⋅+= −
)1()()( 1
Quando ω = 1, S(ω) = G, ou seja, a matriz SOR é igual à matriz de
Gauss-Seidel. Normalmente, os valores de ω, denominado fator de sobrerrelaxação,
possuem valores maiores do que 1.
Na forma algébrica, a equação do método de Gauss-Seidel pode ser re-escrita
como:
−−+= ∑∑ +=
−
=
++
n
ij
k
jij
i
j
k
jiji
ii
k
i
k
i xaxab
a
xx
1
)(
1
1
)1()()1( 1
, k = 1, 2, ...
No método SOR, o fator de sobrerrelaxação ω é introduzido multiplicando o
coeficiente 1/aii:
−−+= ∑∑ +=
−
=
++
n
ij
k
jij
i
j
k
jiji
ii
k
i
k
i xaxab
a
xx
1
)(
1
1
)1()()1( ω
, k = 1, 2, ...
A comparação entre os três métodos utilizando 16 casas decimais (format long)
mostra que o método de Jacobi converge após 84 iterações, enquanto que o método de
Gauss-Seidel converge após 43 iterações e o SOR (ω = 1,15) com 26 iterações.
10. Métodos iterativos para o cálculo de sistema de equações lineares 10
Fator de sobrerrelaxação ω Número de iterações
para atingir erro < 10-16
1,00
1,05
1,10
1,15
1,20
1,25
1,30
43
37
32
26 ← mínimo
27
31
35
Autovalores e autovetores
Problemas de equilíbrio do tipo circuito RLC ressonante ou sistema mecânico
massa-mola podem ser tratados como problemas que envolvem o cálculo de autovalores
e autovetores (em inglês, eigenvalues e eigenvectors).
xAx λ=
Rearranjando a equação, resulta:
0)( =−=− xIAxAx λλ
pois, como λ é um escalar, I é matriz identidade.
Para que a equação acima admita outras soluções além da solução trivial (x = 0),
é necessário que a matriz do sistema homogêneo acima seja singular, isto é, que:
0|| =− IA λ
Na forma explícita, o determinante acima pode ser re-escrito como:
0
321
3333231
2232221
1131211
=
−
−
−
−
λ
λ
λ
λ
nnnnn
n
n
n
aaaa
aaaa
aaaa
aaaa
L
MOMMM
L
L
L
O cálculo do determinante característico conduz a uma equação polinomial de
grau n. As raízes do polinômio característico são os chamados autovalores da matriz A.
Exemplo
Considere a seguinte matriz de coeficientes do sistema de equações A x =λ x:
11. Métodos iterativos para o cálculo de sistema de equações lineares 11
A =
247
311
512
A matriz de autovalores pode ser escrita como:
A - λ I =
−
−
−
λ
λ
λ
247
311
512
cujo determinante resulta no polinômio característico:
16405)( 23
+−−= xxxxp
sendo que as suas raízes, λ1 = 9,1712; λ2 = -4,5543 e λ3 = 0,3831, são os autovalores da
matriz A.
No Matlab:
EIG Eigenvalues and eigenvectors.
E = EIG(X) is a vector containing the eigenvalues of a square
matrix X.
[V,D] = EIG(X) produces a diagonal matrix D of eigenvalues and a
full matrix V whose columns are the corresponding eigenvectors so
that X*V = V*D.
[V,D] = EIG(X,'nobalance') performs the computation with balancing
disabled, which sometimes gives more accurate results for certain
problems with unusual scaling. If X is symmetric,
EIG(X,'nobalance')
is ignored since X is already balanced.
E = EIG(A,B) is a vector containing the generalized eigenvalues
of square matrices A and B.
[V,D] = EIG(A,B) produces a diagonal matrix D of generalized
eigenvalues and a full matrix V whose columns are the
corresponding eigenvectors so that A*V = B*V*D.