Você está na página 1de 16

Sistemas de Equaes Lineares

4-1

Sistemas de Equaes Lineares


Definio
Um sistema de equaes lineares pode ser definido como um conjunto de n equaes
com n variveis independentes entre si, na forma genrica, como:
a11x1 + a12x2 + a13x3 + ... + a1nxn = b1
a21x1 + a22x2 + a23x3 + ... + a2nxn = b2
a31x1 + a32x2 + a33x3 + ... + a3nxn = b3

(1)

an1x1 + an2x2 + an3x3 + ... + annxn = bn


na qual aij (i, j = 1, 2, 3, ..., n) so os coeficientes do sistema de equaes, xi (i = 1, 2, 3, ..., n)
so as n incgnitas e bi (i = 1, 2, 3, ..., n) os termos independentes.

Formulao Matricial
As equaes representadas em (1) podem ser descritas na forma matricial como:
[A][x] = [b]

(2)

para o qual:

a n3

a1n
x1
b1

x
b
a 2n
2
2
, [x ] = x 3 , [b] = b 3
a 3n

x n
b n
a nn

(3)

a13
a 23
a 33

a11 a12
a
21 a 22
[A] = a 31 a 32

a n1 a n 2

Nesta representao, a soluo direta pode ser obtida fazendo-se:


[x] = [A]-1[b]

(4)

para a qual emprega-se os mtodos de inverso de matrizes utilizados em cursos de lgebra


Linear. O clculo da matriz inversa pode ser feito atravs da propriedade da matriz identidade:
[I] = [A]-1[A]

(5)

Se os coeficientes da matriz inversa [A]-1 so as incgnitas do problema, ento o


clculo desses coeficientes resume-se a encontrar a soluo do seguinte sistema de equaes:
Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

a n2

a 1n 1 0
a 2 n 0 1
=


a nn 0 0

a 12
a 22

0
0
= [I ]

x n2

x 1n a 11
x 2 n a 21

x nn a n1

x 12
x 22

x 11
x
1
[A ] [A ] = 21

x n1

4-2

(6)

Assim, o problema do clculo de sistemas de equaes lineares atravs do produto da


matriz inversa resulta num problema de clculo de sistemas de equaes lineares. seguir,
apresentaremos um mtodo direto para a soluo de sistemas de equaes lineares denominado
mtodo de eliminao gaussiana e outro mtodo, iterativo, chamado mtodo de Gauss-Seidel.
Alm desses mtodos, inmeros outros apropriados para cada tipo de sistema de equaes
lineares existem, mas que no trataremos neste texto.

Mtodo da Eliminao Gaussiana


Considere o sistema de equaes representado matricialmente por [A][x] = [b]. O
Mtodo da Eliminao de Gauss consiste basicamente em transformar a matriz de A num
sistema triangular equivalente, atravs da aplicao repetida de dois tipos de operaes:
1. Permutao entre duas linhas;
2. Subtrao de uma linha por outra multiplicada por uma constante.
Essas operaes produzem sistemas equivalentes aos originais; enquanto a operao 2
no altera o determinante da matriz de coeficientes, a operao 1 apenas inverte o seu sinal.
A anlise de propagao de erros de arredondamento indica a convenincia de todos os
multiplicadores serem menores do que 1 em valor absoluto. A esse procedimento d-se o nome
de pivoteamento.
Descrio do algoritmo com pivoteamento
Vamos considerar um sistema constitudo de quatro equaes e quatro incgnitas:
a11x1 + a12x2 + a13x3 + a14x4 = b1
a21x1 + a22x2 + a23x3 + a24x4 = b2
a31x1 + a32x2 + a33x3 + a34x4 = b3
a41x1 + a42x2 + a43x3 + a44x4 = b4
Seja [A] a matriz de coeficientes, [A]+ a matriz aumentada pelos termos independentes
e o sistema na forma matricial descrito por [A][x] = [b], no qual:

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

4-3

a11 a12
a
a
[A] = 21 22
a 31 a 32

a 41 a 42

a 13
a 23
a 33
a 43

a 14
x1
b1

x
b
a 24
, [x] = 2 , [b] = 2
x3
b3
a 34



