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:

a11 a12 a13 


a1n x1 b1
a b
21 a 22 a 23 a 2n
x 2


2
[A] = a 31 a 32 a 33 

a 3n , [x ] = x 3 , [b] = b 3 (3)
     



a n1 a n 2 a n3 
a nn
x n b n

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 4-2

x 11 x 12 x 1n a 11 a 12 a 1n 1 0 0
x x 22 x 2 n a 21 a 22 a 2 n 0 1 0
[A ] [A ] = 21
1
       =     = [I ] (6)


x n1 x n2 x nn a n1 a n2 a nn 0 0 1

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 13 a 14 x1 b1
a a a 23
a 24 x b
[A] = 21 22 , [x] = 2 , [b] = 2
a 31 a 32 a 33 a 34 x3 b3

a 41 a 42 a 43 a 44 4
x b4

a11 a 12 a 13 a 14 b1
a a a 23 a 24 b 2
[A]+ = 21 22 (7)
a 31 a 32 a 33 a 34 b3

a 41 a 42 a 43 a 44 b4

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 (8)
a11 a11 a11

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

= a 22 m 2 a12
a 22 (10)

a 23 = a 23 m2 a 13 (11)

a 24 = a 24 m 2 a14 (12)

b 2 = b 2 m 2 b1 (13)
3a Linha:
a
= a 31 m3a11 = a 31 31 a 11 = 0
a 31 (14)
a 11

a 32 = a 32 m 3a12 (15)

a 33 = a 33 m3a 13 (16)

= a 34 m 3a14
a 34 (17)

Clculo Numrico e Computacional C.Y. Shigue


Sistemas de Equaes Lineares 4-4

b 3 = b 3 m3 b1 (18)

4a Linha:
a
= a 41 m4 a 11 = a 41 41 a11 = 0
a 41 (19)
a11

a 42 = a 42 m 4 a12 (20)

a 43 = a 43 m4 a 13 (21)

= a 44 m 4 a14
a 44 (22)

b 4 = b 4 m 4 b1 (23)

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

a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
0 a 32 a 33 a 34 b 3

0 a 42 a 43 a 44 b 4

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

1o Passo:
Calcular p2 = mx { a 22
, a 32 } . Novamente p2 0, seno |A| = 0. Caso p2 |a21|, permutar
, a 42

a 2a linha pela linha que contm p2.

2o Passo:
Definir um multiplicador para cada linha:

a a
m 3 = 32 , m4 = 42 (24)
a 22 a 22

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

= a 33
a 33 m3 a 23
(26)

a 34 = a 34 m 3a 24 (27)

b 3 = b 3 m 3 b 2 (28)

Clculo Numrico e Computacional C.Y. Shigue


Sistemas de Equaes Lineares 4-5

4a Linha:
a
a 42 = a 42 m4 a 22 = a 42 42 a 22 = 0 (29)
a 22

= a 43
a 43 m4 a 23
(30)

a 44 = a 44 m 4 a 24
(31)

b 4 = b 4 m 4 b 2 (32)

A matriz aumentada agora tem a forma:

a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A] =
+ 22
(33)
0 0 a 33 a 34 b 3

0 0 a 43 a 44 b 4

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

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

2o Passo:
Definir um multiplicador para a 4a linha:

a
m 4 = 43 (34)
a 33

3o Passo:
Subtrair o produto do multiplicador pela 3a linha da 4a linha:
4a Linha:
a
= a 43
a 43 = a 43 43 a 33 = 0
m4 a 33 (35)
a 33

= a 44
a 44 m 4 a 34
(36)

4 = b
b 4 m 4 b 3 (37)

A matriz aumentada toma a forma final:

a11 a12 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
(38)
0 0 a 33 a 34 b 3

0 0 0 a 44 b
4

Clculo Numrico e Computacional 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 a 13 a 14 b1
0 a a 23 a 24 b 2
[A]+ = 22
(39)
0 0 a 33 a 34 b3

0 0 0 a 44 b4

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

b
i a x

ij j
j= i +1
xi = , i = 4,3,2,1 (40)
a ii

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 x3 = 0
-x1 + x2 + 4x3 = 3
x1 8x2 - x3 = 1

cuja matriz aumentada [A]+ descrita como:

2 3 1 0

[A]+ = 1 1 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

2 3 1