a 44
x4

b4

a11 a 12
a
a
[A]+ = 21 22
a 31 a 32

a 41 a 42

a 13 a 14
a 23 a 24
a 33 a 34
a 43 a 44

b1
b2

b3

b4

(7)

Os seguintes passos descrevem o procedimento para a triangularizao da matriz [A]:


1o Passo:
Calcular p1 = mx{|a11|, |a21|, |a31|, |a41|}. Certamente p1 0, pois caso contrrio |A| = 0 e o
sistema no teria soluo nica. Caso p1 |a11|, permutar a 1a linha pela linha que contm p1.
2o Passo:
Definir um multiplicador para cada linha:
a
a
a
m 2 = 21 , m 3 = 31 , m 4 = 41
a11
a11
a11

(8)

3o Passo:
Subtrair o produto do multiplicador pela 1a linha da 2a, da 3a e da 4a linha:
2a Linha
a
a = a 21 m2 a 11 = a 21 21 a11 = 0
21
a11

(9)

a = a 22 m 2 a12
22
a = a 23 m2 a 13
23

(11)

a = a 24 m 2 a14
24

(12)

b = b 2 m 2 b1
2

(10)

(13)

3a Linha:
a
a = a 31 m3a11 = a 31 31 a 11 = 0
31
a 11

(14)

a = a 32 m 3a12
32
a = a 33 m3a 13
33

(16)

a = a 34 m 3a14
34

Clculo Numrico e Computacional

(15)

(17)

C.Y. Shigue

Sistemas de Equaes Lineares

4-4

b = b 3 m3 b1
3

(18)

4a Linha:
a
a = a 41 m4 a 11 = a 41 41 a11 = 0
41
a11

(19)

a = a 42 m 4 a12
42

(20)

a = a 43 m4 a 13
43

(21)

a = a 44 m 4 a14
44

(22)

b = b 4 m 4 b1
4

(23)

Aps estes passos, a matriz aumentada fica da seguinte foma:


a11 a12
0 a
22
[A]+ =
0 a
32

0 a
42

a 13 a 14
a
23 a
24
a
a
33
34
a
a
43
44

b1
b
2
b
3

b
4

Repetindo os passos de 1 a 3 para a coluna 2:


1o Passo:
Calcular p2 = mx { a , a , a } . Novamente p2 0, seno |A| = 0. Caso p2 |a21|, permutar
22
32
42
a 2a linha pela linha que contm p2.
2o Passo:
Definir um multiplicador para cada linha:
a
a
m = 32 , m = 42
3
4
a
a
22
22

(24)

3o Passo:
Subtrair o produto do multiplicador pela 2a linha da 3a e da 4a linha:
3a Linha:
a
a = a m a = a 32 a = 0
32
32
3 22
32
22
a
22

(25)

a = a m a
33
33
3 23
a = a m a
34
34
3 24

(27)

b = b m b
3
3
3 2

Clculo Numrico e Computacional

(26)

(28)

C.Y. Shigue

Sistemas de Equaes Lineares

4a Linha:

4-5

a
a = a m a = a 42 a = 0
42
42
4 22
42
22
a
22

(29)

a = a m a
43
43
4 23

(30)

a = a m a 24
44
44
4

(31)

b = b m b
4
4
4 2

(32)

A matriz aumentada agora tem a forma:


a11 a12

+ = 0 a 22
[A]
0
0

0
0

a 13 a 14

a 23 a 24
a a
33
34
a a
43
44

b1

b2
b
3

b
4

(33)

Repetindo os passos 1 a 3 para as duas ltimas linhas:


1o Passo:
Calcular p3 = mx { a , a } . Novamente p3 0, seno |A| = 0. Caso p3 |a31|, permutar a 3a
33
43
linha pela 4a linha.
2o Passo:
Definir um multiplicador para a 4a linha:
a
m = 43
4
a
33

(34)

3o Passo:
Subtrair o produto do multiplicador pela 3a linha da 4a linha:
4a Linha:

a
a = a m a = a 43 a = 0
43
43
4 33
43
33
a
33

(35)

a = a m a 34
44
44
4

(36)