[A] = 0 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
PROGRAM ELIMINA
PARAMETER (NMAX = 50)
REAL A(NMAX,NMAX+1), X(NMAX+1)
WRITE(*,10)
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)
510 CONTINUE
500 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
530 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
540 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)
560 CONTINUE
550 CONTINUE
520 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)
580 CONTINUE
END IF
X(IREV) = Y / A(IREV,IREV)
570 CONTINUE
WRITE(*,60)
WRITE(*,65)
DO 590 I = 1, NN
DO 600 J = 1, NN+1
WRITE(*,70) I, J, A(I,J)
600 CONTINUE
590 CONTINUE
DET = 1.0
DO 610 I = 1, NN
DET = DET * A(I,I)
610 CONTINUE
WRITE(*,80) DET
DO 620 I = 1, NN
WRITE(*,100) I, X(I)
620 CONTINUE
50 FORMAT(1X, 'A(',I2,',',I2,'): ')
60 FORMAT(/10X,'SOLUCAO'/)
65 FORMAT(/5X,'COEFICIENTES DA MATRIZ TRIANGULARIZADA'/)
70 FORMAT(5X, 'A(',I2,',',I2,') = ',F12.7)
80 FORMAT(1X/, 5X, 'DETERMINANTE DO SISTEMA = ', F12.7/)
100 FORMAT(5X, 'X(',I2,') = ', F12.7)
END

Linguagem C
/* Programa elimina.c */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define NMAX 50

int i, j, k, l;
int neq, nmais, last, rev;
float a[NMAX][NMAX+1], x[NMAX+1];
float 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 mal-
condicionados, a propagao do erro de arredondamento pode destruir a exatido da soluo.

Clculo Numrico e Computacional C.Y. Shigue


Sistemas de Equaes Lineares 4-
10

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 (43)
x3 = (b3 - a31x1 - a32x2 - ... - a3nxn)/a33 (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 4-
11

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


2. As diferenas entre dois valores sucessivos de todos os xi so menores do que um valor
pr-determinado :
(k) (k-1) (k) (k-1) (k) (k-1)
x1 - x1 < , x2 - x2 < , ... xn - xn < (46)

Exemplo:
Seja o sistema de duas equaes:

2x + 3y = 4 (e1)
-x + y = 1 (e2)

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 4-
12

Iterao x x y y
0 0 0
1 2 2 3 3
2 -2,5 4,5 -1,5 4,5
3 4,25 6,75 5,25 6,75
4 -5,875 10,125 -4,875 10,125
5 9,3125 15,1875 10,3125 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 x y x y

0 0 0
1 -1 2 1 2
2 1 0,66667 2 1,33333
3 -0,33333 1,55556 1,33333 0,88889
4 0,55556 0,96296 0,88889 0,59260
5 -0,03704 1,35803 0,59260 0,39507
6 0,35803 1,09465 0,39507 0,26338
7 0,09465 1,27023 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 4-
13

4
(1)

1
y

(2)
-1

-2
-3 -2 -1 0 1 2 3

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,

(k) (k-1)
x1 = [b1 - a12x2 ]/a11 (49)
(k) (k)
x2 = [b2 - a21x1 ]/a22 (50)

Se definirmos:

(k) (k)
x1 = x1 - x1 (51)
(k) (k)
x2 = x2 - x2 (52)

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


(k) (k-1)
x1 = - a12/a11.x2 (53)

e, de (50) e (52):

Clculo Numrico e Computacional C.Y. Shigue


Sistemas de Equaes Lineares 4-
14

(k) (k)
x2 = - a21/a22.x1 (54)

Combinando estas duas equaes, resulta:


(k) (k-1)
x1 = a12a21/(a11a22).x1 (55)

Igualmente, pode-se escrever que


(k) 2 (k-2)
x1 = [a12a21/(a11a22)] x1 (56)

Prosseguindo desta maneira, resulta:


(k) k (0)
x1 = [a12a21/(a11a22)] x1 (57)

Analogamente, para a outra varivel,


(k) k (0)
x2 = [a12a21/(a11a22)] x2 (58)

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)


e
a22 a21 (61)

ou se
a11 a12 (62)
e
a22 > a21 (63)

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 4-
15

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)
j= 1
j i
e
n
a ii > a ji i = 1, 2, ... , n (65)
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 = 10


x1 + 9x2 + 8x3 + 4x4 = 15
x2 + x4 = 2
2x1 + x2 + x3 - x4 = -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 - x4 = -3
x1 + 9x2 + 8x3 + 4x4 = 15
-x1 + 3x2 + 5x3 + 2x4 = 10
x2 + x4 = 2

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

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

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

Clculo Numrico e Computacional C.Y. Shigue


Sistemas de Equaes Lineares 4-
16

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 PROGRAMA PARA O CALCULO ITERATIVO DE UM SISTEMA DE EQUACOES
C 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)
10 CONTINUE
WRITE(*,100) X1,X2,X3,X4
100 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