b = b m b
4
4
4 3

(37)

A matriz aumentada toma a forma final:


a11 a12
0 a
22
[A]+ =
0
0

0
0

Clculo Numrico e Computacional

a 13 a 14
a
23 a
24
a a
33
34
0 a
44

b1
b
2
b
3

b
4

(38)

C.Y. Shigue

Sistemas de Equaes Lineares

4-6

Re-escrevendo a matriz [A]+ triangularizada sem as linhas nos expoentes dos


coeficientes aij e bj de modo a tornar mais clara as equaes:
a11 a12
0 a
22
[A]+ =
0
0

0
0

a 13 a 14
a 23 a 24
a 33 a 34
0 a 44

b1
b2

b3

b4

(39)

observando que os coeficientes aij e bj da matriz triangularizada acima no so os mesmos


coeficientes da matriz [A]+ original.
Resolvemos o sistema por recorrncia atravs da frmula:
4

bi
a ij x j

j= i +1
xi =
, i = 4,3,2,1
a ii

(40)

O determinante da matriz de coeficientes [A] calculado a partir do produto dos


coeficientes aii da diagonal principal:
4

|A| = a ii = a11a 22 a 33a 44

(41)

i =1

Exemplo:
Seja o sistema de trs equaes e trs incgnitas:
2x1 + 3x2
-x1 +

x3 = 0

x2 + 4x3 = 3

x1 8x2 -

x3 = 1

cuja matriz aumentada [A]+ descrita como:


3 1 0
2
1 1
[A]+ =
4 3

1 8 1 1

Utilizando o programa de clculo de eliminao gaussiana em preciso simples (com


arredondamento de sete casas decimais), cuja listagem aparece adiante neste texto, obtm-se a
matriz triangularizada:

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

4-7

3
1
2
0
[A] =
9 ,5
0,5

0 0,0000001 3,3684211

cujo determinante vale |A| = -64,0000009. A soluo do sistema calculada pelo mesmo
programa resulta:
0 ,718750
[x] = 0,156250

0,968750

Observar que a soluo do problema exata, exceto pelo valor do determinante da


matriz [A], cuja soluo exatamente 64. O algarismo 9 na stima casa decimal resultado do
erro de arredondamento pelo clculo das variveis reais com preciso simples. Neste problema
simples o erro de arredondamento no afetou o vetor soluo [x] do sistema, porm em
problemas que envolvam um nmero maior de equaes ou em problemas cujos coeficientes
da matriz [A] j possuam erro de arredondamento na sua formulao, acarretam em severo
erro de arredondamento, inviabilizando a utilizao do mtodo de clculo direto de eliminao
gaussiana. Nestes tipos de problema, um mtodo iterativo, como o mtodo de Gauss-Seidel
apresentado a seguir, mais aconselhvel.

Listagens dos programas de eliminao gaussiana com pivoteamento


FORTRAN

10

510
500

530

PROGRAM ELIMINA
PARAMETER (NMAX = 50)
REAL
A(NMAX,NMAX+1), X(NMAX+1)
WRITE(*,10)
FORMAT(1X,'NUMERO DE EQUACOES : ')
READ(*,*) NN
DO 500 I = 1, NN
DO 510 J = 1, NN+1
WRITE(*,50) I, J
READ(*,*) A(I,J)
CONTINUE
CONTINUE
LAST = NN - 1
DO 520 I = 1, LAST
BIG = 0.0
DO 530 K = I, NN
TERM = ABS(A(K,I))
IF ((TERM - BIG) .GT. 0.0) THEN
BIG = TERM
L = K
END IF
CONTINUE
IF (BIG. EQ. 0.0) THEN
WRITE(*,*) 'MATRIZ SINGULAR'
STOP
END IF
IF (I .NE. L) THEN
DO 540 J = 1, NN+1

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

4-8

TEMP = A(I,J)
A(I,J) = A(L,J)
A(L,J) = TEMP
CONTINUE
END IF
PIVOT = A(I,I)
NEXTR = I + 1
DO 550 J = NEXTR, NN
CONST = A(J,I) / PIVOT
DO 560 K = I, NN+1
A(J,K) = A(J,K) - CONST*A(I,K)
CONTINUE
CONTINUE
CONTINUE
DO 570 I = 1, NN
IREV = NN + 1 - I
Y = A(IREV,NN+1)
IF (IREV .NE. NN) THEN
DO 580 J = 2, I
K = NN + 2 - J
Y = Y - A(IREV,K)*X(K)
CONTINUE
END IF
X(IREV) = Y / A(IREV,IREV)
CONTINUE
WRITE(*,60)
WRITE(*,65)
DO 590 I = 1, NN
DO 600 J = 1, NN+1
WRITE(*,70) I, J, A(I,J)
CONTINUE
CONTINUE
DET = 1.0
DO 610 I = 1, NN
DET = DET * A(I,I)
CONTINUE
WRITE(*,80) DET
DO 620 I = 1, NN
WRITE(*,100) I, X(I)
CONTINUE
FORMAT(1X, 'A(',I2,',',I2,'): ')
FORMAT(/10X,'SOLUCAO'/)
FORMAT(/5X,'COEFICIENTES DA MATRIZ TRIANGULARIZADA'/)
FORMAT(5X, 'A(',I2,',',I2,') = ',F12.7)
FORMAT(1X/, 5X, 'DETERMINANTE DO SISTEMA = ', F12.7/)
FORMAT(5X, 'X(',I2,') = ', F12.7)
END

540

560
550
520

580
570

600
590

610

620
50
60
65
70
80
100

Linguagem C
/*

Programa elimina.c

*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NMAX 50
int
int
float
float

i, j, k, l;
neq, nmais, last, rev;
a[NMAX][NMAX+1], x[NMAX+1];
coef, big, term, temp, pivot, nextr, cnt, y;

void main()
{
printf("Numero de equacoes: ");
scanf("%d", &neq);
for(i = 1; i <= neq; i++) {

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

4-9

nmais = neq +1;


for (j = 1; j <= nmais; j++) {
printf("A( %d , %d ) = ", i, j);
scanf("%f", &coef);
a[i][j] = coef;
}
}
last = neq - 1;
for (i = 1; i <= last; i++) {
big = 0.f;
for (k = i; k <= neq; k++) {
term = fabs(a[k][i]);
if ((term - big) > 0.f) {
big = term;
l = k;
}
}
if (big == 0.f) {
printf("Matriz singular\n");
exit(0);
}
if (i != l) {
for (j = 1; j <= nmais; j++) {
temp = a[i][j];
a[i][j] = a[l][j];
a[l][j] = temp;
}
}
pivot = a[i][i];
nextr = i + 1;
for (j = nextr; j <= neq; j++) {
cnt = a[j][i] / pivot;
for (k = i; k <= nmais; k++) {
a[j][k] = a[j][k] - cnt*a[i][k];
}
}
}
for (i = 1; i <= neq; i++) {
rev = neq + 1 - i;
y = a[rev][nmais];
if (rev != neq) {
for (j = 2; j <= i; j++) {
k = neq + 2 - j;
y -= a[rev][k]*x[k];
}
}
x[rev] = y / a[rev][rev];
}
printf("\nMatriz triangularizada\n");
for (i = 1; i <= neq; i++) {
for (j = 1; j <= nmais; j++) {
printf("A( %d , %d ) = %f\n", i, j, a[i][j]);
}
}
printf("\nSolucao\n");
for (i = 1; i <= neq; i++) {
printf("X( %d ) = %f\n", i, x[i]);
}
}

Mtodo Iterativo de Gauss-Seidel


Em sistemas com muitas equaes simultneas e, particularmente, em sistemas malcondicionados, a propagao do erro de arredondamento pode destruir a exatido da soluo.

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

410

Nestes casos podemos utilizar um mtodo iterativo que, em geral, no seja muito sensvel
propagao de erros de arredondamento, desde que a soluo seja convergente. Entre os
mtodos iterativos de resoluo de sistemas de equaes, vamos abordar o mtodo iterativo de
Gauss-Seidel, que um dos mtodos iterativos mais comuns e simples para ser programado em
computador. Como em todos os mtodos iterativos, o erro de arredondamento pequeno, mas
o mtodo converge para a soluo somente sob certas condies e normalmente conduz a um
nmero significativamente maior de operaes aritmticas em comparao aos mtodos de
resoluo direta.
Seja o sistema de equaes:
a11x1 + a12x2 + a13x3 + ... + a1nxn = b1
a21x1 + a22x2 + a23x3 + ... + a2nxn = b2
a31x1 + a32x2 + a33x3 + ... + a3nxn = b3

an1x1 + an2x2 + an3x3 + ... + annxn = bn


onde os termos da diagonal a11, a22, ..., ann so todos supostos no nulos; se necessrio, as
equaes devem ser reordenadas para que todos estes termos sejam no nulos.
Encontramos o valor de x1 a partir da primeira equao, x2 a partir da segunda e assim
sucessivamente, para obtermos:
x1 = (b1 - a12x2 - a13x3 - ... - a1nxn)/a11

(42)

x2 = (b2 - a21x1 - a23x3 - ... - a2nxn)/a22


x3 = (b3 - a31x1 - a32x2 - ... - a3nxn)/a33

(43)
(44)

xn = (bn - an1x1 - an2x2 - ... - an,n-1xn-1)/ann

(45)
(k)

A iterao iniciada tomando-se um conjunto inicial de estimativas para todos os xi ,


onde k o nmero da iterao. Tomamos o valor inicial de x2, x3, ..., xn para calcular o valor
de x1 na primeira equao acima. Com o valor de x1 calculado mais os valores iniciais de x3, x4,
..., xn calcula-se o novo valor de x2 na segunda equao e assim sucessivamente at a n-sima
equao, quando ento obtemos o valor de xn (e, anteriormente, os valores de x1, x2, ..., xn-1)
para a primeira iterao. Voltamos, ento, para a primeira equao e calculamos novamente x1
e sucessivamente todos os xi na segunda iterao. Este procedimento prossegue at que haja
convergncia, isto , at que todos os valores de xi simultaneamente parem de variar. Deste
modo, este mtodo exigir provavelmente muitas iteraes antes de obtermos uma exatido
razovel. Alm disto, na maioria das vezes pode no ocorrer convergncia e os resultados se
afastarem de um valor constante e finito.
O problema da convergncia deste mtodo no simples e o principal empecilho ao
seu uso. Podemos empregar alguns critrios para se verificar quando necessrio parar a
iterao:

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

1.
2.

411

O nmero de iteraes excedeu um valor mximo m pr-determinado;


As diferenas entre dois valores sucessivos de todos os xi so menores do que um valor
pr-determinado :
(k)

x1 - x1

(k-1)

(k)

< , x2 - x2

(k-1)

(k)

(k-1)

< , ... xn - xn

<

(46)

Exemplo:
Seja o sistema de duas equaes:
2x + 3y = 4

(e1)

-x +

(e2)

y = 1

Podemos escrever as seguintes equaes para o clculo iterativo de x e y:


x = (4 - 3y)/2

(e3)

y = (1 + x)

(e4)

tomando-se os valores iniciais x = 0 e y = 0, calculamos os seguintes valores:


x(1) = [4 - 3y(0)]/2 = [4 - (3)(0)]/2 = 2
y(1) = [1 + x(1)] = (1 + 2) = 3
x(1) = x(1) - x(0) = 2 - 0 = 2
y(1) = y(1) - y(0) = 3 - 0 = 3
x(2) = [4 - 3y(1)]/2 = [4 - (3)(3)]/2 = -2,5
y(2) = [1 + x(2)] = (1 - 2,5) = -1,5
x(2) = x(2) - x(1) = -2,5 - 2 = 4,5
y(2) = y(2) - y(1) = -1,5 - 3 = 4,5
x(3) = [4 - 3y(2)]/2 = [4 - (3)(-1,5)]/2 = 4,25
y(3) = [1 + x(3)] = (1 + 4,25) = 5,25
x(3) = x(3) - x(2) = 4,25 - (-2,5) = 6,75
y(3) = y(3) - y(2) = 5,25 - (-1,5) = 6,75

Montamos a tabela contendo alguns dos valores calculados:

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

412

Iterao

0
1
2
3
4
5

0
2
-2,5
4,25
-5,875
9,3125

2
4,5
6,75
10,125
15,1875

y
0
3
-1,5
5,25
-4,875
10,3125

y
3
4,5
6,75
10,125
15,1875

Observamos, dos dados da tabela, que o mtodo iterativo de Gauss-Seidel aplicado ao


sistema de duas equaes diverge, pois os valores de erro x e y aumentam a cada iterao.
Vamos agora inverter as duas equaes para obter as equaes do clculo iterativo,
isto , a equao para o clculo de x ser a (2), enquanto a equao para y ser a (1):
x = (y - 1)

(e5)

y = (4 - 2x)/3

(e6)

Montamos a tabela contendo alguns dos valores calculados:


Iterao
0
1
2
3
4
5
6
7

0
-1
1
-0,33333
0,55556
-0,03704
0,35803
0,09465

0
2
0,66667
1,55556
0,96296
1,35803
1,09465
1,27023

1
2
1,33333
0,88889
0,59260
0,39507
0,26338

2
1,33333
0,88889
0,59260
0,39507
0,26338
0,17558
-5

A convergncia obtida aps 41 iteraes: x = 0,2 e y = 1,2 com erro de 10 .


O problema da convergncia para este exemplo pode ser ilustrado na Fig. 1, onde so
mostrados os grficos para as equaes (e1) e (e2). As linhas tracejadas e pontilhadas indicam,
respectivamente, as iteraes divergentes, dada pelas equaes (e3) e (e4), e as iteraes
convergentes dada pelas equaes (e5) e (e6).

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

413

(1)
3

(2)
-1

-2

-3

-2

-1

Fig.1 Representao grfica do Mtodo de Gauss-Seidel.

Como visto no exemplo, a convergncia das iteraes depende da ordem como as


equaes esto escritas. Genericamente, para um sistema com n = 2, podemos escrever:
a11x1 + a12x2 = b1

(47)

a21x1 + a22x2 = b2

(48)

de onde vem que,


x1
x2

(k)
(k)

= [b1 - a12x2

(k-1)

]/a11

(49)

(k)

= [b2 - a21x1 ]/a22

(50)

Se definirmos:
x1

(k)

x2

(k)

= x1 - x1
= x2 - x2

(k)

(51)

(k)

(52)

Ento, a partir de (49) e (51) vem que:


x1

(k)

= - a12/a11.x2

(k-1)

(53)

e, de (50) e (52):
Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

414

x2

(k)

x1

(k)

x1

(k)

= [a12a21/(a11a22)] x1

x1

(k)

= [a12a21/(a11a22)] x1

x2

(k)

= [a12a21/(a11a22)] x2

= - a21/a22.x1

(k)

(54)

Combinando estas duas equaes, resulta:


= a12a21/(a11a22).x1

(k-1)

(55)

Igualmente, pode-se escrever que


2

(k-2)

(56)

(0)

(57)

(0)

(58)

Prosseguindo desta maneira, resulta:

Analogamente, para a outra varivel,

Assim, se
a12a21/a11a22 < 1

(59)

o mtodo iterativo de Gauss-Seidel converge para uma soluo de (47) e (48).


Pode-se satisfazer (59), se
a11 > a12

(60)

a22 a21

(61)

a11 a12

(62)

a22 > a21

(63)

ou se
e

Isto significa que os termos da diagonal a11 e a22 devem ser dominantes, isto , eles devem ser
pelo menos to grandes quanto os termos fora da diagonal e realmente maiores em pelo menos
um caso.
Para um sistema de n equaes podemos mencionar um teorema simples que fornece
condies suficientes, mas no necessrias, para que haja convergncia:
Teorema da convergncia do mtodo iterativo de Gauss-Seidel: A iterao do mtodo de
Gauss-Seidel convergir se, no determinante caracterstico, cada termo da diagonal

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

415

principal for maior (em valor absoluto) do que a soma dos valores absolutos de todos os
outros termos na mesma linha ou coluna. Isto , teremos garantido a convergncia se,
n

a ii

>

a ij

i = 1, 2, ... , n

(64)

a ji

i = 1, 2, ... , n

(65)

j= 1
j i

e
n

a ii

>

j= 1
j i

O teorema no muito til a no ser que, de alguma maneira, possamos reordenar as


equaes a fim de satisfazerem o teorema to bem quanto possvel e, geralmente, isto no
tarefa simples. Pode ser necessrio rearranjar de vrias formas um sistema de equaes at
encontrarmos, atravs do clculo iterativo, um arranjo que se aproxime das condies do
teorema.

Exemplo:
Seja o seguinte sistema de equaes:
-x1 + 3x2 + 5x3 + 2x4
x1 + 9x2 + 8x3 + 4x4
x2
+ x4
2x1 + x2 + x3 - x4

10

15

-3

Se re-ordenarmos as equaes de modo a satisfazer da melhor forma o teorema da


convergncia, obteremos o seguinte sistema de equaes:
2x1 + x2 + x3
x1 + 9x2 + 8x3
-x1 + 3x2 + 5x3
x2

x4
+ 4x4

-3

15

+ 2x4
+ x4

10

de onde vem as equaes para o clculo iterativo de xi (i = 1, 2, 3 e 4):


x1
x2

x3
x4

(-3 - x2 - x3 + x4)/2
(15 - x1 - 8x3 - 4x4)/9
(10 + x1 - 3x2 - 2x4)/5
( 2 - x2)
.

cuja soluo, obtida aps 78 iteraes com clculo em preciso simples :

Clculo Numrico e Computacional

C.Y. Shigue

Sistemas de Equaes Lineares

416

x1 = -1; x2 = 0; x3 = 1 e x4 = 2

Observamos para este exemplo que o mtodo iterativo de Gauss-Seidel apresenta uma
preciso superior ao mtodo de eliminao gaussiana. Entretanto, o nmero de iteraes
relativamente alto (78 neste caso) e este nmero cresce substancialmente com o aumento do
nmero de equaes. Esta limitao atualmente no restringe a aplicao do mtodo iterativo
de Gauss-Seidel, devido elevada capacidade de processamento dos microcomputadores
atuais. Usualmente, o mtodo de eliminao gaussiana usado numa etapa preliminar para
obter os valores iniciais do mtodo de Gauss-Seidel que, ento, faz o refinamento da soluo.

Listagens dos programas do mtodo iterativo de Gauss-Seidel


Os seguintes programas em FORTRAN e C realizam 80 iteraes, definida pela
varivel MAX, bastando alter-la para aumentar (ou diminuir) o nmero de iteraes.
FORTRAN
C
C

10
100

PROGRAMA PARA O CALCULO ITERATIVO DE UM SISTEMA DE EQUACOES


METODO DE GAUSS-SEIDEL
PROGRAM GSEIDEL
MAX = 80
X1 = 0.0
X2 = 0.0
X3 = 0.0
X4 = 0.0
DO 10 I = 1, MAX
X1 = (-3.0 - X2 - X3 + X4)/2.0
X2 = (15.0 - X1 - 8.0*X3 - 4.0*X4)/9.0
X3 = (10.0 + X1 - 3.0*X2 - 2.0*X4)/5.0
X4 = (2.0 - X2)
CONTINUE
WRITE(*,100) X1,X2,X3,X4
FORMAT(4F10.6)
END

Linguagem C
/*
Programa gseidel.c
*/
#include <stdio.h>
#define MAX 80
void main()
{
int i;
float x1, x2, x3, x4;
x1 = 0.0;
x2 = 0.0;
x3 = 0.0;
x4 = 0.0;
for (i = 1; i <= MAX; i++) {
x1 = (-3.0 - x2 - x3 + x4) / 2.0;
x2 = (15.0 - x1 - x3 * 8.0 - x4 * 4.0) / 9.0;
x3 = (x1 + 10.0 - x2 * 3.0 - x4 * 2.0) / 5.0;
x4 = 2.0 - x2;
printf("x1 = %10.6f x2 = %10.6f x3 = %10.6f X4 = %10.6f\n",x1,x2,x3,x4);
}
}

Clculo Numrico e Computacional

C.Y. Shigue

Você também pode gostar